@combos-fun/plugin-renderer-mask 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @combos-fun/plugin-renderer-mask
2
+
3
+ Internal workspace package (Combos Fun monorepo).
@@ -0,0 +1,243 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var engine = require('@combos-fun/engine');
5
+ var inspectorDecorator = require('@combos-fun/inspector-decorator');
6
+ var pluginRenderer = require('@combos-fun/plugin-renderer');
7
+ var rendererAdapter = require('@combos-fun/renderer-adapter');
8
+
9
+ exports.MASK_TYPE = void 0;
10
+ (function (MASK_TYPE) {
11
+ MASK_TYPE["Circle"] = "Circle";
12
+ MASK_TYPE["Ellipse"] = "Ellipse";
13
+ MASK_TYPE["Rect"] = "Rect";
14
+ MASK_TYPE["RoundedRect"] = "RoundedRect";
15
+ MASK_TYPE["Polygon"] = "Polygon";
16
+ MASK_TYPE["Img"] = "Img";
17
+ MASK_TYPE["Sprite"] = "Sprite";
18
+ })(exports.MASK_TYPE || (exports.MASK_TYPE = {}));
19
+ let Mask$1 = class Mask extends engine.Component {
20
+ constructor() {
21
+ super(...arguments);
22
+ // @decorators.IDEProp 复杂编辑后续添加
23
+ this.style = {};
24
+ this.resource = '';
25
+ this.spriteName = '';
26
+ }
27
+ static { this.componentName = 'Mask'; }
28
+ init(obj) {
29
+ Object.assign(this, obj);
30
+ }
31
+ };
32
+ tslib.__decorate([
33
+ inspectorDecorator.type('string')
34
+ ], Mask$1.prototype, "resource", void 0);
35
+ tslib.__decorate([
36
+ inspectorDecorator.type('string')
37
+ ], Mask$1.prototype, "spriteName", void 0);
38
+
39
+ const resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.
40
+ const propertyForGraphics = {
41
+ Circle: ['x', 'y', 'radius'],
42
+ Ellipse: ['x', 'y', 'width', 'height'],
43
+ Rect: ['x', 'y', 'width', 'height'],
44
+ RoundedRect: ['x', 'y', 'width', 'height', 'radius'],
45
+ Polygon: ['paths'],
46
+ };
47
+ const functionForGraphics = {
48
+ Circle: 'drawCircle',
49
+ Ellipse: 'drawEllipse',
50
+ Rect: 'drawRect',
51
+ RoundedRect: 'drawRoundedRect',
52
+ Polygon: 'drawPolygon',
53
+ };
54
+ var MASK_TYPE;
55
+ (function (MASK_TYPE) {
56
+ MASK_TYPE["Circle"] = "Circle";
57
+ MASK_TYPE["Ellipse"] = "Ellipse";
58
+ MASK_TYPE["Rect"] = "Rect";
59
+ MASK_TYPE["RoundedRect"] = "RoundedRect";
60
+ MASK_TYPE["Polygon"] = "Polygon";
61
+ MASK_TYPE["Img"] = "Img";
62
+ MASK_TYPE["Sprite"] = "Sprite";
63
+ })(MASK_TYPE || (MASK_TYPE = {}));
64
+ let Mask = class Mask extends pluginRenderer.Renderer {
65
+ constructor() {
66
+ super(...arguments);
67
+ this.name = 'Mask';
68
+ this.changedCache = {};
69
+ this.maskSpriteCache = {};
70
+ }
71
+ static { this.systemName = 'Mask'; }
72
+ init() {
73
+ this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
74
+ this.renderSystem.rendererManager.register(this);
75
+ }
76
+ rendererUpdate() {
77
+ this.changedCache = {};
78
+ }
79
+ componentChanged(changed) {
80
+ if (changed.component.name !== 'Mask')
81
+ return;
82
+ switch (changed.type) {
83
+ case engine.OBSERVER_TYPE.ADD:
84
+ this.add(changed);
85
+ break;
86
+ case engine.OBSERVER_TYPE.REMOVE:
87
+ this.remove(changed);
88
+ break;
89
+ case engine.OBSERVER_TYPE.CHANGE:
90
+ this.change(changed);
91
+ break;
92
+ }
93
+ }
94
+ add(changed) {
95
+ const component = changed.component;
96
+ if (!(component.type in MASK_TYPE)) {
97
+ throw new Error('no have Mask type: ' + component.type);
98
+ }
99
+ if (!component.style) {
100
+ throw new Error('no have Mask style: ' + component.type);
101
+ }
102
+ let mask;
103
+ switch (component.type) {
104
+ case MASK_TYPE.Circle:
105
+ mask = this.createGraphics(component);
106
+ break;
107
+ case MASK_TYPE.Ellipse:
108
+ mask = this.createGraphics(component);
109
+ break;
110
+ case MASK_TYPE.Rect:
111
+ mask = this.createGraphics(component);
112
+ break;
113
+ case MASK_TYPE.RoundedRect:
114
+ mask = this.createGraphics(component);
115
+ break;
116
+ case MASK_TYPE.Polygon:
117
+ mask = this.createGraphics(component);
118
+ break;
119
+ case MASK_TYPE.Img:
120
+ mask = this.createSprite(component);
121
+ break;
122
+ case MASK_TYPE.Sprite:
123
+ mask = this.createSprite(component);
124
+ break;
125
+ }
126
+ if (!mask) {
127
+ throw new Error('no have mask instance, check your mask params: ' + component.type);
128
+ }
129
+ const container = this.containerManager.getContainer(changed.gameObject.id);
130
+ container.mask = mask;
131
+ }
132
+ remove(changed) {
133
+ const container = this.containerManager.getContainer(changed.gameObject.id);
134
+ const maskObj = container.mask;
135
+ container.mask = null;
136
+ maskObj?.destroy({ children: true });
137
+ delete this.maskSpriteCache[changed.gameObject.id];
138
+ }
139
+ change(changed) {
140
+ if (this.changedCache[changed.gameObject.id])
141
+ return;
142
+ const component = changed.component;
143
+ if (changed.prop.prop[0] === 'type') {
144
+ this.changedCache[changed.gameObject.id] = true;
145
+ if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1 ||
146
+ component._lastType !== component.type) {
147
+ this.remove(changed);
148
+ this.add(changed);
149
+ component._lastType = component.type;
150
+ }
151
+ else {
152
+ this.redrawGraphics(changed);
153
+ }
154
+ }
155
+ else if (changed.prop.prop[0] === 'style') {
156
+ if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {
157
+ this.changeSpriteStyle(component);
158
+ }
159
+ else {
160
+ this.redrawGraphics(changed);
161
+ }
162
+ }
163
+ else if (changed.prop.prop[0] === 'resource') {
164
+ this.changedCache[changed.gameObject.id] = true;
165
+ this.changeSprite(component);
166
+ }
167
+ else if (changed.prop.prop[0] === 'spriteName') {
168
+ this.changedCache[changed.gameObject.id] = true;
169
+ this.changeSprite(component);
170
+ }
171
+ }
172
+ createGraphics(component) {
173
+ const graphics = new rendererAdapter.Graphics();
174
+ this.draw(graphics, component);
175
+ return graphics;
176
+ }
177
+ redrawGraphics(changed) {
178
+ const container = this.containerManager.getContainer(changed.gameObject.id);
179
+ const graphics = container.mask;
180
+ graphics.clear();
181
+ this.draw(graphics, changed.component);
182
+ }
183
+ draw(graphics, component) {
184
+ const params = [];
185
+ for (const key of propertyForGraphics[component.type]) {
186
+ params.push(component.style[key]);
187
+ }
188
+ graphics.beginFill(0x000000, 1);
189
+ graphics[functionForGraphics[component.type]](...params);
190
+ graphics.endFill();
191
+ }
192
+ createSprite(component) {
193
+ const sprite = new rendererAdapter.Sprite(null);
194
+ this.maskSpriteCache[component.gameObject.id] = sprite;
195
+ this.setSprite(component, sprite);
196
+ return sprite.sprite;
197
+ }
198
+ changeSpriteStyle(component) {
199
+ const sprite = this.maskSpriteCache[component.gameObject.id];
200
+ sprite.sprite.width = component.style.width;
201
+ sprite.sprite.height = component.style.height;
202
+ sprite.sprite.position.x = component.style.x;
203
+ sprite.sprite.position.y = component.style.y;
204
+ }
205
+ changeSprite(component) {
206
+ const sprite = this.maskSpriteCache[component.gameObject.id];
207
+ this.setSprite(component, sprite);
208
+ }
209
+ async setSprite(component, sprite) {
210
+ let res;
211
+ try {
212
+ const asyncId = this.increaseAsyncId(component.gameObject.id);
213
+ res = await engine.resource.getResource(component.resource);
214
+ if (!this.validateAsyncId(component.gameObject.id, asyncId))
215
+ return;
216
+ }
217
+ catch (e) {
218
+ throw new Error('mask resource load error');
219
+ }
220
+ if (component.type === MASK_TYPE.Sprite) {
221
+ const img = component.resource + resourceKeySplit + component.spriteName;
222
+ const texture = res.instance[img];
223
+ sprite.image = texture;
224
+ }
225
+ else {
226
+ sprite.image = res.data.image;
227
+ }
228
+ sprite.sprite.width = component.style.width;
229
+ sprite.sprite.height = component.style.height;
230
+ sprite.sprite.position.x = component.style.x;
231
+ sprite.sprite.position.y = component.style.y;
232
+ }
233
+ };
234
+ Mask = tslib.__decorate([
235
+ engine.decorators.componentObserver({
236
+ Mask: ['type', { prop: ['style'], deep: true }, 'resource', 'spriteName'],
237
+ })
238
+ ], Mask);
239
+ var Mask_default = Mask;
240
+
241
+ exports.Mask = Mask$1;
242
+ exports.MaskSystem = Mask_default;
243
+ //# sourceMappingURL=plugin-renderer-mask.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-renderer-mask.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport {type } from '@combos-fun/inspector-decorator'\n\nexport enum MASK_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n Polygon = 'Polygon',\n Img = 'Img',\n Sprite = 'Sprite',\n}\n\nexport interface MaskParams {\n type: MASK_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n resource?: string;\n spriteName?: string;\n}\n\nexport default class Mask extends Component<MaskParams> {\n static componentName: string = 'Mask';\n _lastType: MaskParams['type'];\n // @decorators.IDEProp 复杂编辑后续添加\n type: MaskParams['type'];\n // @decorators.IDEProp 复杂编辑后续添加\n style?: MaskParams['style'] = {};\n @type('string') resource?: string = '';\n @type('string') spriteName?: string = '';\n\n init(obj?: MaskParams) {\n Object.assign(this, obj);\n }\n}\n","import { decorators, resource, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Renderer, RendererManager, ContainerManager, RendererSystem } from '@combos-fun/plugin-renderer';\nimport { Sprite as SpriteEngine, Graphics } from '@combos-fun/renderer-adapter';\nimport type { Container as PixiContainer } from 'pixi.js';\nimport MaskComponent from './component';\n\nconst resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.\n\nconst propertyForGraphics = {\n Circle: ['x', 'y', 'radius'],\n Ellipse: ['x', 'y', 'width', 'height'],\n Rect: ['x', 'y', 'width', 'height'],\n RoundedRect: ['x', 'y', 'width', 'height', 'radius'],\n Polygon: ['paths'],\n};\nconst functionForGraphics = {\n Circle: 'drawCircle',\n Ellipse: 'drawEllipse',\n Rect: 'drawRect',\n RoundedRect: 'drawRoundedRect',\n Polygon: 'drawPolygon',\n};\n\nenum MASK_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n Polygon = 'Polygon',\n Img = 'Img',\n Sprite = 'Sprite',\n}\n\n@decorators.componentObserver({\n Mask: ['type', { prop: ['style'], deep: true }, 'resource', 'spriteName'],\n})\nexport default class Mask extends Renderer {\n static systemName = 'Mask';\n name: string = 'Mask';\n changedCache: { [propName: number]: boolean } = {};\n maskSpriteCache: { [propName: number]: SpriteEngine } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n rendererUpdate() {\n this.changedCache = {};\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.component.name !== 'Mask') return;\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n this.add(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n this.remove(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n this.change(changed);\n break;\n }\n }\n add(changed: ComponentChanged) {\n const component = changed.component as MaskComponent;\n if (!(component.type in MASK_TYPE)) {\n throw new Error('no have Mask type: ' + component.type);\n }\n\n if (!component.style) {\n throw new Error('no have Mask style: ' + component.type);\n }\n\n let mask;\n switch (component.type) {\n case MASK_TYPE.Circle:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Ellipse:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Rect:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.RoundedRect:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Polygon:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Img:\n mask = this.createSprite(component);\n break;\n case MASK_TYPE.Sprite:\n mask = this.createSprite(component);\n break;\n }\n if (!mask) {\n throw new Error('no have mask instance, check your mask params: ' + component.type);\n }\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.mask = mask;\n }\n remove(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n const maskObj = container.mask as PixiContainer | null;\n container.mask = null;\n maskObj?.destroy({ children: true });\n delete this.maskSpriteCache[changed.gameObject.id];\n }\n change(changed: ComponentChanged) {\n if (this.changedCache[changed.gameObject.id]) return;\n const component = changed.component as MaskComponent;\n if (changed.prop.prop[0] === 'type') {\n this.changedCache[changed.gameObject.id] = true;\n if (\n [MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1 ||\n component._lastType !== component.type\n ) {\n this.remove(changed);\n this.add(changed);\n component._lastType = component.type\n } else {\n this.redrawGraphics(changed);\n }\n } else if (changed.prop.prop[0] === 'style') {\n if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {\n this.changeSpriteStyle(component);\n } else {\n this.redrawGraphics(changed);\n }\n } else if (changed.prop.prop[0] === 'resource') {\n this.changedCache[changed.gameObject.id] = true;\n this.changeSprite(component);\n } else if (changed.prop.prop[0] === 'spriteName') {\n this.changedCache[changed.gameObject.id] = true;\n this.changeSprite(component);\n }\n }\n createGraphics(component: MaskComponent) {\n const graphics = new Graphics();\n this.draw(graphics, component);\n return graphics;\n }\n redrawGraphics(changed) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n const graphics = container.mask as Graphics;\n graphics.clear();\n this.draw(graphics, changed.component);\n }\n draw(graphics, component) {\n const params = [];\n for (const key of propertyForGraphics[component.type]) {\n params.push(component.style[key]);\n }\n graphics.beginFill(0x000000, 1);\n graphics[functionForGraphics[component.type]](...params);\n\n graphics.endFill();\n }\n createSprite(component: MaskComponent) {\n const sprite = new SpriteEngine(null);\n this.maskSpriteCache[component.gameObject.id] = sprite;\n this.setSprite(component, sprite);\n return sprite.sprite;\n }\n changeSpriteStyle(component: MaskComponent) {\n const sprite = this.maskSpriteCache[component.gameObject.id] as SpriteEngine;\n sprite.sprite.width = component.style.width;\n sprite.sprite.height = component.style.height;\n sprite.sprite.position.x = component.style.x;\n sprite.sprite.position.y = component.style.y;\n }\n changeSprite(component: MaskComponent) {\n const sprite = this.maskSpriteCache[component.gameObject.id] as SpriteEngine;\n this.setSprite(component, sprite);\n }\n async setSprite(component: MaskComponent, sprite) {\n let res;\n try {\n const asyncId = this.increaseAsyncId(component.gameObject.id);\n res = await resource.getResource(component.resource);\n if (!this.validateAsyncId(component.gameObject.id, asyncId)) return;\n } catch (e) {\n throw new Error('mask resource load error');\n }\n if (component.type === MASK_TYPE.Sprite) {\n const img = component.resource + resourceKeySplit + component.spriteName;\n const texture = res.instance[img];\n sprite.image = texture;\n } else {\n sprite.image = res.data.image;\n }\n sprite.sprite.width = component.style.width;\n sprite.sprite.height = component.style.height;\n sprite.sprite.position.x = component.style.x;\n sprite.sprite.position.y = component.style.y;\n }\n}\n"],"names":["MASK_TYPE","Component","__decorate","type","Mask","Renderer","RendererSystem","OBSERVER_TYPE","Graphics","SpriteEngine","resource","decorators"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),r=require("@combos-fun/inspector-decorator"),s=require("@combos-fun/plugin-renderer"),i=require("@combos-fun/renderer-adapter");exports.MASK_TYPE=void 0,function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(exports.MASK_TYPE||(exports.MASK_TYPE={}));let a=class extends t.Component{constructor(){super(...arguments),this.style={},this.resource="",this.spriteName=""}static{this.componentName="Mask"}init(e){Object.assign(this,e)}};e.__decorate([r.type("string")],a.prototype,"resource",void 0),e.__decorate([r.type("string")],a.prototype,"spriteName",void 0);const c={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]},o={Circle:"drawCircle",Ellipse:"drawEllipse",Rect:"drawRect",RoundedRect:"drawRoundedRect",Polygon:"drawPolygon"};var n;!function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(n||(n={}));let p=class extends s.Renderer{constructor(){super(...arguments),this.name="Mask",this.changedCache={},this.maskSpriteCache={}}static{this.systemName="Mask"}init(){this.renderSystem=this.game.getSystem(s.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(){this.changedCache={}}componentChanged(e){if("Mask"===e.component.name)switch(e.type){case t.OBSERVER_TYPE.ADD:this.add(e);break;case t.OBSERVER_TYPE.REMOVE:this.remove(e);break;case t.OBSERVER_TYPE.CHANGE:this.change(e)}}add(e){const t=e.component;if(!(t.type in n))throw new Error("no have Mask type: "+t.type);if(!t.style)throw new Error("no have Mask style: "+t.type);let r;switch(t.type){case n.Circle:case n.Ellipse:case n.Rect:case n.RoundedRect:case n.Polygon:r=this.createGraphics(t);break;case n.Img:case n.Sprite:r=this.createSprite(t)}if(!r)throw new Error("no have mask instance, check your mask params: "+t.type);this.containerManager.getContainer(e.gameObject.id).mask=r}remove(e){const t=this.containerManager.getContainer(e.gameObject.id),r=t.mask;t.mask=null,r?.destroy({children:!0}),delete this.maskSpriteCache[e.gameObject.id]}change(e){if(this.changedCache[e.gameObject.id])return;const t=e.component;"type"===e.prop.prop[0]?(this.changedCache[e.gameObject.id]=!0,[n.Sprite,n.Img].indexOf(t.type)>-1||t._lastType!==t.type?(this.remove(e),this.add(e),t._lastType=t.type):this.redrawGraphics(e)):"style"===e.prop.prop[0]?[n.Sprite,n.Img].indexOf(t.type)>-1?this.changeSpriteStyle(t):this.redrawGraphics(e):("resource"===e.prop.prop[0]||"spriteName"===e.prop.prop[0])&&(this.changedCache[e.gameObject.id]=!0,this.changeSprite(t))}createGraphics(e){const t=new i.Graphics;return this.draw(t,e),t}redrawGraphics(e){const t=this.containerManager.getContainer(e.gameObject.id).mask;t.clear(),this.draw(t,e.component)}draw(e,t){const r=[];for(const e of c[t.type])r.push(t.style[e]);e.beginFill(0,1),e[o[t.type]](...r),e.endFill()}createSprite(e){const t=new i.Sprite(null);return this.maskSpriteCache[e.gameObject.id]=t,this.setSprite(e,t),t.sprite}changeSpriteStyle(e){const t=this.maskSpriteCache[e.gameObject.id];t.sprite.width=e.style.width,t.sprite.height=e.style.height,t.sprite.position.x=e.style.x,t.sprite.position.y=e.style.y}changeSprite(e){const t=this.maskSpriteCache[e.gameObject.id];this.setSprite(e,t)}async setSprite(e,r){let s;try{const r=this.increaseAsyncId(e.gameObject.id);if(s=await t.resource.getResource(e.resource),!this.validateAsyncId(e.gameObject.id,r))return}catch(e){throw new Error("mask resource load error")}if(e.type===n.Sprite){const t=e.resource+"_s|r|c_"+e.spriteName,i=s.instance[t];r.image=i}else r.image=s.data.image;r.sprite.width=e.style.width,r.sprite.height=e.style.height,r.sprite.position.x=e.style.x,r.sprite.position.y=e.style.y}};p=e.__decorate([t.decorators.componentObserver({Mask:["type",{prop:["style"],deep:!0},"resource","spriteName"]})],p);var h=p;exports.Mask=a,exports.MaskSystem=h;
@@ -0,0 +1,66 @@
1
+ import { Component, ComponentChanged } from '@combos-fun/engine';
2
+ import * as pixi_js from 'pixi.js';
3
+ import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';
4
+ import { Sprite, Graphics } from '@combos-fun/renderer-adapter';
5
+
6
+ declare enum MASK_TYPE {
7
+ Circle = "Circle",
8
+ Ellipse = "Ellipse",
9
+ Rect = "Rect",
10
+ RoundedRect = "RoundedRect",
11
+ Polygon = "Polygon",
12
+ Img = "Img",
13
+ Sprite = "Sprite"
14
+ }
15
+ interface MaskParams {
16
+ type: MASK_TYPE;
17
+ style?: {
18
+ x?: number;
19
+ y?: number;
20
+ radius?: number;
21
+ width?: number;
22
+ height?: number;
23
+ paths?: number[];
24
+ };
25
+ resource?: string;
26
+ spriteName?: string;
27
+ }
28
+ declare class Mask$1 extends Component<MaskParams> {
29
+ static componentName: string;
30
+ _lastType: MaskParams['type'];
31
+ type: MaskParams['type'];
32
+ style?: MaskParams['style'];
33
+ resource?: string;
34
+ spriteName?: string;
35
+ init(obj?: MaskParams): void;
36
+ }
37
+
38
+ declare class Mask extends Renderer {
39
+ static systemName: string;
40
+ name: string;
41
+ changedCache: {
42
+ [propName: number]: boolean;
43
+ };
44
+ maskSpriteCache: {
45
+ [propName: number]: Sprite;
46
+ };
47
+ renderSystem: RendererSystem;
48
+ rendererManager: RendererManager;
49
+ containerManager: ContainerManager;
50
+ init(): void;
51
+ rendererUpdate(): void;
52
+ componentChanged(changed: ComponentChanged): void;
53
+ add(changed: ComponentChanged): void;
54
+ remove(changed: ComponentChanged): void;
55
+ change(changed: ComponentChanged): void;
56
+ createGraphics(component: Mask$1): Graphics;
57
+ redrawGraphics(changed: any): void;
58
+ draw(graphics: any, component: any): void;
59
+ createSprite(component: Mask$1): pixi_js.Sprite;
60
+ changeSpriteStyle(component: Mask$1): void;
61
+ changeSprite(component: Mask$1): void;
62
+ setSprite(component: Mask$1, sprite: any): Promise<void>;
63
+ }
64
+
65
+ export { MASK_TYPE, Mask$1 as Mask, Mask as MaskSystem };
66
+ export type { MaskParams };
@@ -0,0 +1,240 @@
1
+ import { __decorate } from 'tslib';
2
+ import { Component, OBSERVER_TYPE, resource, decorators } from '@combos-fun/engine';
3
+ import { type } from '@combos-fun/inspector-decorator';
4
+ import { Renderer, RendererSystem } from '@combos-fun/plugin-renderer';
5
+ import { Graphics, Sprite } from '@combos-fun/renderer-adapter';
6
+
7
+ var MASK_TYPE$1;
8
+ (function (MASK_TYPE) {
9
+ MASK_TYPE["Circle"] = "Circle";
10
+ MASK_TYPE["Ellipse"] = "Ellipse";
11
+ MASK_TYPE["Rect"] = "Rect";
12
+ MASK_TYPE["RoundedRect"] = "RoundedRect";
13
+ MASK_TYPE["Polygon"] = "Polygon";
14
+ MASK_TYPE["Img"] = "Img";
15
+ MASK_TYPE["Sprite"] = "Sprite";
16
+ })(MASK_TYPE$1 || (MASK_TYPE$1 = {}));
17
+ let Mask$1 = class Mask extends Component {
18
+ constructor() {
19
+ super(...arguments);
20
+ // @decorators.IDEProp 复杂编辑后续添加
21
+ this.style = {};
22
+ this.resource = '';
23
+ this.spriteName = '';
24
+ }
25
+ static { this.componentName = 'Mask'; }
26
+ init(obj) {
27
+ Object.assign(this, obj);
28
+ }
29
+ };
30
+ __decorate([
31
+ type('string')
32
+ ], Mask$1.prototype, "resource", void 0);
33
+ __decorate([
34
+ type('string')
35
+ ], Mask$1.prototype, "spriteName", void 0);
36
+
37
+ const resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.
38
+ const propertyForGraphics = {
39
+ Circle: ['x', 'y', 'radius'],
40
+ Ellipse: ['x', 'y', 'width', 'height'],
41
+ Rect: ['x', 'y', 'width', 'height'],
42
+ RoundedRect: ['x', 'y', 'width', 'height', 'radius'],
43
+ Polygon: ['paths'],
44
+ };
45
+ const functionForGraphics = {
46
+ Circle: 'drawCircle',
47
+ Ellipse: 'drawEllipse',
48
+ Rect: 'drawRect',
49
+ RoundedRect: 'drawRoundedRect',
50
+ Polygon: 'drawPolygon',
51
+ };
52
+ var MASK_TYPE;
53
+ (function (MASK_TYPE) {
54
+ MASK_TYPE["Circle"] = "Circle";
55
+ MASK_TYPE["Ellipse"] = "Ellipse";
56
+ MASK_TYPE["Rect"] = "Rect";
57
+ MASK_TYPE["RoundedRect"] = "RoundedRect";
58
+ MASK_TYPE["Polygon"] = "Polygon";
59
+ MASK_TYPE["Img"] = "Img";
60
+ MASK_TYPE["Sprite"] = "Sprite";
61
+ })(MASK_TYPE || (MASK_TYPE = {}));
62
+ let Mask = class Mask extends Renderer {
63
+ constructor() {
64
+ super(...arguments);
65
+ this.name = 'Mask';
66
+ this.changedCache = {};
67
+ this.maskSpriteCache = {};
68
+ }
69
+ static { this.systemName = 'Mask'; }
70
+ init() {
71
+ this.renderSystem = this.game.getSystem(RendererSystem);
72
+ this.renderSystem.rendererManager.register(this);
73
+ }
74
+ rendererUpdate() {
75
+ this.changedCache = {};
76
+ }
77
+ componentChanged(changed) {
78
+ if (changed.component.name !== 'Mask')
79
+ return;
80
+ switch (changed.type) {
81
+ case OBSERVER_TYPE.ADD:
82
+ this.add(changed);
83
+ break;
84
+ case OBSERVER_TYPE.REMOVE:
85
+ this.remove(changed);
86
+ break;
87
+ case OBSERVER_TYPE.CHANGE:
88
+ this.change(changed);
89
+ break;
90
+ }
91
+ }
92
+ add(changed) {
93
+ const component = changed.component;
94
+ if (!(component.type in MASK_TYPE)) {
95
+ throw new Error('no have Mask type: ' + component.type);
96
+ }
97
+ if (!component.style) {
98
+ throw new Error('no have Mask style: ' + component.type);
99
+ }
100
+ let mask;
101
+ switch (component.type) {
102
+ case MASK_TYPE.Circle:
103
+ mask = this.createGraphics(component);
104
+ break;
105
+ case MASK_TYPE.Ellipse:
106
+ mask = this.createGraphics(component);
107
+ break;
108
+ case MASK_TYPE.Rect:
109
+ mask = this.createGraphics(component);
110
+ break;
111
+ case MASK_TYPE.RoundedRect:
112
+ mask = this.createGraphics(component);
113
+ break;
114
+ case MASK_TYPE.Polygon:
115
+ mask = this.createGraphics(component);
116
+ break;
117
+ case MASK_TYPE.Img:
118
+ mask = this.createSprite(component);
119
+ break;
120
+ case MASK_TYPE.Sprite:
121
+ mask = this.createSprite(component);
122
+ break;
123
+ }
124
+ if (!mask) {
125
+ throw new Error('no have mask instance, check your mask params: ' + component.type);
126
+ }
127
+ const container = this.containerManager.getContainer(changed.gameObject.id);
128
+ container.mask = mask;
129
+ }
130
+ remove(changed) {
131
+ const container = this.containerManager.getContainer(changed.gameObject.id);
132
+ const maskObj = container.mask;
133
+ container.mask = null;
134
+ maskObj?.destroy({ children: true });
135
+ delete this.maskSpriteCache[changed.gameObject.id];
136
+ }
137
+ change(changed) {
138
+ if (this.changedCache[changed.gameObject.id])
139
+ return;
140
+ const component = changed.component;
141
+ if (changed.prop.prop[0] === 'type') {
142
+ this.changedCache[changed.gameObject.id] = true;
143
+ if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1 ||
144
+ component._lastType !== component.type) {
145
+ this.remove(changed);
146
+ this.add(changed);
147
+ component._lastType = component.type;
148
+ }
149
+ else {
150
+ this.redrawGraphics(changed);
151
+ }
152
+ }
153
+ else if (changed.prop.prop[0] === 'style') {
154
+ if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {
155
+ this.changeSpriteStyle(component);
156
+ }
157
+ else {
158
+ this.redrawGraphics(changed);
159
+ }
160
+ }
161
+ else if (changed.prop.prop[0] === 'resource') {
162
+ this.changedCache[changed.gameObject.id] = true;
163
+ this.changeSprite(component);
164
+ }
165
+ else if (changed.prop.prop[0] === 'spriteName') {
166
+ this.changedCache[changed.gameObject.id] = true;
167
+ this.changeSprite(component);
168
+ }
169
+ }
170
+ createGraphics(component) {
171
+ const graphics = new Graphics();
172
+ this.draw(graphics, component);
173
+ return graphics;
174
+ }
175
+ redrawGraphics(changed) {
176
+ const container = this.containerManager.getContainer(changed.gameObject.id);
177
+ const graphics = container.mask;
178
+ graphics.clear();
179
+ this.draw(graphics, changed.component);
180
+ }
181
+ draw(graphics, component) {
182
+ const params = [];
183
+ for (const key of propertyForGraphics[component.type]) {
184
+ params.push(component.style[key]);
185
+ }
186
+ graphics.beginFill(0x000000, 1);
187
+ graphics[functionForGraphics[component.type]](...params);
188
+ graphics.endFill();
189
+ }
190
+ createSprite(component) {
191
+ const sprite = new Sprite(null);
192
+ this.maskSpriteCache[component.gameObject.id] = sprite;
193
+ this.setSprite(component, sprite);
194
+ return sprite.sprite;
195
+ }
196
+ changeSpriteStyle(component) {
197
+ const sprite = this.maskSpriteCache[component.gameObject.id];
198
+ sprite.sprite.width = component.style.width;
199
+ sprite.sprite.height = component.style.height;
200
+ sprite.sprite.position.x = component.style.x;
201
+ sprite.sprite.position.y = component.style.y;
202
+ }
203
+ changeSprite(component) {
204
+ const sprite = this.maskSpriteCache[component.gameObject.id];
205
+ this.setSprite(component, sprite);
206
+ }
207
+ async setSprite(component, sprite) {
208
+ let res;
209
+ try {
210
+ const asyncId = this.increaseAsyncId(component.gameObject.id);
211
+ res = await resource.getResource(component.resource);
212
+ if (!this.validateAsyncId(component.gameObject.id, asyncId))
213
+ return;
214
+ }
215
+ catch (e) {
216
+ throw new Error('mask resource load error');
217
+ }
218
+ if (component.type === MASK_TYPE.Sprite) {
219
+ const img = component.resource + resourceKeySplit + component.spriteName;
220
+ const texture = res.instance[img];
221
+ sprite.image = texture;
222
+ }
223
+ else {
224
+ sprite.image = res.data.image;
225
+ }
226
+ sprite.sprite.width = component.style.width;
227
+ sprite.sprite.height = component.style.height;
228
+ sprite.sprite.position.x = component.style.x;
229
+ sprite.sprite.position.y = component.style.y;
230
+ }
231
+ };
232
+ Mask = __decorate([
233
+ decorators.componentObserver({
234
+ Mask: ['type', { prop: ['style'], deep: true }, 'resource', 'spriteName'],
235
+ })
236
+ ], Mask);
237
+ var Mask_default = Mask;
238
+
239
+ export { MASK_TYPE$1 as MASK_TYPE, Mask$1 as Mask, Mask_default as MaskSystem };
240
+ //# sourceMappingURL=plugin-renderer-mask.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-renderer-mask.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport {type } from '@combos-fun/inspector-decorator'\n\nexport enum MASK_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n Polygon = 'Polygon',\n Img = 'Img',\n Sprite = 'Sprite',\n}\n\nexport interface MaskParams {\n type: MASK_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n resource?: string;\n spriteName?: string;\n}\n\nexport default class Mask extends Component<MaskParams> {\n static componentName: string = 'Mask';\n _lastType: MaskParams['type'];\n // @decorators.IDEProp 复杂编辑后续添加\n type: MaskParams['type'];\n // @decorators.IDEProp 复杂编辑后续添加\n style?: MaskParams['style'] = {};\n @type('string') resource?: string = '';\n @type('string') spriteName?: string = '';\n\n init(obj?: MaskParams) {\n Object.assign(this, obj);\n }\n}\n","import { decorators, resource, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Renderer, RendererManager, ContainerManager, RendererSystem } from '@combos-fun/plugin-renderer';\nimport { Sprite as SpriteEngine, Graphics } from '@combos-fun/renderer-adapter';\nimport type { Container as PixiContainer } from 'pixi.js';\nimport MaskComponent from './component';\n\nconst resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.\n\nconst propertyForGraphics = {\n Circle: ['x', 'y', 'radius'],\n Ellipse: ['x', 'y', 'width', 'height'],\n Rect: ['x', 'y', 'width', 'height'],\n RoundedRect: ['x', 'y', 'width', 'height', 'radius'],\n Polygon: ['paths'],\n};\nconst functionForGraphics = {\n Circle: 'drawCircle',\n Ellipse: 'drawEllipse',\n Rect: 'drawRect',\n RoundedRect: 'drawRoundedRect',\n Polygon: 'drawPolygon',\n};\n\nenum MASK_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n Polygon = 'Polygon',\n Img = 'Img',\n Sprite = 'Sprite',\n}\n\n@decorators.componentObserver({\n Mask: ['type', { prop: ['style'], deep: true }, 'resource', 'spriteName'],\n})\nexport default class Mask extends Renderer {\n static systemName = 'Mask';\n name: string = 'Mask';\n changedCache: { [propName: number]: boolean } = {};\n maskSpriteCache: { [propName: number]: SpriteEngine } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n rendererUpdate() {\n this.changedCache = {};\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.component.name !== 'Mask') return;\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n this.add(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n this.remove(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n this.change(changed);\n break;\n }\n }\n add(changed: ComponentChanged) {\n const component = changed.component as MaskComponent;\n if (!(component.type in MASK_TYPE)) {\n throw new Error('no have Mask type: ' + component.type);\n }\n\n if (!component.style) {\n throw new Error('no have Mask style: ' + component.type);\n }\n\n let mask;\n switch (component.type) {\n case MASK_TYPE.Circle:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Ellipse:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Rect:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.RoundedRect:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Polygon:\n mask = this.createGraphics(component);\n break;\n case MASK_TYPE.Img:\n mask = this.createSprite(component);\n break;\n case MASK_TYPE.Sprite:\n mask = this.createSprite(component);\n break;\n }\n if (!mask) {\n throw new Error('no have mask instance, check your mask params: ' + component.type);\n }\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.mask = mask;\n }\n remove(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n const maskObj = container.mask as PixiContainer | null;\n container.mask = null;\n maskObj?.destroy({ children: true });\n delete this.maskSpriteCache[changed.gameObject.id];\n }\n change(changed: ComponentChanged) {\n if (this.changedCache[changed.gameObject.id]) return;\n const component = changed.component as MaskComponent;\n if (changed.prop.prop[0] === 'type') {\n this.changedCache[changed.gameObject.id] = true;\n if (\n [MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1 ||\n component._lastType !== component.type\n ) {\n this.remove(changed);\n this.add(changed);\n component._lastType = component.type\n } else {\n this.redrawGraphics(changed);\n }\n } else if (changed.prop.prop[0] === 'style') {\n if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {\n this.changeSpriteStyle(component);\n } else {\n this.redrawGraphics(changed);\n }\n } else if (changed.prop.prop[0] === 'resource') {\n this.changedCache[changed.gameObject.id] = true;\n this.changeSprite(component);\n } else if (changed.prop.prop[0] === 'spriteName') {\n this.changedCache[changed.gameObject.id] = true;\n this.changeSprite(component);\n }\n }\n createGraphics(component: MaskComponent) {\n const graphics = new Graphics();\n this.draw(graphics, component);\n return graphics;\n }\n redrawGraphics(changed) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n const graphics = container.mask as Graphics;\n graphics.clear();\n this.draw(graphics, changed.component);\n }\n draw(graphics, component) {\n const params = [];\n for (const key of propertyForGraphics[component.type]) {\n params.push(component.style[key]);\n }\n graphics.beginFill(0x000000, 1);\n graphics[functionForGraphics[component.type]](...params);\n\n graphics.endFill();\n }\n createSprite(component: MaskComponent) {\n const sprite = new SpriteEngine(null);\n this.maskSpriteCache[component.gameObject.id] = sprite;\n this.setSprite(component, sprite);\n return sprite.sprite;\n }\n changeSpriteStyle(component: MaskComponent) {\n const sprite = this.maskSpriteCache[component.gameObject.id] as SpriteEngine;\n sprite.sprite.width = component.style.width;\n sprite.sprite.height = component.style.height;\n sprite.sprite.position.x = component.style.x;\n sprite.sprite.position.y = component.style.y;\n }\n changeSprite(component: MaskComponent) {\n const sprite = this.maskSpriteCache[component.gameObject.id] as SpriteEngine;\n this.setSprite(component, sprite);\n }\n async setSprite(component: MaskComponent, sprite) {\n let res;\n try {\n const asyncId = this.increaseAsyncId(component.gameObject.id);\n res = await resource.getResource(component.resource);\n if (!this.validateAsyncId(component.gameObject.id, asyncId)) return;\n } catch (e) {\n throw new Error('mask resource load error');\n }\n if (component.type === MASK_TYPE.Sprite) {\n const img = component.resource + resourceKeySplit + component.spriteName;\n const texture = res.instance[img];\n sprite.image = texture;\n } else {\n sprite.image = res.data.image;\n }\n sprite.sprite.width = component.style.width;\n sprite.sprite.height = component.style.height;\n sprite.sprite.position.x = component.style.x;\n sprite.sprite.position.y = component.style.y;\n }\n}\n"],"names":["MASK_TYPE","Mask","SpriteEngine"],"mappings":"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"}
package/index.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./dist/plugin-renderer-mask.cjs.prod.js');
5
+ } else {
6
+ module.exports = require('./dist/plugin-renderer-mask.cjs.js');
7
+ }
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@combos-fun/plugin-renderer-mask",
3
+ "version": "0.0.1",
4
+ "description": "@combos-fun/plugin-renderer-mask",
5
+ "main": "index.js",
6
+ "module": "dist/plugin-renderer-mask.esm.js",
7
+ "bundle": "CombosFun.plugin.renderer.mask",
8
+ "unpkg": "dist/CombosFun.plugin.renderer.mask.min.js",
9
+ "files": [
10
+ "index.js",
11
+ "dist"
12
+ ],
13
+ "types": "dist/plugin-renderer-mask.d.ts",
14
+ "keywords": [
15
+ "combos-fun",
16
+ "game"
17
+ ],
18
+ "author": "sun668 <q947692259@gmail.com>",
19
+ "dependencies": {
20
+ "pixi.js": "^8.18.1",
21
+ "@combos-fun/plugin-renderer": "0.0.1",
22
+ "@combos-fun/renderer-adapter": "0.0.1",
23
+ "@combos-fun/engine": "0.0.1",
24
+ "@combos-fun/inspector-decorator": "0.0.1"
25
+ },
26
+ "scripts": {
27
+ "build": "node ../../scripts/build-package.mjs"
28
+ }
29
+ }