@combos-fun/plugin-renderer-mask 0.0.45 → 0.0.47
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 +13 -35
- package/dist/plugin-renderer-mask.cjs.js +20 -20
- package/dist/plugin-renderer-mask.cjs.js.map +1 -1
- package/dist/plugin-renderer-mask.cjs.prod.js +1 -1
- package/dist/plugin-renderer-mask.d.ts +1 -1
- package/dist/plugin-renderer-mask.esm.js +20 -20
- package/dist/plugin-renderer-mask.esm.js.map +1 -1
- package/package.json +5 -5
package/agent-skill.md
CHANGED
|
@@ -1,45 +1,25 @@
|
|
|
1
1
|
# `@combos-fun/plugin-renderer-mask` — Agent notes
|
|
2
2
|
|
|
3
|
-
|
|
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'
|
|
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
|
-
|
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
207
|
-
|
|
208
|
-
|
|
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.
|
|
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":"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"}
|
|
@@ -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
|
|
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:
|
|
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
|
|
205
|
-
|
|
206
|
-
|
|
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.
|
|
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.
|
|
3
|
+
"version": "0.0.47",
|
|
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/plugin-renderer": "0.0.
|
|
41
|
-
"@combos-fun/
|
|
42
|
-
"@combos-fun/
|
|
43
|
-
"@combos-fun/
|
|
40
|
+
"@combos-fun/plugin-renderer": "0.0.47",
|
|
41
|
+
"@combos-fun/engine": "0.0.47",
|
|
42
|
+
"@combos-fun/renderer-adapter": "0.0.47",
|
|
43
|
+
"@combos-fun/inspector-decorator": "0.0.47"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "node ../../scripts/build-package.mjs"
|