@combos-fun/plugin-renderer-mask 0.0.33 → 0.0.35

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.
@@ -19,7 +19,7 @@ exports.MASK_TYPE = void 0;
19
19
  let Mask$1 = class Mask extends engine.Component {
20
20
  constructor() {
21
21
  super(...arguments);
22
- // @decorators.IDEProp complex editing to be added later
22
+ // Complex nested geometry expose later if needed.
23
23
  this.style = {};
24
24
  this.resource = '';
25
25
  this.spriteName = '';
@@ -30,10 +30,32 @@ let Mask$1 = class Mask extends engine.Component {
30
30
  }
31
31
  };
32
32
  tslib.__decorate([
33
- inspectorDecorator.type('string')
33
+ inspectorDecorator.Field({
34
+ type: 'string',
35
+ group: 'Mask',
36
+ label: 'type',
37
+ description: 'Mask shape kind.',
38
+ editor: 'enum',
39
+ enumOptions: ['Circle', 'Ellipse', 'Rect', 'RoundedRect', 'Polygon', 'Img', 'Sprite'],
40
+ })
41
+ ], Mask$1.prototype, "type", void 0);
42
+ tslib.__decorate([
43
+ inspectorDecorator.Field({
44
+ type: 'string',
45
+ group: 'Mask',
46
+ label: 'resource',
47
+ description: 'Image resource id when the mask type is Img or Sprite.',
48
+ editor: 'text',
49
+ })
34
50
  ], Mask$1.prototype, "resource", void 0);
35
51
  tslib.__decorate([
36
- inspectorDecorator.type('string')
52
+ inspectorDecorator.Field({
53
+ type: 'string',
54
+ group: 'Mask',
55
+ label: 'spriteName',
56
+ description: 'Atlas frame name when the mask type is Sprite.',
57
+ editor: 'text',
58
+ })
37
59
  ], Mask$1.prototype, "spriteName", void 0);
38
60
 
39
61
  const resourceKeySplit = pluginRenderer.RESOURCE_KEY_SPLIT;
@@ -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 {type } from '@combos-fun/inspector-decorator'\n\nexport enum MASK_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n Polygon = 'Polygon',\n Img = 'Img',\n Sprite = 'Sprite',\n}\n\nexport interface MaskParams {\n type: MASK_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n resource?: string;\n spriteName?: string;\n}\n\nexport default class Mask extends Component<MaskParams> {\n static componentName: string = 'Mask';\n _lastType: MaskParams['type'];\n // @decorators.IDEProp complex editing to be added later\n type: MaskParams['type'];\n // @decorators.IDEProp complex editing to be added later\n style?: MaskParams['style'] = {};\n @type('string') resource?: string = '';\n @type('string') spriteName?: string = '';\n\n init(obj?: MaskParams) {\n Object.assign(this, obj);\n }\n}\n","import { decorators, resource, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Renderer, RendererManager, ContainerManager, RendererSystem, 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","type","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\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 +1 @@
1
- "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),r=require("@combos-fun/inspector-decorator"),s=require("@combos-fun/plugin-renderer"),i=require("@combos-fun/renderer-adapter");exports.MASK_TYPE=void 0,function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(exports.MASK_TYPE||(exports.MASK_TYPE={}));let a=class extends t.Component{constructor(){super(...arguments),this.style={},this.resource="",this.spriteName=""}static{this.componentName="Mask"}init(e){Object.assign(this,e)}};e.__decorate([r.type("string")],a.prototype,"resource",void 0),e.__decorate([r.type("string")],a.prototype,"spriteName",void 0);const c=s.RESOURCE_KEY_SPLIT,o={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 o[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+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}};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 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,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { Component, OBSERVER_TYPE, resource, decorators } from '@combos-fun/engine';
3
- import { type } from '@combos-fun/inspector-decorator';
3
+ import { Field } from '@combos-fun/inspector-decorator';
4
4
  import { Renderer, RendererSystem, RESOURCE_KEY_SPLIT } from '@combos-fun/plugin-renderer';
5
5
  import { Graphics, Sprite } from '@combos-fun/renderer-adapter';
6
6
 
@@ -17,7 +17,7 @@ var MASK_TYPE$1;
17
17
  let Mask$1 = class Mask extends Component {
18
18
  constructor() {
19
19
  super(...arguments);
20
- // @decorators.IDEProp complex editing to be added later
20
+ // Complex nested geometry expose later if needed.
21
21
  this.style = {};
22
22
  this.resource = '';
23
23
  this.spriteName = '';
@@ -28,10 +28,32 @@ let Mask$1 = class Mask extends Component {
28
28
  }
29
29
  };
30
30
  __decorate([
31
- type('string')
31
+ Field({
32
+ type: 'string',
33
+ group: 'Mask',
34
+ label: 'type',
35
+ description: 'Mask shape kind.',
36
+ editor: 'enum',
37
+ enumOptions: ['Circle', 'Ellipse', 'Rect', 'RoundedRect', 'Polygon', 'Img', 'Sprite'],
38
+ })
39
+ ], Mask$1.prototype, "type", void 0);
40
+ __decorate([
41
+ Field({
42
+ type: 'string',
43
+ group: 'Mask',
44
+ label: 'resource',
45
+ description: 'Image resource id when the mask type is Img or Sprite.',
46
+ editor: 'text',
47
+ })
32
48
  ], Mask$1.prototype, "resource", void 0);
33
49
  __decorate([
34
- type('string')
50
+ Field({
51
+ type: 'string',
52
+ group: 'Mask',
53
+ label: 'spriteName',
54
+ description: 'Atlas frame name when the mask type is Sprite.',
55
+ editor: 'text',
56
+ })
35
57
  ], Mask$1.prototype, "spriteName", void 0);
36
58
 
37
59
  const resourceKeySplit = RESOURCE_KEY_SPLIT;
@@ -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 {type } from '@combos-fun/inspector-decorator'\n\nexport enum MASK_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n Polygon = 'Polygon',\n Img = 'Img',\n Sprite = 'Sprite',\n}\n\nexport interface MaskParams {\n type: MASK_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n resource?: string;\n spriteName?: string;\n}\n\nexport default class Mask extends Component<MaskParams> {\n static componentName: string = 'Mask';\n _lastType: MaskParams['type'];\n // @decorators.IDEProp complex editing to be added later\n type: MaskParams['type'];\n // @decorators.IDEProp complex editing to be added later\n style?: MaskParams['style'] = {};\n @type('string') resource?: string = '';\n @type('string') spriteName?: string = '';\n\n init(obj?: MaskParams) {\n Object.assign(this, obj);\n }\n}\n","import { decorators, resource, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Renderer, RendererManager, ContainerManager, RendererSystem, 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":";;;;;;IAGYA;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,WAAS,KAATA,WAAS,GAAA,EAAA,CAAA,CAAA;aAwBP,MAAO,IAAK,SAAQ,SAAqB,CAAA;AAAvD,IAAA,WAAA,GAAA;;;QAME,IAAA,CAAA,KAAK,GAAyB,EAAE;QAChB,IAAA,CAAA,QAAQ,GAAY,EAAE;QACtB,IAAA,CAAA,UAAU,GAAY,EAAE;IAK1C;aAZS,IAAA,CAAA,aAAa,GAAW,MAAX,CAAkB;AAStC,IAAA,IAAI,CAAC,GAAgB,EAAA;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;IAC1B;;AALgB,UAAA,CAAA;IAAf,IAAI,CAAC,QAAQ;AAAyB,CAAA,EAAAC,MAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AACvB,UAAA,CAAA;IAAf,IAAI,CAAC,QAAQ;AAA2B,CAAA,EAAAA,MAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;;AC7B3C,MAAM,gBAAgB,GAAG,kBAAkB;AAE3C,MAAM,mBAAmB,GAAG;AAC1B,IAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;IACtC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;IACnC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACpD,OAAO,EAAE,CAAC,OAAO,CAAC;CACnB;AACD,MAAM,mBAAmB,GAAG;AAC1B,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,WAAW,EAAE,iBAAiB;AAC9B,IAAA,OAAO,EAAE,aAAa;CACvB;AAED,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,SAAQ,QAAQ,CAAA;AAA3B,IAAA,WAAA,GAAA;;QAEb,IAAA,CAAA,IAAI,GAAW,MAAM;QACrB,IAAA,CAAA,YAAY,GAAoC,EAAE;QAClD,IAAA,CAAA,eAAe,GAAyC,EAAE;IAgK5D;aAnKS,IAAA,CAAA,UAAU,GAAG,MAAH,CAAU;IAO3B,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,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,KAAK,aAAa,CAAC,GAAG;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACjB;YACF,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACpB;YACF,KAAK,aAAa,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,IAAI,QAAQ,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,QAAQ,EAAE,SAAS,EAAA;QACtB,MAAM,MAAM,GAAG,EAAE;QACjB,KAAK,MAAM,GAAG,IAAI,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACrD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC;AACA,QAAA,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,QAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAExD,QAAQ,CAAC,OAAO,EAAE;IACpB;AACA,IAAA,YAAY,CAAC,SAAwB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAIC,MAAY,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,MAAM,QAAQ,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;;AAnKmB,IAAI,GAAA,UAAA,CAAA;IAHxB,UAAU,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,CAoKxB;mBApKoB,IAAI;;;;"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combos-fun/plugin-renderer-mask",
3
- "version": "0.0.33",
3
+ "version": "0.0.35",
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.33",
41
- "@combos-fun/renderer-adapter": "0.0.33",
42
- "@combos-fun/engine": "0.0.33",
43
- "@combos-fun/inspector-decorator": "0.0.33"
40
+ "@combos-fun/plugin-renderer": "0.0.35",
41
+ "@combos-fun/renderer-adapter": "0.0.35",
42
+ "@combos-fun/engine": "0.0.35",
43
+ "@combos-fun/inspector-decorator": "0.0.35"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "node ../../scripts/build-package.mjs"