@combos-fun/plugin-renderer-img 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/plugin-renderer-img.cjs.js +112 -0
- package/dist/plugin-renderer-img.cjs.js.map +1 -0
- package/dist/plugin-renderer-img.cjs.prod.js +1 -0
- package/dist/plugin-renderer-img.d.ts +30 -0
- package/dist/plugin-renderer-img.esm.js +109 -0
- package/dist/plugin-renderer-img.esm.js.map +1 -0
- package/index.js +7 -0
- package/package.json +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var inspectorDecorator = require('@combos-fun/inspector-decorator');
|
|
5
|
+
var engine = require('@combos-fun/engine');
|
|
6
|
+
var pluginRenderer = require('@combos-fun/plugin-renderer');
|
|
7
|
+
var rendererAdapter = require('@combos-fun/renderer-adapter');
|
|
8
|
+
var pixi_js = require('pixi.js');
|
|
9
|
+
|
|
10
|
+
let Img$1 = class Img extends engine.Component {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.resource = '';
|
|
14
|
+
}
|
|
15
|
+
static { this.componentName = 'Img'; }
|
|
16
|
+
init(obj) {
|
|
17
|
+
if (obj && obj.resource) {
|
|
18
|
+
this.resource = obj.resource;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
tslib.__decorate([
|
|
23
|
+
inspectorDecorator.type('string')
|
|
24
|
+
], Img$1.prototype, "resource", void 0);
|
|
25
|
+
|
|
26
|
+
engine.resource.registerInstance(engine.RESOURCE_TYPE.IMAGE, ({ data = {} }) => {
|
|
27
|
+
const { image } = data;
|
|
28
|
+
if (image) {
|
|
29
|
+
const texture = pixi_js.Texture.from(image);
|
|
30
|
+
return texture;
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
});
|
|
34
|
+
engine.resource.registerDestroy(engine.RESOURCE_TYPE.IMAGE, ({ instance }) => {
|
|
35
|
+
if (instance) {
|
|
36
|
+
instance.destroy(true);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
let Img = class Img extends pluginRenderer.Renderer {
|
|
40
|
+
constructor() {
|
|
41
|
+
super(...arguments);
|
|
42
|
+
this.name = 'Img';
|
|
43
|
+
this.imgs = {};
|
|
44
|
+
}
|
|
45
|
+
static { this.systemName = 'Img'; }
|
|
46
|
+
init() {
|
|
47
|
+
this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
|
|
48
|
+
this.renderSystem.rendererManager.register(this);
|
|
49
|
+
}
|
|
50
|
+
rendererUpdate(gameObject) {
|
|
51
|
+
const { width, height } = gameObject.transform.size;
|
|
52
|
+
if (this.imgs[gameObject.id]) {
|
|
53
|
+
this.imgs[gameObject.id].sprite.width = width;
|
|
54
|
+
this.imgs[gameObject.id].sprite.height = height;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async componentChanged(changed) {
|
|
58
|
+
if (changed.componentName === 'Img') {
|
|
59
|
+
const component = changed.component;
|
|
60
|
+
if (changed.type === engine.OBSERVER_TYPE.ADD) {
|
|
61
|
+
const sprite = new rendererAdapter.Sprite(null);
|
|
62
|
+
this.imgs[changed.gameObject.id] = sprite;
|
|
63
|
+
this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);
|
|
64
|
+
const asyncId = this.increaseAsyncId(changed.gameObject.id);
|
|
65
|
+
const { instance } = await engine.resource.getResource(component.resource);
|
|
66
|
+
if (!this.validateAsyncId(changed.gameObject.id, asyncId))
|
|
67
|
+
return;
|
|
68
|
+
if (!instance) {
|
|
69
|
+
console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);
|
|
70
|
+
}
|
|
71
|
+
this.imgs[changed.gameObject.id].image = instance;
|
|
72
|
+
}
|
|
73
|
+
else if (changed.type === engine.OBSERVER_TYPE.CHANGE) {
|
|
74
|
+
const asyncId = this.increaseAsyncId(changed.gameObject.id);
|
|
75
|
+
const { instance } = await engine.resource.getResource(component.resource);
|
|
76
|
+
if (!this.validateAsyncId(changed.gameObject.id, asyncId))
|
|
77
|
+
return;
|
|
78
|
+
if (!instance) {
|
|
79
|
+
console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);
|
|
80
|
+
}
|
|
81
|
+
this.imgs[changed.gameObject.id].image = instance;
|
|
82
|
+
}
|
|
83
|
+
else if (changed.type === engine.OBSERVER_TYPE.REMOVE) {
|
|
84
|
+
this.increaseAsyncId(changed.gameObject.id);
|
|
85
|
+
const sprite = this.imgs[changed.gameObject.id];
|
|
86
|
+
if (!sprite)
|
|
87
|
+
return;
|
|
88
|
+
this.containerManager?.getContainer(changed.gameObject.id)?.removeChild(sprite.sprite);
|
|
89
|
+
sprite.sprite.destroy({ children: true });
|
|
90
|
+
delete this.imgs[changed.gameObject.id];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
destroy() {
|
|
95
|
+
for (const key in this.imgs) {
|
|
96
|
+
const sprite = this.imgs[key];
|
|
97
|
+
this.containerManager?.getContainer(parseInt(key))?.removeChild(sprite.sprite);
|
|
98
|
+
sprite.sprite.destroy({ children: true });
|
|
99
|
+
delete this.imgs[key];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
Img = tslib.__decorate([
|
|
104
|
+
engine.decorators.componentObserver({
|
|
105
|
+
Img: [{ prop: ['resource'], deep: false }],
|
|
106
|
+
})
|
|
107
|
+
], Img);
|
|
108
|
+
var Img_default = Img;
|
|
109
|
+
|
|
110
|
+
exports.Img = Img$1;
|
|
111
|
+
exports.ImgSystem = Img_default;
|
|
112
|
+
//# sourceMappingURL=plugin-renderer-img.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-renderer-img.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { type } from '@combos-fun/inspector-decorator';\nimport { Component } from '@combos-fun/engine';\n\nexport interface ImgParams {\n resource: string;\n}\n\nexport default class Img extends Component<ImgParams> {\n static componentName: string = 'Img';\n @type('string') resource: string = '';\n init(obj?: ImgParams) {\n if (obj && obj.resource) {\n this.resource = obj.resource;\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';\nimport { Sprite } from '@combos-fun/renderer-adapter';\nimport { Texture } from 'pixi.js';\nimport ImgComponent from './component';\n\nresource.registerInstance(RESOURCE_TYPE.IMAGE, ({ data = {} }) => {\n const { image } = data;\n if (image) {\n const texture = Texture.from(image);\n return texture;\n }\n return;\n});\nresource.registerDestroy(RESOURCE_TYPE.IMAGE, ({ instance }) => {\n if (instance) {\n (instance as Texture).destroy(true);\n }\n});\n\n@decorators.componentObserver({\n Img: [{ prop: ['resource'], deep: false }],\n})\nexport default class Img extends Renderer {\n static systemName = 'Img';\n name: string = 'Img';\n imgs: { [propName: number]: Sprite } = {};\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.imgs[gameObject.id]) {\n this.imgs[gameObject.id].sprite.width = width;\n this.imgs[gameObject.id].sprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'Img') {\n const component: ImgComponent = changed.component as ImgComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new Sprite(null);\n this.imgs[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);\n const asyncId = this.increaseAsyncId(changed.gameObject.id);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(changed.gameObject.id, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);\n }\n this.imgs[changed.gameObject.id].image = instance;\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n const asyncId = this.increaseAsyncId(changed.gameObject.id);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(changed.gameObject.id, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);\n }\n this.imgs[changed.gameObject.id].image = instance;\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(changed.gameObject.id);\n const sprite = this.imgs[changed.gameObject.id];\n if (!sprite) return;\n this.containerManager?.getContainer(changed.gameObject.id)?.removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.imgs[changed.gameObject.id];\n }\n }\n }\n destroy(): void {\n for (const key in this.imgs) {\n const sprite = this.imgs[key]\n this.containerManager?.getContainer(parseInt(key))?.removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.imgs[key];\n }\n }\n}\n"],"names":["Component","__decorate","type","Img","resource","RESOURCE_TYPE","Texture","Renderer","RendererSystem","OBSERVER_TYPE","Sprite","decorators"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("tslib"),t=require("@combos-fun/inspector-decorator"),r=require("@combos-fun/engine"),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=""}static{this.componentName="Img"}init(e){e&&e.resource&&(this.resource=e.resource)}};e.__decorate([t.type("string")],o.prototype,"resource",void 0),r.resource.registerInstance(r.RESOURCE_TYPE.IMAGE,({data:e={}})=>{const{image:t}=e;if(t){return n.Texture.from(t)}}),r.resource.registerDestroy(r.RESOURCE_TYPE.IMAGE,({instance:e})=>{e&&e.destroy(!0)});let c=class extends s.Renderer{constructor(){super(...arguments),this.name="Img",this.imgs={}}static{this.systemName="Img"}init(){this.renderSystem=this.game.getSystem(s.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const{width:t,height:r}=e.transform.size;this.imgs[e.id]&&(this.imgs[e.id].sprite.width=t,this.imgs[e.id].sprite.height=r)}async componentChanged(e){if("Img"===e.componentName){const t=e.component;if(e.type===r.OBSERVER_TYPE.ADD){const s=new i.Sprite(null);this.imgs[e.gameObject.id]=s,this.containerManager.getContainer(e.gameObject.id).addChildAt(s.sprite,0);const n=this.increaseAsyncId(e.gameObject.id),{instance:o}=await r.resource.getResource(t.resource);if(!this.validateAsyncId(e.gameObject.id,n))return;o||console.error(`GameObject:${e.gameObject.name}'s Img resource load error`),this.imgs[e.gameObject.id].image=o}else if(e.type===r.OBSERVER_TYPE.CHANGE){const s=this.increaseAsyncId(e.gameObject.id),{instance:i}=await r.resource.getResource(t.resource);if(!this.validateAsyncId(e.gameObject.id,s))return;i||console.error(`GameObject:${e.gameObject.name}'s Img resource load error`),this.imgs[e.gameObject.id].image=i}else if(e.type===r.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(e.gameObject.id);const t=this.imgs[e.gameObject.id];if(!t)return;this.containerManager?.getContainer(e.gameObject.id)?.removeChild(t.sprite),t.sprite.destroy({children:!0}),delete this.imgs[e.gameObject.id]}}}destroy(){for(const e in this.imgs){const t=this.imgs[e];this.containerManager?.getContainer(parseInt(e))?.removeChild(t.sprite),t.sprite.destroy({children:!0}),delete this.imgs[e]}}};c=e.__decorate([r.decorators.componentObserver({Img:[{prop:["resource"],deep:!1}]})],c);var a=c;exports.Img=o,exports.ImgSystem=a;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component, GameObject, ComponentChanged } from '@combos-fun/engine';
|
|
2
|
+
import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';
|
|
3
|
+
import { Sprite } from '@combos-fun/renderer-adapter';
|
|
4
|
+
|
|
5
|
+
interface ImgParams {
|
|
6
|
+
resource: string;
|
|
7
|
+
}
|
|
8
|
+
declare class Img$1 extends Component<ImgParams> {
|
|
9
|
+
static componentName: string;
|
|
10
|
+
resource: string;
|
|
11
|
+
init(obj?: ImgParams): void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare class Img extends Renderer {
|
|
15
|
+
static systemName: string;
|
|
16
|
+
name: string;
|
|
17
|
+
imgs: {
|
|
18
|
+
[propName: number]: Sprite;
|
|
19
|
+
};
|
|
20
|
+
renderSystem: RendererSystem;
|
|
21
|
+
rendererManager: RendererManager;
|
|
22
|
+
containerManager: ContainerManager;
|
|
23
|
+
init(): void;
|
|
24
|
+
rendererUpdate(gameObject: GameObject): void;
|
|
25
|
+
componentChanged(changed: ComponentChanged): Promise<void>;
|
|
26
|
+
destroy(): void;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { Img$1 as Img, Img as ImgSystem };
|
|
30
|
+
export type { ImgParams };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
|
+
import { type } from '@combos-fun/inspector-decorator';
|
|
3
|
+
import { Component, resource, RESOURCE_TYPE, OBSERVER_TYPE, decorators } from '@combos-fun/engine';
|
|
4
|
+
import { Renderer, RendererSystem } from '@combos-fun/plugin-renderer';
|
|
5
|
+
import { Sprite } from '@combos-fun/renderer-adapter';
|
|
6
|
+
import { Texture } from 'pixi.js';
|
|
7
|
+
|
|
8
|
+
let Img$1 = class Img extends Component {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.resource = '';
|
|
12
|
+
}
|
|
13
|
+
static { this.componentName = 'Img'; }
|
|
14
|
+
init(obj) {
|
|
15
|
+
if (obj && obj.resource) {
|
|
16
|
+
this.resource = obj.resource;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
__decorate([
|
|
21
|
+
type('string')
|
|
22
|
+
], Img$1.prototype, "resource", void 0);
|
|
23
|
+
|
|
24
|
+
resource.registerInstance(RESOURCE_TYPE.IMAGE, ({ data = {} }) => {
|
|
25
|
+
const { image } = data;
|
|
26
|
+
if (image) {
|
|
27
|
+
const texture = Texture.from(image);
|
|
28
|
+
return texture;
|
|
29
|
+
}
|
|
30
|
+
return;
|
|
31
|
+
});
|
|
32
|
+
resource.registerDestroy(RESOURCE_TYPE.IMAGE, ({ instance }) => {
|
|
33
|
+
if (instance) {
|
|
34
|
+
instance.destroy(true);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
let Img = class Img extends Renderer {
|
|
38
|
+
constructor() {
|
|
39
|
+
super(...arguments);
|
|
40
|
+
this.name = 'Img';
|
|
41
|
+
this.imgs = {};
|
|
42
|
+
}
|
|
43
|
+
static { this.systemName = 'Img'; }
|
|
44
|
+
init() {
|
|
45
|
+
this.renderSystem = this.game.getSystem(RendererSystem);
|
|
46
|
+
this.renderSystem.rendererManager.register(this);
|
|
47
|
+
}
|
|
48
|
+
rendererUpdate(gameObject) {
|
|
49
|
+
const { width, height } = gameObject.transform.size;
|
|
50
|
+
if (this.imgs[gameObject.id]) {
|
|
51
|
+
this.imgs[gameObject.id].sprite.width = width;
|
|
52
|
+
this.imgs[gameObject.id].sprite.height = height;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async componentChanged(changed) {
|
|
56
|
+
if (changed.componentName === 'Img') {
|
|
57
|
+
const component = changed.component;
|
|
58
|
+
if (changed.type === OBSERVER_TYPE.ADD) {
|
|
59
|
+
const sprite = new Sprite(null);
|
|
60
|
+
this.imgs[changed.gameObject.id] = sprite;
|
|
61
|
+
this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);
|
|
62
|
+
const asyncId = this.increaseAsyncId(changed.gameObject.id);
|
|
63
|
+
const { instance } = await resource.getResource(component.resource);
|
|
64
|
+
if (!this.validateAsyncId(changed.gameObject.id, asyncId))
|
|
65
|
+
return;
|
|
66
|
+
if (!instance) {
|
|
67
|
+
console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);
|
|
68
|
+
}
|
|
69
|
+
this.imgs[changed.gameObject.id].image = instance;
|
|
70
|
+
}
|
|
71
|
+
else if (changed.type === OBSERVER_TYPE.CHANGE) {
|
|
72
|
+
const asyncId = this.increaseAsyncId(changed.gameObject.id);
|
|
73
|
+
const { instance } = await resource.getResource(component.resource);
|
|
74
|
+
if (!this.validateAsyncId(changed.gameObject.id, asyncId))
|
|
75
|
+
return;
|
|
76
|
+
if (!instance) {
|
|
77
|
+
console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);
|
|
78
|
+
}
|
|
79
|
+
this.imgs[changed.gameObject.id].image = instance;
|
|
80
|
+
}
|
|
81
|
+
else if (changed.type === OBSERVER_TYPE.REMOVE) {
|
|
82
|
+
this.increaseAsyncId(changed.gameObject.id);
|
|
83
|
+
const sprite = this.imgs[changed.gameObject.id];
|
|
84
|
+
if (!sprite)
|
|
85
|
+
return;
|
|
86
|
+
this.containerManager?.getContainer(changed.gameObject.id)?.removeChild(sprite.sprite);
|
|
87
|
+
sprite.sprite.destroy({ children: true });
|
|
88
|
+
delete this.imgs[changed.gameObject.id];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
destroy() {
|
|
93
|
+
for (const key in this.imgs) {
|
|
94
|
+
const sprite = this.imgs[key];
|
|
95
|
+
this.containerManager?.getContainer(parseInt(key))?.removeChild(sprite.sprite);
|
|
96
|
+
sprite.sprite.destroy({ children: true });
|
|
97
|
+
delete this.imgs[key];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
Img = __decorate([
|
|
102
|
+
decorators.componentObserver({
|
|
103
|
+
Img: [{ prop: ['resource'], deep: false }],
|
|
104
|
+
})
|
|
105
|
+
], Img);
|
|
106
|
+
var Img_default = Img;
|
|
107
|
+
|
|
108
|
+
export { Img$1 as Img, Img_default as ImgSystem };
|
|
109
|
+
//# sourceMappingURL=plugin-renderer-img.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-renderer-img.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { type } from '@combos-fun/inspector-decorator';\nimport { Component } from '@combos-fun/engine';\n\nexport interface ImgParams {\n resource: string;\n}\n\nexport default class Img extends Component<ImgParams> {\n static componentName: string = 'Img';\n @type('string') resource: string = '';\n init(obj?: ImgParams) {\n if (obj && obj.resource) {\n this.resource = obj.resource;\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';\nimport { Sprite } from '@combos-fun/renderer-adapter';\nimport { Texture } from 'pixi.js';\nimport ImgComponent from './component';\n\nresource.registerInstance(RESOURCE_TYPE.IMAGE, ({ data = {} }) => {\n const { image } = data;\n if (image) {\n const texture = Texture.from(image);\n return texture;\n }\n return;\n});\nresource.registerDestroy(RESOURCE_TYPE.IMAGE, ({ instance }) => {\n if (instance) {\n (instance as Texture).destroy(true);\n }\n});\n\n@decorators.componentObserver({\n Img: [{ prop: ['resource'], deep: false }],\n})\nexport default class Img extends Renderer {\n static systemName = 'Img';\n name: string = 'Img';\n imgs: { [propName: number]: Sprite } = {};\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.imgs[gameObject.id]) {\n this.imgs[gameObject.id].sprite.width = width;\n this.imgs[gameObject.id].sprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'Img') {\n const component: ImgComponent = changed.component as ImgComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new Sprite(null);\n this.imgs[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.sprite, 0);\n const asyncId = this.increaseAsyncId(changed.gameObject.id);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(changed.gameObject.id, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);\n }\n this.imgs[changed.gameObject.id].image = instance;\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n const asyncId = this.increaseAsyncId(changed.gameObject.id);\n const { instance } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(changed.gameObject.id, asyncId)) return;\n if (!instance) {\n console.error(`GameObject:${changed.gameObject.name}'s Img resource load error`);\n }\n this.imgs[changed.gameObject.id].image = instance;\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(changed.gameObject.id);\n const sprite = this.imgs[changed.gameObject.id];\n if (!sprite) return;\n this.containerManager?.getContainer(changed.gameObject.id)?.removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.imgs[changed.gameObject.id];\n }\n }\n }\n destroy(): void {\n for (const key in this.imgs) {\n const sprite = this.imgs[key]\n this.containerManager?.getContainer(parseInt(key))?.removeChild(sprite.sprite);\n sprite.sprite.destroy({ children: true });\n delete this.imgs[key];\n }\n }\n}\n"],"names":["Img"],"mappings":";;;;;;;YAOc,MAAO,GAAI,SAAQ,SAAoB,CAAA;AAArD,IAAA,WAAA,GAAA;;QAEkB,IAAA,CAAA,QAAQ,GAAW,EAAE;IAMvC;aAPS,IAAA,CAAA,aAAa,GAAW,KAAX,CAAiB;AAErC,IAAA,IAAI,CAAC,GAAe,EAAA;AAClB,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;QAC9B;IACF;;AALgB,UAAA,CAAA;IAAf,IAAI,CAAC,QAAQ;AAAwB,CAAA,EAAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;;ACHxC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,KAAI;AAC/D,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IACtB,IAAI,KAAK,EAAE;QACT,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,QAAA,OAAO,OAAO;IAChB;IACA;AACF,CAAC,CAAC;AACF,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAI;IAC7D,IAAI,QAAQ,EAAE;AACX,QAAA,QAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC;AACF,CAAC,CAAC;AAKa,IAAM,GAAG,GAAT,MAAM,GAAI,SAAQ,QAAQ,CAAA;AAA1B,IAAA,WAAA,GAAA;;QAEb,IAAA,CAAA,IAAI,GAAW,KAAK;QACpB,IAAA,CAAA,IAAI,GAAmC,EAAE;IAuD3C;aAzDS,IAAA,CAAA,UAAU,GAAG,KAAH,CAAS;IAM1B,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;AACA,IAAA,cAAc,CAAC,UAAsB,EAAA;QACnC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI;QACnD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;AAC7C,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;QACjD;IACF;IACA,MAAM,gBAAgB,CAAC,OAAyB,EAAA;AAC9C,QAAA,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE;AACnC,YAAA,MAAM,SAAS,GAAiB,OAAO,CAAC,SAAyB;YACjE,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE;AACtC,gBAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,MAAM;gBACzC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACtF,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3D,gBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnE,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC;oBAAE;gBAC3D,IAAI,CAAC,QAAQ,EAAE;oBACb,OAAO,CAAC,KAAK,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA,0BAAA,CAA4B,CAAC;gBAClF;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ;YACnD;iBAAO,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;AAChD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3D,gBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnE,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC;oBAAE;gBAC3D,IAAI,CAAC,QAAQ,EAAE;oBACb,OAAO,CAAC,KAAK,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA,0BAAA,CAA4B,CAAC;gBAClF;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ;YACnD;iBAAO,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;gBAChD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/C,gBAAA,IAAI,CAAC,MAAM;oBAAE;AACb,gBAAA,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;gBACtF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC;QACF;IACF;IACA,OAAO,GAAA;AACL,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzC,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvB;IACF;;AAzDmB,GAAG,GAAA,UAAA,CAAA;IAHvB,UAAU,CAAC,iBAAiB,CAAC;AAC5B,QAAA,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC3C;AACoB,CAAA,EAAA,GAAG,CA0DvB;kBA1DoB,GAAG;;;;"}
|
package/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@combos-fun/plugin-renderer-img",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "@combos-fun/plugin-renderer-img",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"module": "dist/plugin-renderer-img.esm.js",
|
|
7
|
+
"bundle": "CombosFun.plugin.renderer.img",
|
|
8
|
+
"unpkg": "dist/CombosFun.plugin.renderer.img.min.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"index.js",
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"types": "dist/plugin-renderer-img.d.ts",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"combos-fun",
|
|
16
|
+
"game"
|
|
17
|
+
],
|
|
18
|
+
"author": "sun668 <q947692259@gmail.com>",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"pixi.js": "^8.18.1",
|
|
21
|
+
"@combos-fun/plugin-renderer": "0.0.1",
|
|
22
|
+
"@combos-fun/inspector-decorator": "0.0.1",
|
|
23
|
+
"@combos-fun/renderer-adapter": "0.0.1",
|
|
24
|
+
"@combos-fun/engine": "0.0.1"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "node ../../scripts/build-package.mjs"
|
|
28
|
+
}
|
|
29
|
+
}
|