@combos-fun/plugin-renderer-render 0.0.32 → 0.0.34
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.
|
@@ -20,18 +20,44 @@ let Render$1 = class Render extends engine.Component {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
tslib.__decorate([
|
|
23
|
-
inspectorDecorator.
|
|
23
|
+
inspectorDecorator.Field({
|
|
24
|
+
type: 'boolean',
|
|
25
|
+
group: 'Render',
|
|
26
|
+
label: 'Visible',
|
|
27
|
+
description: 'Whether this object is drawn.',
|
|
28
|
+
editor: 'toggle',
|
|
29
|
+
})
|
|
24
30
|
], Render$1.prototype, "visible", void 0);
|
|
25
31
|
tslib.__decorate([
|
|
26
|
-
inspectorDecorator.
|
|
27
|
-
|
|
32
|
+
inspectorDecorator.Field({
|
|
33
|
+
type: 'number',
|
|
34
|
+
min: 0,
|
|
35
|
+
max: 1,
|
|
36
|
+
step: 0.01,
|
|
37
|
+
group: 'Render',
|
|
38
|
+
label: 'Opacity',
|
|
39
|
+
description: 'Opacity from 0 (invisible) to 1 (fully opaque).',
|
|
40
|
+
editor: 'number-slider',
|
|
41
|
+
})
|
|
28
42
|
], Render$1.prototype, "alpha", void 0);
|
|
29
43
|
tslib.__decorate([
|
|
30
|
-
inspectorDecorator.
|
|
31
|
-
|
|
44
|
+
inspectorDecorator.Field({
|
|
45
|
+
type: 'number',
|
|
46
|
+
step: 1,
|
|
47
|
+
group: 'Render',
|
|
48
|
+
label: 'Z-index',
|
|
49
|
+
description: 'Draw order; higher values render on top.',
|
|
50
|
+
editor: 'number-stepper',
|
|
51
|
+
})
|
|
32
52
|
], Render$1.prototype, "zIndex", void 0);
|
|
33
53
|
tslib.__decorate([
|
|
34
|
-
inspectorDecorator.
|
|
54
|
+
inspectorDecorator.Field({
|
|
55
|
+
type: 'boolean',
|
|
56
|
+
group: 'Render',
|
|
57
|
+
label: 'Sort children',
|
|
58
|
+
description: 'When on, children are sorted by their z-index before drawing.',
|
|
59
|
+
editor: 'toggle',
|
|
60
|
+
})
|
|
35
61
|
], Render$1.prototype, "sortableChildren", void 0);
|
|
36
62
|
|
|
37
63
|
let Render = class Render extends pluginRenderer.Renderer {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-renderer-render.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import {Component} from '@combos-fun/engine';\nimport {
|
|
1
|
+
{"version":3,"file":"plugin-renderer-render.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 interface RenderParams {\n alpha?: number;\n zIndex?: number;\n visible?: boolean;\n sortableChildren?: boolean;\n}\n\nexport default class Render extends Component<RenderParams> {\n static componentName: string = 'Render';\n sortDirty: boolean = false;\n\n @Field({\n type: 'boolean',\n group: 'Render',\n label: 'Visible',\n description: 'Whether this object is drawn.',\n editor: 'toggle',\n })\n visible: boolean = true;\n\n @Field({\n type: 'number',\n min: 0,\n max: 1,\n step: 0.01,\n group: 'Render',\n label: 'Opacity',\n description: 'Opacity from 0 (invisible) to 1 (fully opaque).',\n editor: 'number-slider',\n })\n alpha: number = 1;\n\n @Field({\n type: 'number',\n step: 1,\n group: 'Render',\n label: 'Z-index',\n description: 'Draw order; higher values render on top.',\n editor: 'number-stepper',\n })\n zIndex: number = 0;\n\n @Field({\n type: 'boolean',\n group: 'Render',\n label: 'Sort children',\n description: 'When on, children are sorted by their z-index before drawing.',\n editor: 'toggle',\n })\n sortableChildren: boolean = false;\n\n init(obj?: RenderParams) {\n obj && Object.assign(this, obj);\n }\n}\n","import { GameObject, decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\n\nimport RenderComponent from './component';\nimport type { Container } from '@combos-fun/renderer-adapter';\n\n@decorators.componentObserver({\n Render: ['zIndex'],\n})\nexport default class Render extends Renderer {\n static systemName: string = 'Render';\n name: string = 'Render';\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 component = gameObject.getComponent('Render') as RenderComponent;\n const container = this.containerManager.getContainer(gameObject.id);\n container.alpha = component.alpha;\n container.visible = component.visible;\n if (component.sortDirty && component.sortableChildren) {\n const gameObjects = gameObject.transform.children.map(({ gameObject }) => gameObject);\n const children = gameObjects\n .sort((a, b) => {\n const aRender = a.getComponent('Render') as RenderComponent;\n const bRender = b.getComponent('Render') as RenderComponent;\n if (!aRender) {\n return -1;\n }\n if (!bRender) {\n return 1;\n }\n return aRender.zIndex - bRender.zIndex;\n })\n .map(gameObject => {\n return this.containerManager.getContainer(gameObject.id);\n });\n const oldChildren = this.containerManager.getContainer(component.gameObject.id).children;\n const elements = oldChildren.filter(c => children.indexOf(c as Container) === -1);\n oldChildren.length = 0;\n oldChildren.push(...elements, ...children);\n component.sortDirty = false;\n }\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.add(changed);\n }\n if (changed.type === OBSERVER_TYPE.CHANGE) {\n this.change(changed);\n }\n if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.remove(changed);\n }\n }\n add(changed: ComponentChanged) {\n if (changed.component.name === 'Render') {\n this.setDirty(changed);\n }\n }\n change(changed: ComponentChanged) {\n if (changed.component.name === 'Render' && changed.prop.prop[0] === 'zIndex') {\n this.setDirty(changed);\n }\n }\n remove(changed: ComponentChanged) {\n if (changed.component.name === 'Render') {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.alpha = 1;\n }\n }\n setDirty(changed: ComponentChanged) {\n const parentRender =\n changed.gameObject.parent && (changed.gameObject.parent.getComponent('Render') as RenderComponent);\n if (parentRender) {\n parentRender.sortDirty = true;\n }\n }\n}\n"],"names":["Component","__decorate","Field","Render","Renderer","RendererSystem","OBSERVER_TYPE","decorators"],"mappings":";;;;;;;eAUc,MAAO,MAAO,SAAQA,gBAAuB,CAAA;AAA3D,IAAA,WAAA,GAAA;;QAEE,IAAA,CAAA,SAAS,GAAY,KAAK;QAS1B,IAAA,CAAA,OAAO,GAAY,IAAI;QAYvB,IAAA,CAAA,KAAK,GAAW,CAAC;QAUjB,IAAA,CAAA,MAAM,GAAW,CAAC;QASlB,IAAA,CAAA,gBAAgB,GAAY,KAAK;IAKnC;aA9CS,IAAA,CAAA,aAAa,GAAW,QAAX,CAAoB;AA2CxC,IAAA,IAAI,CAAC,GAAkB,EAAA;QACrB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;IACjC;;AAnCAC,gBAAA,CAAA;AAPC,IAAAC,wBAAK,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,WAAW,EAAE,+BAA+B;AAC5C,QAAA,MAAM,EAAE,QAAQ;KACjB;AACuB,CAAA,EAAAC,QAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAYxBF,gBAAA,CAAA;AAVC,IAAAC,wBAAK,CAAC;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,WAAW,EAAE,iDAAiD;AAC9D,QAAA,MAAM,EAAE,eAAe;KACxB;AACiB,CAAA,EAAAC,QAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAUlBF,gBAAA,CAAA;AARC,IAAAC,wBAAK,CAAC;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,WAAW,EAAE,0CAA0C;AACvD,QAAA,MAAM,EAAE,gBAAgB;KACzB;AACkB,CAAA,EAAAC,QAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AASnBF,gBAAA,CAAA;AAPC,IAAAC,wBAAK,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,WAAW,EAAE,+DAA+D;AAC5E,QAAA,MAAM,EAAE,QAAQ;KACjB;AACiC,CAAA,EAAAC,QAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,MAAA,CAAA;;AC3CrB,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQC,uBAAQ,CAAA;AAA7B,IAAA,WAAA,GAAA;;QAEb,IAAA,CAAA,IAAI,GAAW,QAAQ;IAuEzB;aAxES,IAAA,CAAA,UAAU,GAAW,QAAX,CAAoB;IAKrC,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAACC,6BAAc,CAAmB;QACzE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClD;AACA,IAAA,cAAc,CAAC,UAAsB,EAAA;QACnC,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAoB;AACtE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACnE,QAAA,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK;AACjC,QAAA,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO;QACrC,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,gBAAgB,EAAE;AACrD,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,UAAU,CAAC;YACrF,MAAM,QAAQ,GAAG;AACd,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBACb,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAoB;gBAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAoB;gBAC3D,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,EAAE;gBACX;gBACA,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,OAAO,CAAC;gBACV;AACA,gBAAA,OAAO,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACxC,YAAA,CAAC;iBACA,GAAG,CAAC,UAAU,IAAG;gBAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1D,YAAA,CAAC,CAAC;AACJ,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ;YACxF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAc,CAAC,KAAK,EAAE,CAAC;AACjF,YAAA,WAAW,CAAC,MAAM,GAAG,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;AAC1C,YAAA,SAAS,CAAC,SAAS,GAAG,KAAK;QAC7B;IACF;AACA,IAAA,gBAAgB,CAAC,OAAyB,EAAA;QACxC,IAAI,OAAO,CAAC,IAAI,KAAKC,oBAAa,CAAC,GAAG,EAAE;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QACnB;QACA,IAAI,OAAO,CAAC,IAAI,KAAKA,oBAAa,CAAC,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACtB;QACA,IAAI,OAAO,CAAC,IAAI,KAAKA,oBAAa,CAAC,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACtB;IACF;AACA,IAAA,GAAG,CAAC,OAAyB,EAAA;QAC3B,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxB;IACF;AACA,IAAA,MAAM,CAAC,OAAyB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC5E,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxB;IACF;AACA,IAAA,MAAM,CAAC,OAAyB,EAAA;QAC9B,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3E,YAAA,SAAS,CAAC,KAAK,GAAG,CAAC;QACrB;IACF;AACA,IAAA,QAAQ,CAAC,OAAyB,EAAA;AAChC,QAAA,MAAM,YAAY,GAChB,OAAO,CAAC,UAAU,CAAC,MAAM,IAAK,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAqB;QACpG,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,SAAS,GAAG,IAAI;QAC/B;IACF;;AAxEmB,MAAM,GAAAL,gBAAA,CAAA;IAH1BM,iBAAU,CAAC,iBAAiB,CAAC;QAC5B,MAAM,EAAE,CAAC,QAAQ,CAAC;KACnB;AACoB,CAAA,EAAA,MAAM,CAyE1B;qBAzEoB,MAAM;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("tslib"),t=require("@combos-fun/engine"),r=require("@combos-fun/inspector-decorator"),n=require("@combos-fun/plugin-renderer");let
|
|
1
|
+
"use strict";var e=require("tslib"),t=require("@combos-fun/engine"),r=require("@combos-fun/inspector-decorator"),n=require("@combos-fun/plugin-renderer");let i=class extends t.Component{constructor(){super(...arguments),this.sortDirty=!1,this.visible=!0,this.alpha=1,this.zIndex=0,this.sortableChildren=!1}static{this.componentName="Render"}init(e){e&&Object.assign(this,e)}};e.__decorate([r.Field({type:"boolean",group:"Render",label:"Visible",description:"Whether this object is drawn.",editor:"toggle"})],i.prototype,"visible",void 0),e.__decorate([r.Field({type:"number",min:0,max:1,step:.01,group:"Render",label:"Opacity",description:"Opacity from 0 (invisible) to 1 (fully opaque).",editor:"number-slider"})],i.prototype,"alpha",void 0),e.__decorate([r.Field({type:"number",step:1,group:"Render",label:"Z-index",description:"Draw order; higher values render on top.",editor:"number-stepper"})],i.prototype,"zIndex",void 0),e.__decorate([r.Field({type:"boolean",group:"Render",label:"Sort children",description:"When on, children are sorted by their z-index before drawing.",editor:"toggle"})],i.prototype,"sortableChildren",void 0);let o=class extends n.Renderer{constructor(){super(...arguments),this.name="Render"}static{this.systemName="Render"}init(){this.renderSystem=this.game.getSystem(n.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const t=e.getComponent("Render"),r=this.containerManager.getContainer(e.id);if(r.alpha=t.alpha,r.visible=t.visible,t.sortDirty&&t.sortableChildren){const r=e.transform.children.map(({gameObject:e})=>e).sort((e,t)=>{const r=e.getComponent("Render"),n=t.getComponent("Render");return r?n?r.zIndex-n.zIndex:1:-1}).map(e=>this.containerManager.getContainer(e.id)),n=this.containerManager.getContainer(t.gameObject.id).children,i=n.filter(e=>-1===r.indexOf(e));n.length=0,n.push(...i,...r),t.sortDirty=!1}}componentChanged(e){e.type===t.OBSERVER_TYPE.ADD&&this.add(e),e.type===t.OBSERVER_TYPE.CHANGE&&this.change(e),e.type===t.OBSERVER_TYPE.REMOVE&&this.remove(e)}add(e){"Render"===e.component.name&&this.setDirty(e)}change(e){"Render"===e.component.name&&"zIndex"===e.prop.prop[0]&&this.setDirty(e)}remove(e){if("Render"===e.component.name){this.containerManager.getContainer(e.gameObject.id).alpha=1}}setDirty(e){const t=e.gameObject.parent&&e.gameObject.parent.getComponent("Render");t&&(t.sortDirty=!0)}};o=e.__decorate([t.decorators.componentObserver({Render:["zIndex"]})],o);var s=o;exports.Render=i,exports.RenderSystem=s;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
2
|
import { Component, OBSERVER_TYPE, decorators } from '@combos-fun/engine';
|
|
3
|
-
import {
|
|
3
|
+
import { Field } from '@combos-fun/inspector-decorator';
|
|
4
4
|
import { Renderer, RendererSystem } from '@combos-fun/plugin-renderer';
|
|
5
5
|
|
|
6
6
|
let Render$1 = class Render extends Component {
|
|
@@ -18,18 +18,44 @@ let Render$1 = class Render extends Component {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
__decorate([
|
|
21
|
-
|
|
21
|
+
Field({
|
|
22
|
+
type: 'boolean',
|
|
23
|
+
group: 'Render',
|
|
24
|
+
label: 'Visible',
|
|
25
|
+
description: 'Whether this object is drawn.',
|
|
26
|
+
editor: 'toggle',
|
|
27
|
+
})
|
|
22
28
|
], Render$1.prototype, "visible", void 0);
|
|
23
29
|
__decorate([
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
Field({
|
|
31
|
+
type: 'number',
|
|
32
|
+
min: 0,
|
|
33
|
+
max: 1,
|
|
34
|
+
step: 0.01,
|
|
35
|
+
group: 'Render',
|
|
36
|
+
label: 'Opacity',
|
|
37
|
+
description: 'Opacity from 0 (invisible) to 1 (fully opaque).',
|
|
38
|
+
editor: 'number-slider',
|
|
39
|
+
})
|
|
26
40
|
], Render$1.prototype, "alpha", void 0);
|
|
27
41
|
__decorate([
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
Field({
|
|
43
|
+
type: 'number',
|
|
44
|
+
step: 1,
|
|
45
|
+
group: 'Render',
|
|
46
|
+
label: 'Z-index',
|
|
47
|
+
description: 'Draw order; higher values render on top.',
|
|
48
|
+
editor: 'number-stepper',
|
|
49
|
+
})
|
|
30
50
|
], Render$1.prototype, "zIndex", void 0);
|
|
31
51
|
__decorate([
|
|
32
|
-
|
|
52
|
+
Field({
|
|
53
|
+
type: 'boolean',
|
|
54
|
+
group: 'Render',
|
|
55
|
+
label: 'Sort children',
|
|
56
|
+
description: 'When on, children are sorted by their z-index before drawing.',
|
|
57
|
+
editor: 'toggle',
|
|
58
|
+
})
|
|
33
59
|
], Render$1.prototype, "sortableChildren", void 0);
|
|
34
60
|
|
|
35
61
|
let Render = class Render extends Renderer {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-renderer-render.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import {Component} from '@combos-fun/engine';\nimport {
|
|
1
|
+
{"version":3,"file":"plugin-renderer-render.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 interface RenderParams {\n alpha?: number;\n zIndex?: number;\n visible?: boolean;\n sortableChildren?: boolean;\n}\n\nexport default class Render extends Component<RenderParams> {\n static componentName: string = 'Render';\n sortDirty: boolean = false;\n\n @Field({\n type: 'boolean',\n group: 'Render',\n label: 'Visible',\n description: 'Whether this object is drawn.',\n editor: 'toggle',\n })\n visible: boolean = true;\n\n @Field({\n type: 'number',\n min: 0,\n max: 1,\n step: 0.01,\n group: 'Render',\n label: 'Opacity',\n description: 'Opacity from 0 (invisible) to 1 (fully opaque).',\n editor: 'number-slider',\n })\n alpha: number = 1;\n\n @Field({\n type: 'number',\n step: 1,\n group: 'Render',\n label: 'Z-index',\n description: 'Draw order; higher values render on top.',\n editor: 'number-stepper',\n })\n zIndex: number = 0;\n\n @Field({\n type: 'boolean',\n group: 'Render',\n label: 'Sort children',\n description: 'When on, children are sorted by their z-index before drawing.',\n editor: 'toggle',\n })\n sortableChildren: boolean = false;\n\n init(obj?: RenderParams) {\n obj && Object.assign(this, obj);\n }\n}\n","import { GameObject, decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\n\nimport RenderComponent from './component';\nimport type { Container } from '@combos-fun/renderer-adapter';\n\n@decorators.componentObserver({\n Render: ['zIndex'],\n})\nexport default class Render extends Renderer {\n static systemName: string = 'Render';\n name: string = 'Render';\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 component = gameObject.getComponent('Render') as RenderComponent;\n const container = this.containerManager.getContainer(gameObject.id);\n container.alpha = component.alpha;\n container.visible = component.visible;\n if (component.sortDirty && component.sortableChildren) {\n const gameObjects = gameObject.transform.children.map(({ gameObject }) => gameObject);\n const children = gameObjects\n .sort((a, b) => {\n const aRender = a.getComponent('Render') as RenderComponent;\n const bRender = b.getComponent('Render') as RenderComponent;\n if (!aRender) {\n return -1;\n }\n if (!bRender) {\n return 1;\n }\n return aRender.zIndex - bRender.zIndex;\n })\n .map(gameObject => {\n return this.containerManager.getContainer(gameObject.id);\n });\n const oldChildren = this.containerManager.getContainer(component.gameObject.id).children;\n const elements = oldChildren.filter(c => children.indexOf(c as Container) === -1);\n oldChildren.length = 0;\n oldChildren.push(...elements, ...children);\n component.sortDirty = false;\n }\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.add(changed);\n }\n if (changed.type === OBSERVER_TYPE.CHANGE) {\n this.change(changed);\n }\n if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.remove(changed);\n }\n }\n add(changed: ComponentChanged) {\n if (changed.component.name === 'Render') {\n this.setDirty(changed);\n }\n }\n change(changed: ComponentChanged) {\n if (changed.component.name === 'Render' && changed.prop.prop[0] === 'zIndex') {\n this.setDirty(changed);\n }\n }\n remove(changed: ComponentChanged) {\n if (changed.component.name === 'Render') {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.alpha = 1;\n }\n }\n setDirty(changed: ComponentChanged) {\n const parentRender =\n changed.gameObject.parent && (changed.gameObject.parent.getComponent('Render') as RenderComponent);\n if (parentRender) {\n parentRender.sortDirty = true;\n }\n }\n}\n"],"names":["Render"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@combos-fun/plugin-renderer-render",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.34",
|
|
4
4
|
"description": "Per-GameObject visibility / alpha / zIndex / sortable-children control",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "dist/plugin-renderer-render.esm.js",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"author": "sun668 <q947692259@gmail.com>",
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"pixi.js": "^8.18.1",
|
|
39
|
-
"@combos-fun/renderer
|
|
40
|
-
"@combos-fun/engine": "0.0.
|
|
41
|
-
"@combos-fun/
|
|
42
|
-
"@combos-fun/inspector-decorator": "0.0.
|
|
39
|
+
"@combos-fun/plugin-renderer": "0.0.34",
|
|
40
|
+
"@combos-fun/engine": "0.0.34",
|
|
41
|
+
"@combos-fun/renderer-adapter": "0.0.34",
|
|
42
|
+
"@combos-fun/inspector-decorator": "0.0.34"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "node ../../scripts/build-package.mjs"
|