@combos-fun/plugin-renderer-tiling-sprite 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 ADDED
@@ -0,0 +1,3 @@
1
+ # @combos-fun/plugin-renderer-tiling-sprite
2
+
3
+ Internal workspace package (Combos Fun monorepo).
@@ -0,0 +1,126 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var engine = require('@combos-fun/engine');
5
+ var inspectorDecorator = require('@combos-fun/inspector-decorator');
6
+ var pluginRenderer = require('@combos-fun/plugin-renderer');
7
+ var rendererAdapter = require('@combos-fun/renderer-adapter');
8
+
9
+ let TilingSprite$1 = class TilingSprite extends engine.Component {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.resource = '';
13
+ this.tileScale = {
14
+ x: 1,
15
+ y: 1,
16
+ };
17
+ this.tilePosition = {
18
+ x: 0,
19
+ y: 0,
20
+ };
21
+ }
22
+ static { this.componentName = 'TilingSprite'; }
23
+ init(obj) {
24
+ if (obj) {
25
+ this.resource = obj.resource;
26
+ this.tileScale = obj.tileScale;
27
+ this.tilePosition = obj.tilePosition;
28
+ }
29
+ }
30
+ };
31
+ tslib.__decorate([
32
+ inspectorDecorator.type('string')
33
+ ], TilingSprite$1.prototype, "resource", void 0);
34
+ tslib.__decorate([
35
+ inspectorDecorator.type('vector2'),
36
+ inspectorDecorator.step(0.1)
37
+ ], TilingSprite$1.prototype, "tileScale", void 0);
38
+ tslib.__decorate([
39
+ inspectorDecorator.type('vector2'),
40
+ inspectorDecorator.step(1)
41
+ ], TilingSprite$1.prototype, "tilePosition", void 0);
42
+
43
+ let TilingSprite = class TilingSprite extends pluginRenderer.Renderer {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.name = 'TilingSprite';
47
+ this.imgs = {};
48
+ }
49
+ init() {
50
+ this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
51
+ this.renderSystem.rendererManager.register(this);
52
+ }
53
+ rendererUpdate(gameObject) {
54
+ const { width, height } = gameObject.transform.size;
55
+ const img = this.imgs[gameObject.id];
56
+ if (img) {
57
+ img.tilingSprite.width = width;
58
+ img.tilingSprite.height = height;
59
+ }
60
+ }
61
+ async componentChanged(changed) {
62
+ const gameObjectId = changed.gameObject.id;
63
+ if (changed.componentName === 'TilingSprite') {
64
+ const component = changed.component;
65
+ if (changed.type === engine.OBSERVER_TYPE.ADD) {
66
+ const sprite = new rendererAdapter.TilingSprite(null);
67
+ this.imgs[changed.gameObject.id] = sprite;
68
+ this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.tilingSprite, 0);
69
+ this.setProp(changed.gameObject.id, component);
70
+ const asyncId = this.increaseAsyncId(gameObjectId);
71
+ const { data } = await engine.resource.getResource(component.resource);
72
+ if (!this.validateAsyncId(gameObjectId, asyncId))
73
+ return;
74
+ if (!data) {
75
+ console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);
76
+ return;
77
+ }
78
+ sprite.image = data.image;
79
+ }
80
+ else if (changed.type === engine.OBSERVER_TYPE.CHANGE) {
81
+ if (changed.prop.prop[0] === 'resource') {
82
+ const asyncId = this.increaseAsyncId(gameObjectId);
83
+ const { data } = await engine.resource.getResource(component.resource);
84
+ if (!this.validateAsyncId(gameObjectId, asyncId))
85
+ return;
86
+ if (!data) {
87
+ console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);
88
+ return;
89
+ }
90
+ this.imgs[changed.gameObject.id].image = data.image;
91
+ }
92
+ else {
93
+ this.setProp(changed.gameObject.id, component);
94
+ }
95
+ }
96
+ else if (changed.type === engine.OBSERVER_TYPE.REMOVE) {
97
+ this.increaseAsyncId(gameObjectId);
98
+ const sprite = this.imgs[changed.gameObject.id];
99
+ this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.tilingSprite);
100
+ sprite.tilingSprite.destroy({
101
+ children: true
102
+ });
103
+ delete this.imgs[changed.gameObject.id];
104
+ }
105
+ }
106
+ }
107
+ setProp(id, component) {
108
+ // bug possible
109
+ this.imgs[id].tilingSprite.tilePosition = component.tilePosition;
110
+ this.imgs[id].tilingSprite.tileScale = component.tileScale;
111
+ }
112
+ };
113
+ TilingSprite = tslib.__decorate([
114
+ engine.decorators.componentObserver({
115
+ TilingSprite: [
116
+ { prop: ['resource'], deep: false },
117
+ { prop: ['tileScale'], deep: true },
118
+ { prop: ['tilePosition'], deep: true },
119
+ ],
120
+ })
121
+ ], TilingSprite);
122
+ var TilingSprite_default = TilingSprite;
123
+
124
+ exports.TilingSprite = TilingSprite$1;
125
+ exports.TilingSpriteSystem = TilingSprite_default;
126
+ //# sourceMappingURL=plugin-renderer-tiling-sprite.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-renderer-tiling-sprite.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import {Component} from '@combos-fun/engine';\nimport {type, step} from '@combos-fun/inspector-decorator';\n\nexport interface TilingSpriteParams {\n resource: string;\n tileScale: { x: number; y: number };\n tilePosition: { x: number; y: number };\n}\n\nexport default class TilingSprite extends Component<TilingSpriteParams> {\n static componentName: string = 'TilingSprite';\n @type('string') resource: string = '';\n @type('vector2') @step(0.1) tileScale: TilingSpriteParams['tileScale'] = {\n x: 1,\n y: 1,\n };\n @type('vector2') @step(1) tilePosition: TilingSpriteParams['tilePosition'] = {\n x: 0,\n y: 0,\n };\n init(obj?: TilingSpriteParams) {\n if (obj) {\n this.resource = obj.resource;\n this.tileScale = obj.tileScale;\n this.tilePosition = obj.tilePosition;\n }\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport TilingSpriteComponent from './component';\nimport { TilingSprite as TilingSpriteEngine } from '@combos-fun/renderer-adapter';\nimport type { Point } from 'pixi.js';\n\n@decorators.componentObserver({\n TilingSprite: [\n { prop: ['resource'], deep: false },\n { prop: ['tileScale'], deep: true },\n { prop: ['tilePosition'], deep: true },\n ],\n})\nexport default class TilingSprite extends Renderer {\n name: string = 'TilingSprite';\n imgs: { [propName: number]: TilingSpriteEngine } = {};\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 const img = this.imgs[gameObject.id];\n if (img) {\n img.tilingSprite.width = width;\n img.tilingSprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n const gameObjectId = changed.gameObject.id;\n if (changed.componentName === 'TilingSprite') {\n const component: TilingSpriteComponent = changed.component as TilingSpriteComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new TilingSpriteEngine(null);\n this.imgs[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.tilingSprite, 0);\n this.setProp(changed.gameObject.id, component);\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { data } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!data) {\n console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);\n return\n }\n sprite.image = data.image;\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n if (changed.prop.prop[0] === 'resource') {\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { data } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!data) {\n console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);\n return\n }\n this.imgs[changed.gameObject.id].image = data.image;\n } else {\n this.setProp(changed.gameObject.id, component);\n }\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(gameObjectId);\n const sprite = this.imgs[changed.gameObject.id];\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.tilingSprite);\n sprite.tilingSprite.destroy({\n children: true\n });\n delete this.imgs[changed.gameObject.id];\n }\n }\n }\n setProp(id: number, component: TilingSpriteComponent) {\n // bug possible\n this.imgs[id].tilingSprite.tilePosition = component.tilePosition as Point;\n this.imgs[id].tilingSprite.tileScale = component.tileScale as Point;\n }\n}\n"],"names":["Component","__decorate","type","TilingSprite","step","Renderer","RendererSystem","OBSERVER_TYPE","TilingSpriteEngine","resource","decorators"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),i=require("@combos-fun/inspector-decorator"),r=require("@combos-fun/plugin-renderer"),s=require("@combos-fun/renderer-adapter");let o=class extends t.Component{constructor(){super(...arguments),this.resource="",this.tileScale={x:1,y:1},this.tilePosition={x:0,y:0}}static{this.componentName="TilingSprite"}init(e){e&&(this.resource=e.resource,this.tileScale=e.tileScale,this.tilePosition=e.tilePosition)}};e.__decorate([i.type("string")],o.prototype,"resource",void 0),e.__decorate([i.type("vector2"),i.step(.1)],o.prototype,"tileScale",void 0),e.__decorate([i.type("vector2"),i.step(1)],o.prototype,"tilePosition",void 0);let n=class extends r.Renderer{constructor(){super(...arguments),this.name="TilingSprite",this.imgs={}}init(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const{width:t,height:i}=e.transform.size,r=this.imgs[e.id];r&&(r.tilingSprite.width=t,r.tilingSprite.height=i)}async componentChanged(e){const i=e.gameObject.id;if("TilingSprite"===e.componentName){const r=e.component;if(e.type===t.OBSERVER_TYPE.ADD){const o=new s.TilingSprite(null);this.imgs[e.gameObject.id]=o,this.containerManager.getContainer(e.gameObject.id).addChildAt(o.tilingSprite,0),this.setProp(e.gameObject.id,r);const n=this.increaseAsyncId(i),{data:c}=await t.resource.getResource(r.resource);if(!this.validateAsyncId(i,n))return;if(!c)return void console.error(`GameObject:${e.gameObject.name}'s TilingSprite resource load error`);o.image=c.image}else if(e.type===t.OBSERVER_TYPE.CHANGE)if("resource"===e.prop.prop[0]){const s=this.increaseAsyncId(i),{data:o}=await t.resource.getResource(r.resource);if(!this.validateAsyncId(i,s))return;if(!o)return void console.error(`GameObject:${e.gameObject.name}'s TilingSprite resource load error`);this.imgs[e.gameObject.id].image=o.image}else this.setProp(e.gameObject.id,r);else if(e.type===t.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(i);const t=this.imgs[e.gameObject.id];this.containerManager.getContainer(e.gameObject.id).removeChild(t.tilingSprite),t.tilingSprite.destroy({children:!0}),delete this.imgs[e.gameObject.id]}}}setProp(e,t){this.imgs[e].tilingSprite.tilePosition=t.tilePosition,this.imgs[e].tilingSprite.tileScale=t.tileScale}};n=e.__decorate([t.decorators.componentObserver({TilingSprite:[{prop:["resource"],deep:!1},{prop:["tileScale"],deep:!0},{prop:["tilePosition"],deep:!0}]})],n);var c=n;exports.TilingSprite=o,exports.TilingSpriteSystem=c;
@@ -0,0 +1,39 @@
1
+ import { Component, GameObject, ComponentChanged } from '@combos-fun/engine';
2
+ import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';
3
+ import { TilingSprite as TilingSprite$2 } from '@combos-fun/renderer-adapter';
4
+
5
+ interface TilingSpriteParams {
6
+ resource: string;
7
+ tileScale: {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ tilePosition: {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ }
16
+ declare class TilingSprite$1 extends Component<TilingSpriteParams> {
17
+ static componentName: string;
18
+ resource: string;
19
+ tileScale: TilingSpriteParams['tileScale'];
20
+ tilePosition: TilingSpriteParams['tilePosition'];
21
+ init(obj?: TilingSpriteParams): void;
22
+ }
23
+
24
+ declare class TilingSprite extends Renderer {
25
+ name: string;
26
+ imgs: {
27
+ [propName: number]: TilingSprite$2;
28
+ };
29
+ renderSystem: RendererSystem;
30
+ rendererManager: RendererManager;
31
+ containerManager: ContainerManager;
32
+ init(): void;
33
+ rendererUpdate(gameObject: GameObject): void;
34
+ componentChanged(changed: ComponentChanged): Promise<void>;
35
+ setProp(id: number, component: TilingSprite$1): void;
36
+ }
37
+
38
+ export { TilingSprite$1 as TilingSprite, TilingSprite as TilingSpriteSystem };
39
+ export type { TilingSpriteParams };
@@ -0,0 +1,123 @@
1
+ import { __decorate } from 'tslib';
2
+ import { Component, decorators, OBSERVER_TYPE, resource } from '@combos-fun/engine';
3
+ import { type, step } from '@combos-fun/inspector-decorator';
4
+ import { Renderer, RendererSystem } from '@combos-fun/plugin-renderer';
5
+ import { TilingSprite as TilingSprite$2 } from '@combos-fun/renderer-adapter';
6
+
7
+ let TilingSprite$1 = class TilingSprite extends Component {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.resource = '';
11
+ this.tileScale = {
12
+ x: 1,
13
+ y: 1,
14
+ };
15
+ this.tilePosition = {
16
+ x: 0,
17
+ y: 0,
18
+ };
19
+ }
20
+ static { this.componentName = 'TilingSprite'; }
21
+ init(obj) {
22
+ if (obj) {
23
+ this.resource = obj.resource;
24
+ this.tileScale = obj.tileScale;
25
+ this.tilePosition = obj.tilePosition;
26
+ }
27
+ }
28
+ };
29
+ __decorate([
30
+ type('string')
31
+ ], TilingSprite$1.prototype, "resource", void 0);
32
+ __decorate([
33
+ type('vector2'),
34
+ step(0.1)
35
+ ], TilingSprite$1.prototype, "tileScale", void 0);
36
+ __decorate([
37
+ type('vector2'),
38
+ step(1)
39
+ ], TilingSprite$1.prototype, "tilePosition", void 0);
40
+
41
+ let TilingSprite = class TilingSprite extends Renderer {
42
+ constructor() {
43
+ super(...arguments);
44
+ this.name = 'TilingSprite';
45
+ this.imgs = {};
46
+ }
47
+ init() {
48
+ this.renderSystem = this.game.getSystem(RendererSystem);
49
+ this.renderSystem.rendererManager.register(this);
50
+ }
51
+ rendererUpdate(gameObject) {
52
+ const { width, height } = gameObject.transform.size;
53
+ const img = this.imgs[gameObject.id];
54
+ if (img) {
55
+ img.tilingSprite.width = width;
56
+ img.tilingSprite.height = height;
57
+ }
58
+ }
59
+ async componentChanged(changed) {
60
+ const gameObjectId = changed.gameObject.id;
61
+ if (changed.componentName === 'TilingSprite') {
62
+ const component = changed.component;
63
+ if (changed.type === OBSERVER_TYPE.ADD) {
64
+ const sprite = new TilingSprite$2(null);
65
+ this.imgs[changed.gameObject.id] = sprite;
66
+ this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.tilingSprite, 0);
67
+ this.setProp(changed.gameObject.id, component);
68
+ const asyncId = this.increaseAsyncId(gameObjectId);
69
+ const { data } = await resource.getResource(component.resource);
70
+ if (!this.validateAsyncId(gameObjectId, asyncId))
71
+ return;
72
+ if (!data) {
73
+ console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);
74
+ return;
75
+ }
76
+ sprite.image = data.image;
77
+ }
78
+ else if (changed.type === OBSERVER_TYPE.CHANGE) {
79
+ if (changed.prop.prop[0] === 'resource') {
80
+ const asyncId = this.increaseAsyncId(gameObjectId);
81
+ const { data } = await resource.getResource(component.resource);
82
+ if (!this.validateAsyncId(gameObjectId, asyncId))
83
+ return;
84
+ if (!data) {
85
+ console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);
86
+ return;
87
+ }
88
+ this.imgs[changed.gameObject.id].image = data.image;
89
+ }
90
+ else {
91
+ this.setProp(changed.gameObject.id, component);
92
+ }
93
+ }
94
+ else if (changed.type === OBSERVER_TYPE.REMOVE) {
95
+ this.increaseAsyncId(gameObjectId);
96
+ const sprite = this.imgs[changed.gameObject.id];
97
+ this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.tilingSprite);
98
+ sprite.tilingSprite.destroy({
99
+ children: true
100
+ });
101
+ delete this.imgs[changed.gameObject.id];
102
+ }
103
+ }
104
+ }
105
+ setProp(id, component) {
106
+ // bug possible
107
+ this.imgs[id].tilingSprite.tilePosition = component.tilePosition;
108
+ this.imgs[id].tilingSprite.tileScale = component.tileScale;
109
+ }
110
+ };
111
+ TilingSprite = __decorate([
112
+ decorators.componentObserver({
113
+ TilingSprite: [
114
+ { prop: ['resource'], deep: false },
115
+ { prop: ['tileScale'], deep: true },
116
+ { prop: ['tilePosition'], deep: true },
117
+ ],
118
+ })
119
+ ], TilingSprite);
120
+ var TilingSprite_default = TilingSprite;
121
+
122
+ export { TilingSprite$1 as TilingSprite, TilingSprite_default as TilingSpriteSystem };
123
+ //# sourceMappingURL=plugin-renderer-tiling-sprite.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-renderer-tiling-sprite.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import {Component} from '@combos-fun/engine';\nimport {type, step} from '@combos-fun/inspector-decorator';\n\nexport interface TilingSpriteParams {\n resource: string;\n tileScale: { x: number; y: number };\n tilePosition: { x: number; y: number };\n}\n\nexport default class TilingSprite extends Component<TilingSpriteParams> {\n static componentName: string = 'TilingSprite';\n @type('string') resource: string = '';\n @type('vector2') @step(0.1) tileScale: TilingSpriteParams['tileScale'] = {\n x: 1,\n y: 1,\n };\n @type('vector2') @step(1) tilePosition: TilingSpriteParams['tilePosition'] = {\n x: 0,\n y: 0,\n };\n init(obj?: TilingSpriteParams) {\n if (obj) {\n this.resource = obj.resource;\n this.tileScale = obj.tileScale;\n this.tilePosition = obj.tilePosition;\n }\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport TilingSpriteComponent from './component';\nimport { TilingSprite as TilingSpriteEngine } from '@combos-fun/renderer-adapter';\nimport type { Point } from 'pixi.js';\n\n@decorators.componentObserver({\n TilingSprite: [\n { prop: ['resource'], deep: false },\n { prop: ['tileScale'], deep: true },\n { prop: ['tilePosition'], deep: true },\n ],\n})\nexport default class TilingSprite extends Renderer {\n name: string = 'TilingSprite';\n imgs: { [propName: number]: TilingSpriteEngine } = {};\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 const img = this.imgs[gameObject.id];\n if (img) {\n img.tilingSprite.width = width;\n img.tilingSprite.height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n const gameObjectId = changed.gameObject.id;\n if (changed.componentName === 'TilingSprite') {\n const component: TilingSpriteComponent = changed.component as TilingSpriteComponent;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const sprite = new TilingSpriteEngine(null);\n this.imgs[changed.gameObject.id] = sprite;\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(sprite.tilingSprite, 0);\n this.setProp(changed.gameObject.id, component);\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { data } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!data) {\n console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);\n return\n }\n sprite.image = data.image;\n } else if (changed.type === OBSERVER_TYPE.CHANGE) {\n if (changed.prop.prop[0] === 'resource') {\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { data } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!data) {\n console.error(`GameObject:${changed.gameObject.name}'s TilingSprite resource load error`);\n return\n }\n this.imgs[changed.gameObject.id].image = data.image;\n } else {\n this.setProp(changed.gameObject.id, component);\n }\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.increaseAsyncId(gameObjectId);\n const sprite = this.imgs[changed.gameObject.id];\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite.tilingSprite);\n sprite.tilingSprite.destroy({\n children: true\n });\n delete this.imgs[changed.gameObject.id];\n }\n }\n }\n setProp(id: number, component: TilingSpriteComponent) {\n // bug possible\n this.imgs[id].tilingSprite.tilePosition = component.tilePosition as Point;\n this.imgs[id].tilingSprite.tileScale = component.tileScale as Point;\n }\n}\n"],"names":["TilingSprite","TilingSpriteEngine"],"mappings":"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"}
package/index.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./dist/plugin-renderer-tiling-sprite.cjs.prod.js');
5
+ } else {
6
+ module.exports = require('./dist/plugin-renderer-tiling-sprite.cjs.js');
7
+ }
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@combos-fun/plugin-renderer-tiling-sprite",
3
+ "version": "0.0.1",
4
+ "description": "@combos-fun/plugin-renderer-tiling-sprite",
5
+ "main": "index.js",
6
+ "module": "dist/plugin-renderer-tiling-sprite.esm.js",
7
+ "bundle": "CombosFun.plugin.renderer.tilingSprite",
8
+ "unpkg": "dist/CombosFun.plugin.renderer.tilingSprite.min.js",
9
+ "files": [
10
+ "index.js",
11
+ "dist"
12
+ ],
13
+ "types": "dist/plugin-renderer-tiling-sprite.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/renderer-adapter": "0.0.1",
22
+ "@combos-fun/plugin-renderer": "0.0.1",
23
+ "@combos-fun/engine": "0.0.1",
24
+ "@combos-fun/inspector-decorator": "0.0.1"
25
+ },
26
+ "scripts": {
27
+ "build": "node ../../scripts/build-package.mjs"
28
+ }
29
+ }