@eva/plugin-renderer-mesh 2.0.0-beta.7

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,6 @@
1
+ # @eva/plugin-renderer-mesh
2
+
3
+ More Introduction
4
+
5
+ - [EN](https://eva.js.org)
6
+ - [中文](https://eva-engine.gitee.io)
@@ -0,0 +1,145 @@
1
+ window.EVA = window.EVA || {};
2
+ window.EVA.plugin = window.EVA.plugin || {};
3
+ window.EVA.plugin.renderer = window.EVA.plugin.renderer || {};
4
+ var _EVA_IIFE_mesh = function (exports, eva_js, pluginRenderer, pixi_js) {
5
+ 'use strict';
6
+
7
+ class PerspectiveMesh extends eva_js.Component {
8
+ constructor() {
9
+ super(...arguments);
10
+ this._forceUpdate = 0;
11
+ }
12
+ init(obj) {
13
+ if (obj && obj.resource) {
14
+ this.resource = obj.resource;
15
+ }
16
+ }
17
+ setCorners(x0, y0, x1, y1, x2, y2, x3, y3) {
18
+ const corners = this.corners || {};
19
+ corners.x0 = x0;
20
+ corners.y0 = y0;
21
+ corners.x1 = x1;
22
+ corners.y1 = y1;
23
+ corners.x2 = x2;
24
+ corners.y2 = y2;
25
+ corners.x3 = x3;
26
+ corners.y3 = y3;
27
+ this.corners = corners;
28
+ this._forceUpdate += 1;
29
+ }
30
+ }
31
+ PerspectiveMesh.componentName = 'PerspectiveMesh';
32
+ function __decorate(decorators, target, key, desc) {
33
+ var c = arguments.length,
34
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
35
+ d;
36
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
37
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
38
+ }
39
+ function __awaiter(thisArg, _arguments, P, generator) {
40
+ function adopt(value) {
41
+ return value instanceof P ? value : new P(function (resolve) {
42
+ resolve(value);
43
+ });
44
+ }
45
+ return new (P || (P = Promise))(function (resolve, reject) {
46
+ function fulfilled(value) {
47
+ try {
48
+ step(generator.next(value));
49
+ } catch (e) {
50
+ reject(e);
51
+ }
52
+ }
53
+ function rejected(value) {
54
+ try {
55
+ step(generator["throw"](value));
56
+ } catch (e) {
57
+ reject(e);
58
+ }
59
+ }
60
+ function step(result) {
61
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
62
+ }
63
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
64
+ });
65
+ }
66
+ exports.MeshSystem = class MeshSystem extends pluginRenderer.Renderer {
67
+ constructor() {
68
+ super(...arguments);
69
+ this.name = 'PerspectiveMesh';
70
+ this.meshes = {};
71
+ }
72
+ init() {
73
+ this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
74
+ this.renderSystem.rendererManager.register(this);
75
+ }
76
+ rendererUpdate(gameObject) {
77
+ const {
78
+ width,
79
+ height
80
+ } = gameObject.transform.size;
81
+ if (this.meshes[gameObject.id]) {
82
+ this.meshes[gameObject.id].width = width;
83
+ this.meshes[gameObject.id].height = height;
84
+ }
85
+ }
86
+ componentChanged(changed) {
87
+ var _a, _b;
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ if (changed.componentName === 'PerspectiveMesh') {
90
+ const gameObjectId = changed.gameObject.id;
91
+ const component = changed.component;
92
+ if (changed.type === eva_js.OBSERVER_TYPE.ADD) {
93
+ const asyncId = this.increaseAsyncId(gameObjectId);
94
+ const res = yield eva_js.resource.getResource(component.resource);
95
+ const texture = (_a = res.data) === null || _a === void 0 ? void 0 : _a.image;
96
+ if (!this.validateAsyncId(gameObjectId, asyncId)) return;
97
+ if (!texture) {
98
+ console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
99
+ return;
100
+ }
101
+ const mesh = new pixi_js.PerspectiveMesh({
102
+ texture: texture
103
+ });
104
+ if (component.corners) {
105
+ this.meshes[changed.gameObject.id].setCorners(component.corners.x0, component.corners.y0, component.corners.x1, component.corners.y1, component.corners.x2, component.corners.y2, component.corners.x3, component.corners.y3);
106
+ } else {
107
+ mesh.setCorners(0, 0, texture.width, 0, texture.width, texture.height, 0, texture.height);
108
+ }
109
+ this.meshes[changed.gameObject.id] = mesh;
110
+ this.containerManager.getContainer(changed.gameObject.id).addChildAt(mesh, 0);
111
+ } else if (changed.type === eva_js.OBSERVER_TYPE.CHANGE) {
112
+ const asyncId = this.increaseAsyncId(gameObjectId);
113
+ const res = yield eva_js.resource.getResource(component.resource);
114
+ const texture = (_b = res.data) === null || _b === void 0 ? void 0 : _b.image;
115
+ if (!this.validateAsyncId(gameObjectId, asyncId)) return;
116
+ if (!texture) {
117
+ console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
118
+ return;
119
+ }
120
+ this.meshes[changed.gameObject.id].texture = texture;
121
+ if (component.corners) {
122
+ this.meshes[changed.gameObject.id].setCorners(component.corners.x0, component.corners.y0, component.corners.x1, component.corners.y1, component.corners.x2, component.corners.y2, component.corners.x3, component.corners.y3);
123
+ }
124
+ } else if (changed.type === eva_js.OBSERVER_TYPE.REMOVE) {
125
+ this.increaseAsyncId(gameObjectId);
126
+ const mesh = this.meshes[changed.gameObject.id];
127
+ this.containerManager.getContainer(changed.gameObject.id).removeChild(mesh);
128
+ mesh.destroy();
129
+ delete this.meshes[changed.gameObject.id];
130
+ }
131
+ }
132
+ });
133
+ }
134
+ };
135
+ exports.MeshSystem.systemName = 'PerspectiveMesh';
136
+ exports.MeshSystem = __decorate([eva_js.decorators.componentObserver({
137
+ PerspectiveMesh: ['resource', '_forceUpdate']
138
+ })], exports.MeshSystem);
139
+ exports.PerspectiveMesh = PerspectiveMesh;
140
+ Object.defineProperty(exports, '__esModule', {
141
+ value: true
142
+ });
143
+ return exports;
144
+ }({}, EVA, EVA.plugin.renderer, PIXI);
145
+ window.EVA.plugin.renderer.mesh = window.EVA.plugin.renderer.mesh || _EVA_IIFE_mesh;
@@ -0,0 +1 @@
1
+ window.EVA=window.EVA||{},window.EVA.plugin=window.EVA.plugin||{},window.EVA.plugin.renderer=window.EVA.plugin.renderer||{};var _EVA_IIFE_mesh=function(e,r,t,s){"use strict";class n extends r.Component{constructor(){super(...arguments),this._forceUpdate=0}init(e){e&&e.resource&&(this.resource=e.resource)}setCorners(e,r,t,s,n,i,o,c){const d=this.corners||{};d.x0=e,d.y0=r,d.x1=t,d.y1=s,d.x2=n,d.y2=i,d.x3=o,d.y3=c,this.corners=d,this._forceUpdate+=1}}function i(e,r,t,s){return new(t||(t=Promise))((function(n,i){function o(e){try{d(s.next(e))}catch(e){i(e)}}function c(e){try{d(s.throw(e))}catch(e){i(e)}}function d(e){var r;e.done?n(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(o,c)}d((s=s.apply(e,r||[])).next())}))}return n.componentName="PerspectiveMesh",e.MeshSystem=class extends t.Renderer{constructor(){super(...arguments),this.name="PerspectiveMesh",this.meshes={}}init(){this.renderSystem=this.game.getSystem(t.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const{width:r,height:t}=e.transform.size;this.meshes[e.id]&&(this.meshes[e.id].width=r,this.meshes[e.id].height=t)}componentChanged(e){var t,n;return i(this,void 0,void 0,(function*(){if("PerspectiveMesh"===e.componentName){const i=e.gameObject.id,o=e.component;if(e.type===r.OBSERVER_TYPE.ADD){const n=this.increaseAsyncId(i),c=yield r.resource.getResource(o.resource),d=null===(t=c.data)||void 0===t?void 0:t.image;if(!this.validateAsyncId(i,n))return;if(!d)return void console.error(`GameObject:${e.gameObject.name}'s Mesh resource load error`);const h=new s.PerspectiveMesh({texture:d});o.corners?this.meshes[e.gameObject.id].setCorners(o.corners.x0,o.corners.y0,o.corners.x1,o.corners.y1,o.corners.x2,o.corners.y2,o.corners.x3,o.corners.y3):h.setCorners(0,0,d.width,0,d.width,d.height,0,d.height),this.meshes[e.gameObject.id]=h,this.containerManager.getContainer(e.gameObject.id).addChildAt(h,0)}else if(e.type===r.OBSERVER_TYPE.CHANGE){const t=this.increaseAsyncId(i),s=yield r.resource.getResource(o.resource),c=null===(n=s.data)||void 0===n?void 0:n.image;if(!this.validateAsyncId(i,t))return;if(!c)return void console.error(`GameObject:${e.gameObject.name}'s Mesh resource load error`);this.meshes[e.gameObject.id].texture=c,o.corners&&this.meshes[e.gameObject.id].setCorners(o.corners.x0,o.corners.y0,o.corners.x1,o.corners.y1,o.corners.x2,o.corners.y2,o.corners.x3,o.corners.y3)}else if(e.type===r.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(i);const r=this.meshes[e.gameObject.id];this.containerManager.getContainer(e.gameObject.id).removeChild(r),r.destroy(),delete this.meshes[e.gameObject.id]}}}))}},e.MeshSystem.systemName="PerspectiveMesh",e.MeshSystem=function(e,r,t,s){var n,i=arguments.length,o=i<3?r:null===s?s=Object.getOwnPropertyDescriptor(r,t):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,r,t,s);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(o=(i<3?n(o):i>3?n(r,t,o):n(r,t))||o);return i>3&&o&&Object.defineProperty(r,t,o),o}([r.decorators.componentObserver({PerspectiveMesh:["resource","_forceUpdate"]})],e.MeshSystem),e.PerspectiveMesh=n,Object.defineProperty(e,"__esModule",{value:!0}),e}({},EVA,EVA.plugin.renderer,PIXI);window.EVA.plugin.renderer.mesh=window.EVA.plugin.renderer.mesh||_EVA_IIFE_mesh;
@@ -0,0 +1,142 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var eva_js = require('@eva/eva.js');
6
+ var pluginRenderer = require('@eva/plugin-renderer');
7
+ var pixi_js = require('pixi.js');
8
+
9
+ class PerspectiveMesh extends eva_js.Component {
10
+ constructor() {
11
+ super(...arguments);
12
+ this._forceUpdate = 0;
13
+ }
14
+ init(obj) {
15
+ if (obj && obj.resource) {
16
+ this.resource = obj.resource;
17
+ }
18
+ }
19
+ setCorners(x0, y0, x1, y1, x2, y2, x3, y3) {
20
+ const corners = this.corners || {};
21
+ corners.x0 = x0;
22
+ corners.y0 = y0;
23
+ corners.x1 = x1;
24
+ corners.y1 = y1;
25
+ corners.x2 = x2;
26
+ corners.y2 = y2;
27
+ corners.x3 = x3;
28
+ corners.y3 = y3;
29
+ this.corners = corners;
30
+ this._forceUpdate += 1;
31
+ }
32
+ }
33
+ PerspectiveMesh.componentName = 'PerspectiveMesh';
34
+
35
+ /*! *****************************************************************************
36
+ Copyright (c) Microsoft Corporation. All rights reserved.
37
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
38
+ this file except in compliance with the License. You may obtain a copy of the
39
+ License at http://www.apache.org/licenses/LICENSE-2.0
40
+
41
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
42
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
43
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
44
+ MERCHANTABLITY OR NON-INFRINGEMENT.
45
+
46
+ See the Apache Version 2.0 License for specific language governing permissions
47
+ and limitations under the License.
48
+ ***************************************************************************** */
49
+
50
+ function __decorate(decorators, target, key, desc) {
51
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
54
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
55
+ }
56
+
57
+ function __awaiter(thisArg, _arguments, P, generator) {
58
+ return new (P || (P = Promise))(function (resolve, reject) {
59
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
60
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
61
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
62
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
63
+ });
64
+ }
65
+
66
+ exports.MeshSystem = class MeshSystem extends pluginRenderer.Renderer {
67
+ constructor() {
68
+ super(...arguments);
69
+ this.name = 'PerspectiveMesh';
70
+ this.meshes = {};
71
+ }
72
+ init() {
73
+ this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
74
+ this.renderSystem.rendererManager.register(this);
75
+ }
76
+ rendererUpdate(gameObject) {
77
+ const { width, height } = gameObject.transform.size;
78
+ if (this.meshes[gameObject.id]) {
79
+ this.meshes[gameObject.id].width = width;
80
+ this.meshes[gameObject.id].height = height;
81
+ }
82
+ }
83
+ componentChanged(changed) {
84
+ var _a, _b;
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ if (changed.componentName === 'PerspectiveMesh') {
87
+ const gameObjectId = changed.gameObject.id;
88
+ const component = changed.component;
89
+ if (changed.type === eva_js.OBSERVER_TYPE.ADD) {
90
+ const asyncId = this.increaseAsyncId(gameObjectId);
91
+ const res = yield eva_js.resource.getResource(component.resource);
92
+ const texture = (_a = res.data) === null || _a === void 0 ? void 0 : _a.image;
93
+ if (!this.validateAsyncId(gameObjectId, asyncId))
94
+ return;
95
+ if (!texture) {
96
+ console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
97
+ return;
98
+ }
99
+ const mesh = new pixi_js.PerspectiveMesh({ texture: texture });
100
+ if (component.corners) {
101
+ this.meshes[changed.gameObject.id].setCorners(component.corners.x0, component.corners.y0, component.corners.x1, component.corners.y1, component.corners.x2, component.corners.y2, component.corners.x3, component.corners.y3);
102
+ }
103
+ else {
104
+ mesh.setCorners(0, 0, texture.width, 0, texture.width, texture.height, 0, texture.height);
105
+ }
106
+ this.meshes[changed.gameObject.id] = mesh;
107
+ this.containerManager.getContainer(changed.gameObject.id).addChildAt(mesh, 0);
108
+ }
109
+ else if (changed.type === eva_js.OBSERVER_TYPE.CHANGE) {
110
+ const asyncId = this.increaseAsyncId(gameObjectId);
111
+ const res = yield eva_js.resource.getResource(component.resource);
112
+ const texture = (_b = res.data) === null || _b === void 0 ? void 0 : _b.image;
113
+ if (!this.validateAsyncId(gameObjectId, asyncId))
114
+ return;
115
+ if (!texture) {
116
+ console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
117
+ return;
118
+ }
119
+ this.meshes[changed.gameObject.id].texture = texture;
120
+ if (component.corners) {
121
+ this.meshes[changed.gameObject.id].setCorners(component.corners.x0, component.corners.y0, component.corners.x1, component.corners.y1, component.corners.x2, component.corners.y2, component.corners.x3, component.corners.y3);
122
+ }
123
+ }
124
+ else if (changed.type === eva_js.OBSERVER_TYPE.REMOVE) {
125
+ this.increaseAsyncId(gameObjectId);
126
+ const mesh = this.meshes[changed.gameObject.id];
127
+ this.containerManager.getContainer(changed.gameObject.id).removeChild(mesh);
128
+ mesh.destroy();
129
+ delete this.meshes[changed.gameObject.id];
130
+ }
131
+ }
132
+ });
133
+ }
134
+ };
135
+ exports.MeshSystem.systemName = 'PerspectiveMesh';
136
+ exports.MeshSystem = __decorate([
137
+ eva_js.decorators.componentObserver({
138
+ PerspectiveMesh: ['resource', '_forceUpdate'],
139
+ })
140
+ ], exports.MeshSystem);
141
+
142
+ exports.PerspectiveMesh = PerspectiveMesh;
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),r=require("@eva/plugin-renderer"),s=require("pixi.js");class t extends e.Component{constructor(){super(...arguments),this._forceUpdate=0}init(e){e&&e.resource&&(this.resource=e.resource)}setCorners(e,r,s,t,n,o,i,c){const h=this.corners||{};h.x0=e,h.y0=r,h.x1=s,h.y1=t,h.x2=n,h.y2=o,h.x3=i,h.y3=c,this.corners=h,this._forceUpdate+=1}}t.componentName="PerspectiveMesh",exports.MeshSystem=class extends r.Renderer{constructor(){super(...arguments),this.name="PerspectiveMesh",this.meshes={}}init(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const{width:r,height:s}=e.transform.size;this.meshes[e.id]&&(this.meshes[e.id].width=r,this.meshes[e.id].height=s)}componentChanged(r){var t,n,o,i,c,h;return o=this,i=void 0,h=function*(){if("PerspectiveMesh"===r.componentName){const o=r.gameObject.id,i=r.component;if(r.type===e.OBSERVER_TYPE.ADD){const n=this.increaseAsyncId(o),c=yield e.resource.getResource(i.resource),h=null===(t=c.data)||void 0===t?void 0:t.image;if(!this.validateAsyncId(o,n))return;if(!h)return void console.error(`GameObject:${r.gameObject.name}'s Mesh resource load error`);const a=new s.PerspectiveMesh({texture:h});i.corners?this.meshes[r.gameObject.id].setCorners(i.corners.x0,i.corners.y0,i.corners.x1,i.corners.y1,i.corners.x2,i.corners.y2,i.corners.x3,i.corners.y3):a.setCorners(0,0,h.width,0,h.width,h.height,0,h.height),this.meshes[r.gameObject.id]=a,this.containerManager.getContainer(r.gameObject.id).addChildAt(a,0)}else if(r.type===e.OBSERVER_TYPE.CHANGE){const s=this.increaseAsyncId(o),t=yield e.resource.getResource(i.resource),c=null===(n=t.data)||void 0===n?void 0:n.image;if(!this.validateAsyncId(o,s))return;if(!c)return void console.error(`GameObject:${r.gameObject.name}'s Mesh resource load error`);this.meshes[r.gameObject.id].texture=c,i.corners&&this.meshes[r.gameObject.id].setCorners(i.corners.x0,i.corners.y0,i.corners.x1,i.corners.y1,i.corners.x2,i.corners.y2,i.corners.x3,i.corners.y3)}else if(r.type===e.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(o);const e=this.meshes[r.gameObject.id];this.containerManager.getContainer(r.gameObject.id).removeChild(e),e.destroy(),delete this.meshes[r.gameObject.id]}}},new((c=void 0)||(c=Promise))((function(e,r){function s(e){try{n(h.next(e))}catch(e){r(e)}}function t(e){try{n(h.throw(e))}catch(e){r(e)}}function n(r){r.done?e(r.value):new c((function(e){e(r.value)})).then(s,t)}n((h=h.apply(o,i||[])).next())}))}},exports.MeshSystem.systemName="PerspectiveMesh",exports.MeshSystem=
2
+ /*! *****************************************************************************
3
+ Copyright (c) Microsoft Corporation. All rights reserved.
4
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
5
+ this file except in compliance with the License. You may obtain a copy of the
6
+ License at http://www.apache.org/licenses/LICENSE-2.0
7
+
8
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
9
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
10
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
11
+ MERCHANTABLITY OR NON-INFRINGEMENT.
12
+
13
+ See the Apache Version 2.0 License for specific language governing permissions
14
+ and limitations under the License.
15
+ ***************************************************************************** */
16
+ function(e,r,s,t){var n,o=arguments.length,i=o<3?r:null===t?t=Object.getOwnPropertyDescriptor(r,s):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,r,s,t);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(o<3?n(i):o>3?n(r,s,i):n(r,s))||i);return o>3&&i&&Object.defineProperty(r,s,i),i}([e.decorators.componentObserver({PerspectiveMesh:["resource","_forceUpdate"]})],exports.MeshSystem),exports.PerspectiveMesh=t;
@@ -0,0 +1,41 @@
1
+ import { Component } from '@eva/eva.js';
2
+ import { ComponentChanged } from '@eva/eva.js';
3
+ import { GameObject } from '@eva/eva.js';
4
+ import { Renderer } from '@eva/plugin-renderer';
5
+ import { RendererSystem } from '@eva/plugin-renderer';
6
+
7
+ declare interface Corners {
8
+ x0: number;
9
+ y0: number;
10
+ x1: number;
11
+ y1: number;
12
+ x2: number;
13
+ y2: number;
14
+ x3: number;
15
+ y3: number;
16
+ }
17
+
18
+ export declare class MeshSystem extends Renderer {
19
+ static systemName: string;
20
+ name: string;
21
+ renderSystem: RendererSystem;
22
+ meshes: {};
23
+ init(): void;
24
+ rendererUpdate(gameObject: GameObject): void;
25
+ componentChanged(changed: ComponentChanged): Promise<void>;
26
+ }
27
+
28
+ export declare class PerspectiveMesh extends Component<PerspectiveMeshParams> {
29
+ static componentName: string;
30
+ resource: string;
31
+ corners: Corners;
32
+ _forceUpdate: number;
33
+ init(obj?: PerspectiveMesh): void;
34
+ setCorners(x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void;
35
+ }
36
+
37
+ export declare interface PerspectiveMeshParams {
38
+ resource: string;
39
+ }
40
+
41
+ export { }
@@ -0,0 +1,138 @@
1
+ import { Component, decorators, OBSERVER_TYPE, resource } from '@eva/eva.js';
2
+ import { Renderer, RendererSystem } from '@eva/plugin-renderer';
3
+ import { PerspectiveMesh as PerspectiveMesh$1 } from 'pixi.js';
4
+
5
+ class PerspectiveMesh extends Component {
6
+ constructor() {
7
+ super(...arguments);
8
+ this._forceUpdate = 0;
9
+ }
10
+ init(obj) {
11
+ if (obj && obj.resource) {
12
+ this.resource = obj.resource;
13
+ }
14
+ }
15
+ setCorners(x0, y0, x1, y1, x2, y2, x3, y3) {
16
+ const corners = this.corners || {};
17
+ corners.x0 = x0;
18
+ corners.y0 = y0;
19
+ corners.x1 = x1;
20
+ corners.y1 = y1;
21
+ corners.x2 = x2;
22
+ corners.y2 = y2;
23
+ corners.x3 = x3;
24
+ corners.y3 = y3;
25
+ this.corners = corners;
26
+ this._forceUpdate += 1;
27
+ }
28
+ }
29
+ PerspectiveMesh.componentName = 'PerspectiveMesh';
30
+
31
+ /*! *****************************************************************************
32
+ Copyright (c) Microsoft Corporation. All rights reserved.
33
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
34
+ this file except in compliance with the License. You may obtain a copy of the
35
+ License at http://www.apache.org/licenses/LICENSE-2.0
36
+
37
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
38
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
39
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
40
+ MERCHANTABLITY OR NON-INFRINGEMENT.
41
+
42
+ See the Apache Version 2.0 License for specific language governing permissions
43
+ and limitations under the License.
44
+ ***************************************************************************** */
45
+
46
+ function __decorate(decorators, target, key, desc) {
47
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
51
+ }
52
+
53
+ function __awaiter(thisArg, _arguments, P, generator) {
54
+ return new (P || (P = Promise))(function (resolve, reject) {
55
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
56
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
57
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
58
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
59
+ });
60
+ }
61
+
62
+ let MeshSystem = class MeshSystem extends Renderer {
63
+ constructor() {
64
+ super(...arguments);
65
+ this.name = 'PerspectiveMesh';
66
+ this.meshes = {};
67
+ }
68
+ init() {
69
+ this.renderSystem = this.game.getSystem(RendererSystem);
70
+ this.renderSystem.rendererManager.register(this);
71
+ }
72
+ rendererUpdate(gameObject) {
73
+ const { width, height } = gameObject.transform.size;
74
+ if (this.meshes[gameObject.id]) {
75
+ this.meshes[gameObject.id].width = width;
76
+ this.meshes[gameObject.id].height = height;
77
+ }
78
+ }
79
+ componentChanged(changed) {
80
+ var _a, _b;
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ if (changed.componentName === 'PerspectiveMesh') {
83
+ const gameObjectId = changed.gameObject.id;
84
+ const component = changed.component;
85
+ if (changed.type === OBSERVER_TYPE.ADD) {
86
+ const asyncId = this.increaseAsyncId(gameObjectId);
87
+ const res = yield resource.getResource(component.resource);
88
+ const texture = (_a = res.data) === null || _a === void 0 ? void 0 : _a.image;
89
+ if (!this.validateAsyncId(gameObjectId, asyncId))
90
+ return;
91
+ if (!texture) {
92
+ console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
93
+ return;
94
+ }
95
+ const mesh = new PerspectiveMesh$1({ texture: texture });
96
+ if (component.corners) {
97
+ this.meshes[changed.gameObject.id].setCorners(component.corners.x0, component.corners.y0, component.corners.x1, component.corners.y1, component.corners.x2, component.corners.y2, component.corners.x3, component.corners.y3);
98
+ }
99
+ else {
100
+ mesh.setCorners(0, 0, texture.width, 0, texture.width, texture.height, 0, texture.height);
101
+ }
102
+ this.meshes[changed.gameObject.id] = mesh;
103
+ this.containerManager.getContainer(changed.gameObject.id).addChildAt(mesh, 0);
104
+ }
105
+ else if (changed.type === OBSERVER_TYPE.CHANGE) {
106
+ const asyncId = this.increaseAsyncId(gameObjectId);
107
+ const res = yield resource.getResource(component.resource);
108
+ const texture = (_b = res.data) === null || _b === void 0 ? void 0 : _b.image;
109
+ if (!this.validateAsyncId(gameObjectId, asyncId))
110
+ return;
111
+ if (!texture) {
112
+ console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
113
+ return;
114
+ }
115
+ this.meshes[changed.gameObject.id].texture = texture;
116
+ if (component.corners) {
117
+ this.meshes[changed.gameObject.id].setCorners(component.corners.x0, component.corners.y0, component.corners.x1, component.corners.y1, component.corners.x2, component.corners.y2, component.corners.x3, component.corners.y3);
118
+ }
119
+ }
120
+ else if (changed.type === OBSERVER_TYPE.REMOVE) {
121
+ this.increaseAsyncId(gameObjectId);
122
+ const mesh = this.meshes[changed.gameObject.id];
123
+ this.containerManager.getContainer(changed.gameObject.id).removeChild(mesh);
124
+ mesh.destroy();
125
+ delete this.meshes[changed.gameObject.id];
126
+ }
127
+ }
128
+ });
129
+ }
130
+ };
131
+ MeshSystem.systemName = 'PerspectiveMesh';
132
+ MeshSystem = __decorate([
133
+ decorators.componentObserver({
134
+ PerspectiveMesh: ['resource', '_forceUpdate'],
135
+ })
136
+ ], MeshSystem);
137
+
138
+ export { MeshSystem, PerspectiveMesh };
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-mesh.cjs.prod.js');
5
+ } else {
6
+ module.exports = require('./dist/plugin-renderer-mesh.cjs.js');
7
+ }
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@eva/plugin-renderer-mesh",
3
+ "version": "2.0.0-beta.7",
4
+ "description": "@eva/plugin-renderer-mesh",
5
+ "main": "index.js",
6
+ "module": "dist/plugin-renderer-mesh.esm.js",
7
+ "bundle": "EVA.plugin.renderer.mesh",
8
+ "unpkg": "dist/EVA.plugin.renderer.mesh.min.js",
9
+ "files": [
10
+ "index.js",
11
+ "dist"
12
+ ],
13
+ "types": "dist/plugin-renderer-mesh.d.ts",
14
+ "keywords": [
15
+ "eva.js"
16
+ ],
17
+ "author": "fanmingfei <az8641683@163.com>",
18
+ "license": "MIT",
19
+ "homepage": "https://eva.js.org",
20
+ "dependencies": {
21
+ "@eva/inspector-decorator": "^0.0.5",
22
+ "@eva/plugin-renderer": "2.0.0-beta.7",
23
+ "@eva/eva.js": "2.0.0-beta.7",
24
+ "pixi.js": "^8.6.5"
25
+ }
26
+ }