@combos-fun/plugin-renderer-mask 0.0.44 → 0.0.46

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/agent-skill.md CHANGED
@@ -1,45 +1,25 @@
1
1
  # `@combos-fun/plugin-renderer-mask` — Agent notes
2
2
 
3
- Pixi mask Component for the 2D pipeline. Adds a clipping mask of a chosen shape (or texture) to the GameObject's container.
4
-
5
- ## When to read
6
-
7
- Read when you need to clip a sprite / sub-tree to a circular avatar, an ellipse, a rounded rect, a polygon, or a texture-based alpha mask.
8
-
9
- ## Public API
3
+ Read only to clip a GameObject container with local vector geometry or texture alpha.
10
4
 
11
5
  ```ts
12
6
  import { Mask, MaskSystem, MASK_TYPE, type MaskParams } from '@combos-fun/plugin-renderer-mask';
13
7
  ```
14
8
 
15
- `componentName = 'Mask'`, `systemName = 'Mask'` (class is `MaskSystem` — use `game.getSystem(MaskSystem)`, not the string).
16
-
17
- ### `MASK_TYPE`
18
-
19
- `Circle`, `Ellipse`, `Rect`, `RoundedRect`, `Polygon`, `Img`, `Sprite`.
20
-
21
- ### `MaskParams`
9
+ `Mask.componentName = 'Mask'`; `MaskSystem.systemName = 'Mask'`.
22
10
 
23
- | Field | Type | Notes |
24
- |-------|------|-------|
25
- | `type` | `MASK_TYPE` | Mask shape |
26
- | `style` | `{ x?, y?, radius?, width?, height?, paths? }` | Geometry parameters; `paths` is for `Polygon` |
27
- | `resource` | `string?` | For `Img` / `Sprite` mask types |
28
- | `spriteName` | `string?` | For `Sprite` mask type |
11
+ `MASK_TYPE` is `Circle | Ellipse | Rect | RoundedRect | Polygon | Img | Sprite`.
29
12
 
30
- ## Required setup
31
-
32
- `RendererSystem` then `MaskSystem` (`Img` / `Sprite` mask types also require the matching `Img`/`Sprite` resource registered).
33
-
34
- ## Common pitfalls
35
-
36
- | Symptom | Fix |
37
- |---------|-----|
38
- | Mask hides everything | `paths` for Polygon must be in local space; non-zero winding |
39
- | Visual lost after adding mask | Check `style` size; a 0×0 RoundedRect mask hides everything |
40
- | Texture mask all black | `Img`/`Sprite` mask requires the texture's alpha channel; use a PNG with alpha |
13
+ ```ts
14
+ interface MaskParams {
15
+ type: MASK_TYPE;
16
+ style?: { x?: number; y?: number; radius?: number; width?: number; height?: number; paths?: number[] };
17
+ resource?: string;
18
+ spriteName?: string;
19
+ }
20
+ ```
41
21
 
42
- ## Minimal example
22
+ Pass a concrete `style`: Circle uses `x/y/radius`; Ellipse and Rect use `x/y/width/height`; RoundedRect also uses `radius`; Polygon uses flat local-space `paths`. Missing dimensions default to zero and can hide everything. Explicit `style: undefined` throws `no have Mask style`.
43
23
 
44
24
  ```ts
45
25
  go.addComponent(new Mask({
@@ -48,6 +28,4 @@ go.addComponent(new Mask({
48
28
  }));
49
29
  ```
50
30
 
51
- ## Verification
52
-
53
- `pnpm --filter @combos-fun/plugin-renderer-mask run build`.
31
+ `Img` masks require an IMAGE `resource` and read `data.image` directly—no `plugin-renderer-img` import is needed. `Sprite` masks require a SPRITE `resource`, exact `spriteName`, and `plugin-renderer-sprite` imported so its atlas instance factory runs. Texture masks use source alpha and `style` supplies their local position and size.
@@ -59,20 +59,6 @@ tslib.__decorate([
59
59
  ], Mask$1.prototype, "spriteName", void 0);
60
60
 
61
61
  const resourceKeySplit = pluginRenderer.RESOURCE_KEY_SPLIT;
62
- const propertyForGraphics = {
63
- Circle: ['x', 'y', 'radius'],
64
- Ellipse: ['x', 'y', 'width', 'height'],
65
- Rect: ['x', 'y', 'width', 'height'],
66
- RoundedRect: ['x', 'y', 'width', 'height', 'radius'],
67
- Polygon: ['paths'],
68
- };
69
- const functionForGraphics = {
70
- Circle: 'drawCircle',
71
- Ellipse: 'drawEllipse',
72
- Rect: 'drawRect',
73
- RoundedRect: 'drawRoundedRect',
74
- Polygon: 'drawPolygon',
75
- };
76
62
  var MASK_TYPE;
77
63
  (function (MASK_TYPE) {
78
64
  MASK_TYPE["Circle"] = "Circle";
@@ -203,13 +189,27 @@ let Mask = class Mask extends pluginRenderer.Renderer {
203
189
  this.draw(graphics, changed.component);
204
190
  }
205
191
  draw(graphics, component) {
206
- const params = [];
207
- for (const key of propertyForGraphics[component.type]) {
208
- params.push(component.style[key]);
192
+ const style = component.style || {};
193
+ switch (component.type) {
194
+ case MASK_TYPE.Circle:
195
+ graphics.circle(style.x ?? 0, style.y ?? 0, style.radius ?? 0);
196
+ break;
197
+ case MASK_TYPE.Ellipse:
198
+ graphics.ellipse(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);
199
+ break;
200
+ case MASK_TYPE.Rect:
201
+ graphics.rect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);
202
+ break;
203
+ case MASK_TYPE.RoundedRect:
204
+ graphics.roundRect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0, style.radius ?? 0);
205
+ break;
206
+ case MASK_TYPE.Polygon:
207
+ graphics.poly(style.paths ?? []);
208
+ break;
209
+ default:
210
+ return;
209
211
  }
210
- graphics.beginFill(0x000000, 1);
211
- graphics[functionForGraphics[component.type]](...params);
212
- graphics.endFill();
212
+ graphics.fill({ color: 0x000000 });
213
213
  }
214
214
  createSprite(component) {
215
215
  const sprite = new rendererAdapter.Sprite(null);
@@ -1 +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 { Field } 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\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'type',\n description: 'Mask shape kind.',\n editor: 'enum',\n enumOptions: ['Circle', 'Ellipse', 'Rect', 'RoundedRect', 'Polygon', 'Img', 'Sprite'],\n })\n type: MaskParams['type'];\n\n // Complex nested geometry — expose later if needed.\n style?: MaskParams['style'] = {};\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'resource',\n description: 'Image resource id when the mask type is Img or Sprite.',\n editor: 'text',\n })\n resource?: string = '';\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'spriteName',\n description: 'Atlas frame name when the mask type is Sprite.',\n editor: 'text',\n })\n 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, RESOURCE_KEY_SPLIT } 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 = RESOURCE_KEY_SPLIT;\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","Field","Mask","RESOURCE_KEY_SPLIT","Renderer","RendererSystem","OBSERVER_TYPE","Graphics","SpriteEngine","resource","decorators"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-renderer-mask.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { Field } 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\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'type',\n description: 'Mask shape kind.',\n editor: 'enum',\n enumOptions: ['Circle', 'Ellipse', 'Rect', 'RoundedRect', 'Polygon', 'Img', 'Sprite'],\n })\n type: MaskParams['type'];\n\n // Complex nested geometry — expose later if needed.\n style?: MaskParams['style'] = {};\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'resource',\n description: 'Image resource id when the mask type is Img or Sprite.',\n editor: 'text',\n })\n resource?: string = '';\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'spriteName',\n description: 'Atlas frame name when the mask type is Sprite.',\n editor: 'text',\n })\n 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, RESOURCE_KEY_SPLIT } 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 = RESOURCE_KEY_SPLIT;\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: Graphics, component: MaskComponent) {\n const style = component.style || {};\n switch (component.type) {\n case MASK_TYPE.Circle:\n graphics.circle(style.x ?? 0, style.y ?? 0, style.radius ?? 0);\n break;\n case MASK_TYPE.Ellipse:\n graphics.ellipse(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);\n break;\n case MASK_TYPE.Rect:\n graphics.rect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);\n break;\n case MASK_TYPE.RoundedRect:\n graphics.roundRect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0, style.radius ?? 0);\n break;\n case MASK_TYPE.Polygon:\n graphics.poly(style.paths ?? []);\n break;\n default:\n return;\n }\n graphics.fill({ color: 0x000000 });\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","Field","Mask","RESOURCE_KEY_SPLIT","Renderer","RendererSystem","OBSERVER_TYPE","Graphics","SpriteEngine","resource","decorators"],"mappings":";;;;;;;;AAGYA;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EARWA,iBAAS,KAATA,iBAAS,GAAA,EAAA,CAAA,CAAA;aAwBP,MAAO,IAAK,SAAQC,gBAAqB,CAAA;AAAvD,IAAA,WAAA,GAAA;;;QAeE,IAAA,CAAA,KAAK,GAAyB,EAAE;QAShC,IAAA,CAAA,QAAQ,GAAY,EAAE;QAStB,IAAA,CAAA,UAAU,GAAY,EAAE;IAK1B;aArCS,IAAA,CAAA,aAAa,GAAW,MAAX,CAAkB;AAkCtC,IAAA,IAAI,CAAC,GAAgB,EAAA;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;IAC1B;;AAzBAC,gBAAA,CAAA;AARC,IAAAC,wBAAK,CAAC;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC;KACtF;AACwB,CAAA,EAAAC,MAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAYzBF,gBAAA,CAAA;AAPC,IAAAC,wBAAK,CAAC;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,WAAW,EAAE,wDAAwD;AACrE,QAAA,MAAM,EAAE,MAAM;KACf;AACsB,CAAA,EAAAC,MAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AASvBF,gBAAA,CAAA;AAPC,IAAAC,wBAAK,CAAC;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,WAAW,EAAE,gDAAgD;AAC7D,QAAA,MAAM,EAAE,MAAM;KACf;AACwB,CAAA,EAAAC,MAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;;ACtD3B,MAAM,gBAAgB,GAAGC,iCAAkB;AAE3C,IAAK,SAQJ;AARD,CAAA,UAAK,SAAS,EAAA;AACZ,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EARI,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AAaC,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQC,uBAAQ,CAAA;AAA3B,IAAA,WAAA,GAAA;;QAEb,IAAA,CAAA,IAAI,GAAW,MAAM;QACrB,IAAA,CAAA,YAAY,GAAoC,EAAE;QAClD,IAAA,CAAA,eAAe,GAAyC,EAAE;IA6K5D;aAhLS,IAAA,CAAA,UAAU,GAAG,MAAH,CAAU;IAO3B,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAACC,6BAAc,CAAmB;QACzE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClD;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB;AACA,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;YAAE;AACvC,QAAA,QAAQ,OAAO,CAAC,IAAI;YAClB,KAAKC,oBAAa,CAAC,GAAG;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACjB;YACF,KAAKA,oBAAa,CAAC,MAAM;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACpB;YACF,KAAKA,oBAAa,CAAC,MAAM;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACpB;;IAEN;AACA,IAAA,GAAG,CAAC,OAAyB,EAAA;AAC3B,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAA0B;QACpD,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,SAAS,CAAC,IAAI,CAAC;QACzD;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,SAAS,CAAC,IAAI,CAAC;QAC1D;AAEA,QAAA,IAAI,IAAI;AACR,QAAA,QAAQ,SAAS,CAAC,IAAI;YACpB,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBACrC;YACF,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBACrC;YACF,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBACrC;YACF,KAAK,SAAS,CAAC,WAAW;AACxB,gBAAA,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBACrC;YACF,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBACrC;YACF,KAAK,SAAS,CAAC,GAAG;AAChB,gBAAA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;gBACnC;YACF,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;gBACnC;;QAEJ,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,SAAS,CAAC,IAAI,CAAC;QACrF;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3E,QAAA,SAAS,CAAC,IAAI,GAAG,IAAI;IACvB;AACA,IAAA,MAAM,CAAC,OAAyB,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3E,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAA4B;AACtD,QAAA,SAAS,CAAC,IAAI,GAAG,IAAI;QACrB,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACpD;AACA,IAAA,MAAM,CAAC,OAAyB,EAAA;QAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE;AAC9C,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAA0B;QACpD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI;AAC/C,YAAA,IACE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;AAC9D,gBAAA,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EACtC;AACA,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACjB,gBAAA,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI;YACtC;iBAAO;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC9B;QACF;aAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;AAClE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACnC;iBAAO;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC9B;QACF;aAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YAC9C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC9B;aAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;YAChD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC9B;IACF;AACA,IAAA,cAAc,CAAC,SAAwB,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,IAAIC,wBAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AAC9B,QAAA,OAAO,QAAQ;IACjB;AACA,IAAA,cAAc,CAAC,OAAO,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3E,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAgB;QAC3C,QAAQ,CAAC,KAAK,EAAE;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;IACxC;IACA,IAAI,CAAC,QAAkB,EAAE,SAAwB,EAAA;AAC/C,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE;AACnC,QAAA,QAAQ,SAAS,CAAC,IAAI;YACpB,KAAK,SAAS,CAAC,MAAM;gBACnB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC9D;YACF,KAAK,SAAS,CAAC,OAAO;gBACpB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gBACjF;YACF,KAAK,SAAS,CAAC,IAAI;gBACjB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC9E;YACF,KAAK,SAAS,CAAC,WAAW;AACxB,gBAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gBACtG;YACF,KAAK,SAAS,CAAC,OAAO;gBACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChC;AACF,YAAA;gBACE;;QAEJ,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACpC;AACA,IAAA,YAAY,CAAC,SAAwB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAIC,sBAAY,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,MAAM;AACtD,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;QACjC,OAAO,MAAM,CAAC,MAAM;IACtB;AACA,IAAA,iBAAiB,CAAC,SAAwB,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAiB;QAC5E,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM;AAC7C,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C;AACA,IAAA,YAAY,CAAC,SAAwB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAiB;AAC5E,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IACnC;AACA,IAAA,MAAM,SAAS,CAAC,SAAwB,EAAE,MAAM,EAAA;AAC9C,QAAA,IAAI,GAAG;AACP,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,GAAG,GAAG,MAAMC,eAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC;gBAAE;QAC/D;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;QAC7C;QACA,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;YACvC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAAC,UAAU;YACxE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AACjC,YAAA,MAAM,CAAC,KAAK,GAAG,OAAO;QACxB;aAAO;YACL,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;QAC/B;QACA,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM;AAC7C,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C;;AAhLmB,IAAI,GAAAT,gBAAA,CAAA;IAHxBU,iBAAU,CAAC,iBAAiB,CAAC;AAC5B,QAAA,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC;KAC1E;AACoB,CAAA,EAAA,IAAI,CAiLxB;mBAjLoB,IAAI;;;;;"}
@@ -1 +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.Field({type:"string",group:"Mask",label:"type",description:"Mask shape kind.",editor:"enum",enumOptions:["Circle","Ellipse","Rect","RoundedRect","Polygon","Img","Sprite"]})],a.prototype,"type",void 0),e.__decorate([r.Field({type:"string",group:"Mask",label:"resource",description:"Image resource id when the mask type is Img or Sprite.",editor:"text"})],a.prototype,"resource",void 0),e.__decorate([r.Field({type:"string",group:"Mask",label:"spriteName",description:"Atlas frame name when the mask type is Sprite.",editor:"text"})],a.prototype,"spriteName",void 0);const o=s.RESOURCE_KEY_SPLIT,c={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]},n={Circle:"drawCircle",Ellipse:"drawEllipse",Rect:"drawRect",RoundedRect:"drawRoundedRect",Polygon:"drawPolygon"};var p;!function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(p||(p={}));let h=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 p))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 p.Circle:case p.Ellipse:case p.Rect:case p.RoundedRect:case p.Polygon:r=this.createGraphics(t);break;case p.Img:case p.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,[p.Sprite,p.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]?[p.Sprite,p.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[n[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===p.Sprite){const t=e.resource+o+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}};h=e.__decorate([t.decorators.componentObserver({Mask:["type",{prop:["style"],deep:!0},"resource","spriteName"]})],h);var d=h;exports.Mask=a,exports.MaskSystem=d;
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.Field({type:"string",group:"Mask",label:"type",description:"Mask shape kind.",editor:"enum",enumOptions:["Circle","Ellipse","Rect","RoundedRect","Polygon","Img","Sprite"]})],a.prototype,"type",void 0),e.__decorate([r.Field({type:"string",group:"Mask",label:"resource",description:"Image resource id when the mask type is Img or Sprite.",editor:"text"})],a.prototype,"resource",void 0),e.__decorate([r.Field({type:"string",group:"Mask",label:"spriteName",description:"Atlas frame name when the mask type is Sprite.",editor:"text"})],a.prototype,"spriteName",void 0);const c=s.RESOURCE_KEY_SPLIT;var o;!function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(o||(o={}));let n=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 o))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 o.Circle:case o.Ellipse:case o.Rect:case o.RoundedRect:case o.Polygon:r=this.createGraphics(t);break;case o.Img:case o.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,[o.Sprite,o.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]?[o.Sprite,o.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=t.style||{};switch(t.type){case o.Circle:e.circle(r.x??0,r.y??0,r.radius??0);break;case o.Ellipse:e.ellipse(r.x??0,r.y??0,r.width??0,r.height??0);break;case o.Rect:e.rect(r.x??0,r.y??0,r.width??0,r.height??0);break;case o.RoundedRect:e.roundRect(r.x??0,r.y??0,r.width??0,r.height??0,r.radius??0);break;case o.Polygon:e.poly(r.paths??[]);break;default:return}e.fill({color:0})}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===o.Sprite){const t=e.resource+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}};n=e.__decorate([t.decorators.componentObserver({Mask:["type",{prop:["style"],deep:!0},"resource","spriteName"]})],n);var p=n;exports.Mask=a,exports.MaskSystem=p;
@@ -55,7 +55,7 @@ declare class Mask extends Renderer {
55
55
  change(changed: ComponentChanged): void;
56
56
  createGraphics(component: Mask$1): Graphics;
57
57
  redrawGraphics(changed: any): void;
58
- draw(graphics: any, component: any): void;
58
+ draw(graphics: Graphics, component: Mask$1): void;
59
59
  createSprite(component: Mask$1): pixi_js.Sprite;
60
60
  changeSpriteStyle(component: Mask$1): void;
61
61
  changeSprite(component: Mask$1): void;
@@ -57,20 +57,6 @@ __decorate([
57
57
  ], Mask$1.prototype, "spriteName", void 0);
58
58
 
59
59
  const resourceKeySplit = RESOURCE_KEY_SPLIT;
60
- const propertyForGraphics = {
61
- Circle: ['x', 'y', 'radius'],
62
- Ellipse: ['x', 'y', 'width', 'height'],
63
- Rect: ['x', 'y', 'width', 'height'],
64
- RoundedRect: ['x', 'y', 'width', 'height', 'radius'],
65
- Polygon: ['paths'],
66
- };
67
- const functionForGraphics = {
68
- Circle: 'drawCircle',
69
- Ellipse: 'drawEllipse',
70
- Rect: 'drawRect',
71
- RoundedRect: 'drawRoundedRect',
72
- Polygon: 'drawPolygon',
73
- };
74
60
  var MASK_TYPE;
75
61
  (function (MASK_TYPE) {
76
62
  MASK_TYPE["Circle"] = "Circle";
@@ -201,13 +187,27 @@ let Mask = class Mask extends Renderer {
201
187
  this.draw(graphics, changed.component);
202
188
  }
203
189
  draw(graphics, component) {
204
- const params = [];
205
- for (const key of propertyForGraphics[component.type]) {
206
- params.push(component.style[key]);
190
+ const style = component.style || {};
191
+ switch (component.type) {
192
+ case MASK_TYPE.Circle:
193
+ graphics.circle(style.x ?? 0, style.y ?? 0, style.radius ?? 0);
194
+ break;
195
+ case MASK_TYPE.Ellipse:
196
+ graphics.ellipse(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);
197
+ break;
198
+ case MASK_TYPE.Rect:
199
+ graphics.rect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);
200
+ break;
201
+ case MASK_TYPE.RoundedRect:
202
+ graphics.roundRect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0, style.radius ?? 0);
203
+ break;
204
+ case MASK_TYPE.Polygon:
205
+ graphics.poly(style.paths ?? []);
206
+ break;
207
+ default:
208
+ return;
207
209
  }
208
- graphics.beginFill(0x000000, 1);
209
- graphics[functionForGraphics[component.type]](...params);
210
- graphics.endFill();
210
+ graphics.fill({ color: 0x000000 });
211
211
  }
212
212
  createSprite(component) {
213
213
  const sprite = new Sprite(null);
@@ -1 +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 { Field } 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\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'type',\n description: 'Mask shape kind.',\n editor: 'enum',\n enumOptions: ['Circle', 'Ellipse', 'Rect', 'RoundedRect', 'Polygon', 'Img', 'Sprite'],\n })\n type: MaskParams['type'];\n\n // Complex nested geometry — expose later if needed.\n style?: MaskParams['style'] = {};\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'resource',\n description: 'Image resource id when the mask type is Img or Sprite.',\n editor: 'text',\n })\n resource?: string = '';\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'spriteName',\n description: 'Atlas frame name when the mask type is Sprite.',\n editor: 'text',\n })\n 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, RESOURCE_KEY_SPLIT } 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 = RESOURCE_KEY_SPLIT;\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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"}
1
+ {"version":3,"file":"plugin-renderer-mask.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { Field } 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\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'type',\n description: 'Mask shape kind.',\n editor: 'enum',\n enumOptions: ['Circle', 'Ellipse', 'Rect', 'RoundedRect', 'Polygon', 'Img', 'Sprite'],\n })\n type: MaskParams['type'];\n\n // Complex nested geometry — expose later if needed.\n style?: MaskParams['style'] = {};\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'resource',\n description: 'Image resource id when the mask type is Img or Sprite.',\n editor: 'text',\n })\n resource?: string = '';\n\n @Field({\n type: 'string',\n group: 'Mask',\n label: 'spriteName',\n description: 'Atlas frame name when the mask type is Sprite.',\n editor: 'text',\n })\n 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, RESOURCE_KEY_SPLIT } 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 = RESOURCE_KEY_SPLIT;\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: Graphics, component: MaskComponent) {\n const style = component.style || {};\n switch (component.type) {\n case MASK_TYPE.Circle:\n graphics.circle(style.x ?? 0, style.y ?? 0, style.radius ?? 0);\n break;\n case MASK_TYPE.Ellipse:\n graphics.ellipse(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);\n break;\n case MASK_TYPE.Rect:\n graphics.rect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0);\n break;\n case MASK_TYPE.RoundedRect:\n graphics.roundRect(style.x ?? 0, style.y ?? 0, style.width ?? 0, style.height ?? 0, style.radius ?? 0);\n break;\n case MASK_TYPE.Polygon:\n graphics.poly(style.paths ?? []);\n break;\n default:\n return;\n }\n graphics.fill({ color: 0x000000 });\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combos-fun/plugin-renderer-mask",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "description": "Pixi mask Component",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer-mask.esm.js",
@@ -37,10 +37,10 @@
37
37
  "author": "sun668 <q947692259@gmail.com>",
38
38
  "dependencies": {
39
39
  "pixi.js": "^8.18.1",
40
- "@combos-fun/inspector-decorator": "0.0.44",
41
- "@combos-fun/plugin-renderer": "0.0.44",
42
- "@combos-fun/engine": "0.0.44",
43
- "@combos-fun/renderer-adapter": "0.0.44"
40
+ "@combos-fun/engine": "0.0.46",
41
+ "@combos-fun/inspector-decorator": "0.0.46",
42
+ "@combos-fun/renderer-adapter": "0.0.46",
43
+ "@combos-fun/plugin-renderer": "0.0.46"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "node ../../scripts/build-package.mjs"