@combos-fun/plugin-renderer-sprite
Advanced tools
@@ -31,3 +31,3 @@ 'use strict'; | ||
| const resourceKeySplit = '_s|r|c_'; // Notice: This key be used in ninepatch system. | ||
| const resourceKeySplit = pluginRenderer.RESOURCE_KEY_SPLIT; | ||
| engine.resource.registerInstance(engine.RESOURCE_TYPE.SPRITE, async ({ name, data }) => { | ||
@@ -34,0 +34,0 @@ const textureObj = data.json; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"plugin-renderer-sprite.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 interface SpriteParams {\n resource: string;\n spriteName: string;\n}\n\nexport default class Sprite extends Component<SpriteParams> {\n static componentName: string = 'Sprite';\n @type('string') resource: string = '';\n @type('string') spriteName: string = '';\n init(obj?: SpriteParams) {\n if (obj && obj.resource) {\n this.resource = obj.resource;\n this.spriteName = obj.spriteName;\n }\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, RESOURCE_TYPE, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\n\nimport SpriteComponent from './component';\nimport { Sprite as SpriteEngine } from '@combos-fun/renderer-adapter';\nimport { Spritesheet, Texture } from 'pixi.js';\n\nconst resourceKeySplit = '_s|r|c_'; // Notice: This key be used in ninepatch system.\n\nresource.registerInstance(RESOURCE_TYPE.SPRITE, async ({ name, data }) => {\n const textureObj = data.json;\n const texture = Texture.from(data.image);\n const frames = textureObj.frames || {};\n const animations = textureObj.animations || {};\n const newFrames = {};\n for (const key in frames) {\n const newKey = name + resourceKeySplit + key;\n newFrames[newKey] = frames[key];\n }\n for (const key in animations) {\n const spriteList = [];\n if (animations[key] && animations[key].length >= 0) {\n for (const spriteName of animations[key]) {\n const newSpriteName = name + resourceKeySplit + spriteName;\n spriteList.push(newSpriteName);\n }\n }\n animations[key] = spriteList;\n }\n textureObj.frames = newFrames;\n const spriteSheet = new Spritesheet(texture, textureObj);\n const textures = await spriteSheet.parse();\n return textures;\n});\n\nresource.registerDestroy(RESOURCE_TYPE.SPRITE, ({ instance }) => {\n if (!instance) return;\n for (const key in instance) {\n instance[key].destroy(true);\n }\n});\n\n@decorators.componentObserver({\n Sprite: ['spriteName'],\n})\nexport default class Sprite extends Renderer {\n static systemName = 'Sprite';\n name: string = 'Sprite';\n sprites: { [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(gameObject: GameObject) {\n const { width, height } = gameObject.transform.size;\n if (this.sprites[gameObject.id]) {\n this.sprites[gameObject.id].sprite.width = width;\n this.sprites[gameObject.id].sprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'Sprite') {\n const gameObjectId = changed.gameObject.id;\n const component: SpriteComponent = changed.component as SpriteComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new SpriteEngine(null);\n this.sprites[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n sprite.image = instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n this.sprites[changed.gameObject.id].image =\n instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(gameObjectId);\n const sprite = this.sprites[changed.gameObject.id];\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.sprites[changed.gameObject.id];\n }\n }\n }\n}\n"],"names":["Component","__decorate","type","Sprite","resource","RESOURCE_TYPE","Texture","Spritesheet","Renderer","RendererSystem","OBSERVER_TYPE","SpriteEngine","decorators"],"mappings":"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"} | ||
| {"version":3,"file":"plugin-renderer-sprite.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 interface SpriteParams {\n resource: string;\n spriteName: string;\n}\n\nexport default class Sprite extends Component<SpriteParams> {\n static componentName: string = 'Sprite';\n @type('string') resource: string = '';\n @type('string') spriteName: string = '';\n init(obj?: SpriteParams) {\n if (obj && obj.resource) {\n this.resource = obj.resource;\n this.spriteName = obj.spriteName;\n }\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, RESOURCE_TYPE, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer, RESOURCE_KEY_SPLIT } from '@combos-fun/plugin-renderer';\n\nimport SpriteComponent from './component';\nimport { Sprite as SpriteEngine } from '@combos-fun/renderer-adapter';\nimport { Spritesheet, Texture } from 'pixi.js';\n\nconst resourceKeySplit = RESOURCE_KEY_SPLIT;\n\nresource.registerInstance(RESOURCE_TYPE.SPRITE, async ({ name, data }) => {\n const textureObj = data.json;\n const texture = Texture.from(data.image);\n const frames = textureObj.frames || {};\n const animations = textureObj.animations || {};\n const newFrames = {};\n for (const key in frames) {\n const newKey = name + resourceKeySplit + key;\n newFrames[newKey] = frames[key];\n }\n for (const key in animations) {\n const spriteList = [];\n if (animations[key] && animations[key].length >= 0) {\n for (const spriteName of animations[key]) {\n const newSpriteName = name + resourceKeySplit + spriteName;\n spriteList.push(newSpriteName);\n }\n }\n animations[key] = spriteList;\n }\n textureObj.frames = newFrames;\n const spriteSheet = new Spritesheet(texture, textureObj);\n const textures = await spriteSheet.parse();\n return textures;\n});\n\nresource.registerDestroy(RESOURCE_TYPE.SPRITE, ({ instance }) => {\n if (!instance) return;\n for (const key in instance) {\n instance[key].destroy(true);\n }\n});\n\n@decorators.componentObserver({\n Sprite: ['spriteName'],\n})\nexport default class Sprite extends Renderer {\n static systemName = 'Sprite';\n name: string = 'Sprite';\n sprites: { [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(gameObject: GameObject) {\n const { width, height } = gameObject.transform.size;\n if (this.sprites[gameObject.id]) {\n this.sprites[gameObject.id].sprite.width = width;\n this.sprites[gameObject.id].sprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'Sprite') {\n const gameObjectId = changed.gameObject.id;\n const component: SpriteComponent = changed.component as SpriteComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new SpriteEngine(null);\n this.sprites[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n sprite.image = instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n this.sprites[changed.gameObject.id].image =\n instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(gameObjectId);\n const sprite = this.sprites[changed.gameObject.id];\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.sprites[changed.gameObject.id];\n }\n }\n }\n}\n"],"names":["Component","__decorate","type","Sprite","RESOURCE_KEY_SPLIT","resource","RESOURCE_TYPE","Texture","Spritesheet","Renderer","RendererSystem","OBSERVER_TYPE","SpriteEngine","decorators"],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| "use strict";var e=require("tslib"),r=require("@combos-fun/engine"),t=require("@combos-fun/inspector-decorator"),s=require("@combos-fun/plugin-renderer"),i=require("@combos-fun/renderer-adapter"),n=require("pixi.js");let o=class extends r.Component{constructor(){super(...arguments),this.resource="",this.spriteName=""}static{this.componentName="Sprite"}init(e){e&&e.resource&&(this.resource=e.resource,this.spriteName=e.spriteName)}};e.__decorate([t.type("string")],o.prototype,"resource",void 0),e.__decorate([t.type("string")],o.prototype,"spriteName",void 0);const c="_s|r|c_";r.resource.registerInstance(r.RESOURCE_TYPE.SPRITE,async({name:e,data:r})=>{const t=r.json,s=n.Texture.from(r.image),i=t.frames||{},o=t.animations||{},a={};for(const r in i){a[e+c+r]=i[r]}for(const r in o){const t=[];if(o[r]&&o[r].length>=0)for(const s of o[r]){const r=e+c+s;t.push(r)}o[r]=t}t.frames=a;const p=new n.Spritesheet(s,t);return await p.parse()}),r.resource.registerDestroy(r.RESOURCE_TYPE.SPRITE,({instance:e})=>{if(e)for(const r in e)e[r].destroy(!0)});let a=class extends s.Renderer{constructor(){super(...arguments),this.name="Sprite",this.sprites={}}static{this.systemName="Sprite"}init(){this.renderSystem=this.game.getSystem(s.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const{width:r,height:t}=e.transform.size;this.sprites[e.id]&&(this.sprites[e.id].sprite.width=r,this.sprites[e.id].sprite.height=t)}async componentChanged(e){if("Sprite"===e.componentName){const t=e.gameObject.id,s=e.component;if(e.type===r.OBSERVER_TYPE.ADD){const n=new i.Sprite(null);this.sprites[e.gameObject.id]=n,this.containerManager.getContainer(e.gameObject.id).addChildAt(n.sprite,0);const o=this.increaseAsyncId(t),{instance:a}=await r.resource.getResource(s.resource);if(!this.validateAsyncId(t,o))return;if(!a)return void console.error(`GameObject:${e.gameObject.name}'s Sprite resource load error`);n.image=a[s.resource+c+s.spriteName]}else if(e.type===r.OBSERVER_TYPE.CHANGE){const i=this.increaseAsyncId(t),{instance:n}=await r.resource.getResource(s.resource);if(!this.validateAsyncId(t,i))return;if(!n)return void console.error(`GameObject:${e.gameObject.name}'s Sprite resource load error`);this.sprites[e.gameObject.id].image=n[s.resource+c+s.spriteName]}else if(e.type===r.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(t);const r=this.sprites[e.gameObject.id];this.containerManager.getContainer(e.gameObject.id).removeChild(r.sprite),r.sprite.destroy({children:!0}),delete this.sprites[e.gameObject.id]}}}};a=e.__decorate([r.decorators.componentObserver({Sprite:["spriteName"]})],a);var p=a;exports.Sprite=o,exports.SpriteSystem=p; | ||
| "use strict";var e=require("tslib"),r=require("@combos-fun/engine"),t=require("@combos-fun/inspector-decorator"),s=require("@combos-fun/plugin-renderer"),i=require("@combos-fun/renderer-adapter"),n=require("pixi.js");let o=class extends r.Component{constructor(){super(...arguments),this.resource="",this.spriteName=""}static{this.componentName="Sprite"}init(e){e&&e.resource&&(this.resource=e.resource,this.spriteName=e.spriteName)}};e.__decorate([t.type("string")],o.prototype,"resource",void 0),e.__decorate([t.type("string")],o.prototype,"spriteName",void 0);const c=s.RESOURCE_KEY_SPLIT;r.resource.registerInstance(r.RESOURCE_TYPE.SPRITE,async({name:e,data:r})=>{const t=r.json,s=n.Texture.from(r.image),i=t.frames||{},o=t.animations||{},a={};for(const r in i){a[e+c+r]=i[r]}for(const r in o){const t=[];if(o[r]&&o[r].length>=0)for(const s of o[r]){const r=e+c+s;t.push(r)}o[r]=t}t.frames=a;const p=new n.Spritesheet(s,t);return await p.parse()}),r.resource.registerDestroy(r.RESOURCE_TYPE.SPRITE,({instance:e})=>{if(e)for(const r in e)e[r].destroy(!0)});let a=class extends s.Renderer{constructor(){super(...arguments),this.name="Sprite",this.sprites={}}static{this.systemName="Sprite"}init(){this.renderSystem=this.game.getSystem(s.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const{width:r,height:t}=e.transform.size;this.sprites[e.id]&&(this.sprites[e.id].sprite.width=r,this.sprites[e.id].sprite.height=t)}async componentChanged(e){if("Sprite"===e.componentName){const t=e.gameObject.id,s=e.component;if(e.type===r.OBSERVER_TYPE.ADD){const n=new i.Sprite(null);this.sprites[e.gameObject.id]=n,this.containerManager.getContainer(e.gameObject.id).addChildAt(n.sprite,0);const o=this.increaseAsyncId(t),{instance:a}=await r.resource.getResource(s.resource);if(!this.validateAsyncId(t,o))return;if(!a)return void console.error(`GameObject:${e.gameObject.name}'s Sprite resource load error`);n.image=a[s.resource+c+s.spriteName]}else if(e.type===r.OBSERVER_TYPE.CHANGE){const i=this.increaseAsyncId(t),{instance:n}=await r.resource.getResource(s.resource);if(!this.validateAsyncId(t,i))return;if(!n)return void console.error(`GameObject:${e.gameObject.name}'s Sprite resource load error`);this.sprites[e.gameObject.id].image=n[s.resource+c+s.spriteName]}else if(e.type===r.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(t);const r=this.sprites[e.gameObject.id];this.containerManager.getContainer(e.gameObject.id).removeChild(r.sprite),r.sprite.destroy({children:!0}),delete this.sprites[e.gameObject.id]}}}};a=e.__decorate([r.decorators.componentObserver({Sprite:["spriteName"]})],a);var p=a;exports.Sprite=o,exports.SpriteSystem=p; |
| import { __decorate } from 'tslib'; | ||
| import { Component, resource, RESOURCE_TYPE, OBSERVER_TYPE, decorators } from '@combos-fun/engine'; | ||
| import { type } from '@combos-fun/inspector-decorator'; | ||
| import { Renderer, RendererSystem } from '@combos-fun/plugin-renderer'; | ||
| import { Renderer, RendererSystem, RESOURCE_KEY_SPLIT } from '@combos-fun/plugin-renderer'; | ||
| import { Sprite as Sprite$2 } from '@combos-fun/renderer-adapter'; | ||
@@ -29,3 +29,3 @@ import { Texture, Spritesheet } from 'pixi.js'; | ||
| const resourceKeySplit = '_s|r|c_'; // Notice: This key be used in ninepatch system. | ||
| const resourceKeySplit = RESOURCE_KEY_SPLIT; | ||
| resource.registerInstance(RESOURCE_TYPE.SPRITE, async ({ name, data }) => { | ||
@@ -32,0 +32,0 @@ const textureObj = data.json; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"plugin-renderer-sprite.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 interface SpriteParams {\n resource: string;\n spriteName: string;\n}\n\nexport default class Sprite extends Component<SpriteParams> {\n static componentName: string = 'Sprite';\n @type('string') resource: string = '';\n @type('string') spriteName: string = '';\n init(obj?: SpriteParams) {\n if (obj && obj.resource) {\n this.resource = obj.resource;\n this.spriteName = obj.spriteName;\n }\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, RESOURCE_TYPE, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\n\nimport SpriteComponent from './component';\nimport { Sprite as SpriteEngine } from '@combos-fun/renderer-adapter';\nimport { Spritesheet, Texture } from 'pixi.js';\n\nconst resourceKeySplit = '_s|r|c_'; // Notice: This key be used in ninepatch system.\n\nresource.registerInstance(RESOURCE_TYPE.SPRITE, async ({ name, data }) => {\n const textureObj = data.json;\n const texture = Texture.from(data.image);\n const frames = textureObj.frames || {};\n const animations = textureObj.animations || {};\n const newFrames = {};\n for (const key in frames) {\n const newKey = name + resourceKeySplit + key;\n newFrames[newKey] = frames[key];\n }\n for (const key in animations) {\n const spriteList = [];\n if (animations[key] && animations[key].length >= 0) {\n for (const spriteName of animations[key]) {\n const newSpriteName = name + resourceKeySplit + spriteName;\n spriteList.push(newSpriteName);\n }\n }\n animations[key] = spriteList;\n }\n textureObj.frames = newFrames;\n const spriteSheet = new Spritesheet(texture, textureObj);\n const textures = await spriteSheet.parse();\n return textures;\n});\n\nresource.registerDestroy(RESOURCE_TYPE.SPRITE, ({ instance }) => {\n if (!instance) return;\n for (const key in instance) {\n instance[key].destroy(true);\n }\n});\n\n@decorators.componentObserver({\n Sprite: ['spriteName'],\n})\nexport default class Sprite extends Renderer {\n static systemName = 'Sprite';\n name: string = 'Sprite';\n sprites: { [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(gameObject: GameObject) {\n const { width, height } = gameObject.transform.size;\n if (this.sprites[gameObject.id]) {\n this.sprites[gameObject.id].sprite.width = width;\n this.sprites[gameObject.id].sprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'Sprite') {\n const gameObjectId = changed.gameObject.id;\n const component: SpriteComponent = changed.component as SpriteComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new SpriteEngine(null);\n this.sprites[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n sprite.image = instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n this.sprites[changed.gameObject.id].image =\n instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(gameObjectId);\n const sprite = this.sprites[changed.gameObject.id];\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.sprites[changed.gameObject.id];\n }\n }\n }\n}\n"],"names":["Sprite","SpriteEngine"],"mappings":"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"} | ||
| {"version":3,"file":"plugin-renderer-sprite.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 interface SpriteParams {\n resource: string;\n spriteName: string;\n}\n\nexport default class Sprite extends Component<SpriteParams> {\n static componentName: string = 'Sprite';\n @type('string') resource: string = '';\n @type('string') spriteName: string = '';\n init(obj?: SpriteParams) {\n if (obj && obj.resource) {\n this.resource = obj.resource;\n this.spriteName = obj.spriteName;\n }\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, RESOURCE_TYPE, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer, RESOURCE_KEY_SPLIT } from '@combos-fun/plugin-renderer';\n\nimport SpriteComponent from './component';\nimport { Sprite as SpriteEngine } from '@combos-fun/renderer-adapter';\nimport { Spritesheet, Texture } from 'pixi.js';\n\nconst resourceKeySplit = RESOURCE_KEY_SPLIT;\n\nresource.registerInstance(RESOURCE_TYPE.SPRITE, async ({ name, data }) => {\n const textureObj = data.json;\n const texture = Texture.from(data.image);\n const frames = textureObj.frames || {};\n const animations = textureObj.animations || {};\n const newFrames = {};\n for (const key in frames) {\n const newKey = name + resourceKeySplit + key;\n newFrames[newKey] = frames[key];\n }\n for (const key in animations) {\n const spriteList = [];\n if (animations[key] && animations[key].length >= 0) {\n for (const spriteName of animations[key]) {\n const newSpriteName = name + resourceKeySplit + spriteName;\n spriteList.push(newSpriteName);\n }\n }\n animations[key] = spriteList;\n }\n textureObj.frames = newFrames;\n const spriteSheet = new Spritesheet(texture, textureObj);\n const textures = await spriteSheet.parse();\n return textures;\n});\n\nresource.registerDestroy(RESOURCE_TYPE.SPRITE, ({ instance }) => {\n if (!instance) return;\n for (const key in instance) {\n instance[key].destroy(true);\n }\n});\n\n@decorators.componentObserver({\n Sprite: ['spriteName'],\n})\nexport default class Sprite extends Renderer {\n static systemName = 'Sprite';\n name: string = 'Sprite';\n sprites: { [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(gameObject: GameObject) {\n const { width, height } = gameObject.transform.size;\n if (this.sprites[gameObject.id]) {\n this.sprites[gameObject.id].sprite.width = width;\n this.sprites[gameObject.id].sprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'Sprite') {\n const gameObjectId = changed.gameObject.id;\n const component: SpriteComponent = changed.component as SpriteComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new SpriteEngine(null);\n this.sprites[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n sprite.image = instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Sprite resource load error`);\n return;\n }\n this.sprites[changed.gameObject.id].image =\n instance[component.resource + resourceKeySplit + component.spriteName];\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(gameObjectId);\n const sprite = this.sprites[changed.gameObject.id];\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.sprites[changed.gameObject.id];\n }\n }\n }\n}\n"],"names":["Sprite","SpriteEngine"],"mappings":"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"} |
+5
-5
| { | ||
| "name": "@combos-fun/plugin-renderer-sprite", | ||
| "version": "0.0.11", | ||
| "version": "0.0.12", | ||
| "description": "Sprite atlas rendering", | ||
@@ -39,6 +39,6 @@ "main": "index.js", | ||
| "pixi.js": "^8.18.1", | ||
| "@combos-fun/plugin-renderer": "0.0.11", | ||
| "@combos-fun/renderer-adapter": "0.0.11", | ||
| "@combos-fun/engine": "0.0.11", | ||
| "@combos-fun/inspector-decorator": "0.0.11" | ||
| "@combos-fun/renderer-adapter": "0.0.12", | ||
| "@combos-fun/plugin-renderer": "0.0.12", | ||
| "@combos-fun/engine": "0.0.12", | ||
| "@combos-fun/inspector-decorator": "0.0.12" | ||
| }, | ||
@@ -45,0 +45,0 @@ "scripts": { |
37222
-0.16%+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
Updated