@eva/plugin-renderer-mesh 2.1.0-beta.1 → 2.1.0-beta.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eva/plugin-renderer-mesh",
3
- "version": "2.1.0-beta.1",
3
+ "version": "2.1.0-beta.3",
4
4
  "description": "@eva/plugin-renderer-mesh",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer-mesh.esm.js",
@@ -19,8 +19,8 @@
19
19
  "homepage": "https://eva.js.org",
20
20
  "dependencies": {
21
21
  "@eva/inspector-decorator": "^2.0.0-beta.0",
22
- "@eva/plugin-renderer": "2.1.0-beta.1",
23
- "@eva/eva.js": "2.1.0-beta.1",
22
+ "@eva/plugin-renderer": "2.1.0-beta.3",
23
+ "@eva/eva.js": "2.1.0-beta.3",
24
24
  "pixi.js": "^8.17.0"
25
25
  }
26
26
  }
@@ -1,175 +0,0 @@
1
- globalThis.EVA = globalThis.EVA || {};
2
- globalThis.EVA.plugin = globalThis.EVA.plugin || {};
3
- globalThis.EVA.plugin.renderer = globalThis.EVA.plugin.renderer || {};
4
- var _EVA_IIFE_mesh = function (exports, eva_js, pluginRenderer, pixi_js) {
5
- 'use strict';
6
- function __decorate(decorators, target, key, desc) {
7
- var c = arguments.length,
8
- r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
9
- d;
10
- 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;
11
- return c > 3 && r && Object.defineProperty(target, key, r), r;
12
- }
13
- function __metadata(metadataKey, metadataValue) {
14
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
15
- }
16
- function __awaiter(thisArg, _arguments, P, generator) {
17
- function adopt(value) {
18
- return value instanceof P ? value : new P(function (resolve) {
19
- resolve(value);
20
- });
21
- }
22
- return new (P || (P = Promise))(function (resolve, reject) {
23
- function fulfilled(value) {
24
- try {
25
- step(generator.next(value));
26
- } catch (e) {
27
- reject(e);
28
- }
29
- }
30
- function rejected(value) {
31
- try {
32
- step(generator["throw"](value));
33
- } catch (e) {
34
- reject(e);
35
- }
36
- }
37
- function step(result) {
38
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
39
- }
40
- step((generator = generator.apply(thisArg, _arguments || [])).next());
41
- });
42
- }
43
- class CornersMetadata {}
44
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "x0", void 0);
45
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "y0", void 0);
46
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "x1", void 0);
47
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "y1", void 0);
48
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "x2", void 0);
49
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "y2", void 0);
50
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "x3", void 0);
51
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Number)], CornersMetadata.prototype, "y3", void 0);
52
- class PerspectiveMesh extends eva_js.Component {
53
- constructor() {
54
- super(...arguments);
55
- this.verticesX = 10;
56
- this.verticesY = 10;
57
- this._forceUpdate = 0;
58
- }
59
- init(obj) {
60
- if (obj && obj.resource) {
61
- this.resource = obj.resource;
62
- }
63
- if (obj && obj.verticesX) {
64
- this.verticesX = obj.verticesX;
65
- }
66
- if (obj && obj.verticesY) {
67
- this.verticesY = obj.verticesY;
68
- }
69
- if (obj && obj.corners) {
70
- this.corners = obj.corners;
71
- }
72
- }
73
- setCorners(x0, y0, x1, y1, x2, y2, x3, y3) {
74
- const corners = this.corners || {};
75
- corners.x0 = x0;
76
- corners.y0 = y0;
77
- corners.x1 = x1;
78
- corners.y1 = y1;
79
- corners.x2 = x2;
80
- corners.y2 = y2;
81
- corners.x3 = x3;
82
- corners.y3 = y3;
83
- this.corners = corners;
84
- this._forceUpdate += 1;
85
- }
86
- }
87
- PerspectiveMesh.componentName = 'PerspectiveMesh';
88
- __decorate([eva_js.type('string'), __metadata("design:type", String)], PerspectiveMesh.prototype, "resource", void 0);
89
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Object)], PerspectiveMesh.prototype, "verticesX", void 0);
90
- __decorate([eva_js.type('number'), eva_js.step(1), __metadata("design:type", Object)], PerspectiveMesh.prototype, "verticesY", void 0);
91
- __decorate([eva_js.Field(() => CornersMetadata), __metadata("design:type", Object)], PerspectiveMesh.prototype, "corners", void 0);
92
- let MeshSystem = class MeshSystem extends pluginRenderer.Renderer {
93
- constructor() {
94
- super(...arguments);
95
- this.name = 'MeshSystem';
96
- this.meshes = {};
97
- }
98
- init() {
99
- this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
100
- this.renderSystem.rendererManager.register(this);
101
- }
102
- componentChanged(changed) {
103
- var _a, _b;
104
- return __awaiter(this, void 0, void 0, function* () {
105
- if (changed.componentName === 'PerspectiveMesh') {
106
- const gameObjectId = changed.gameObject.id;
107
- const component = changed.component;
108
- if (changed.type === eva_js.OBSERVER_TYPE.ADD) {
109
- const mesh = new pixi_js.PerspectiveMesh({
110
- texture: new pixi_js.Texture(),
111
- verticesX: component.verticesX,
112
- verticesY: component.verticesY
113
- });
114
- this.meshes[changed.gameObject.id] = mesh;
115
- this.containerManager.getContainer(changed.gameObject.id).addChildAt(mesh, 0);
116
- const asyncId = this.increaseAsyncId(gameObjectId);
117
- const res = yield eva_js.resource.getResource(component.resource);
118
- const texture = (_a = res.data) === null || _a === void 0 ? void 0 : _a.image;
119
- if (!this.validateAsyncId(gameObjectId, asyncId)) return;
120
- if (!texture) {
121
- console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
122
- return;
123
- }
124
- mesh.texture = texture;
125
- if (component.corners) {
126
- 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);
127
- } else {
128
- mesh.setCorners(0, 0, texture.width, 0, texture.width, texture.height, 0, texture.height);
129
- }
130
- } else if (changed.type === eva_js.OBSERVER_TYPE.CHANGE) {
131
- const asyncId = this.increaseAsyncId(gameObjectId);
132
- const res = yield eva_js.resource.getResource(component.resource);
133
- const texture = (_b = res.data) === null || _b === void 0 ? void 0 : _b.image;
134
- if (!this.validateAsyncId(gameObjectId, asyncId)) return;
135
- if (!texture) {
136
- console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
137
- return;
138
- }
139
- this.meshes[changed.gameObject.id].texture = texture;
140
- if (component.corners) {
141
- 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);
142
- }
143
- } else if (changed.type === eva_js.OBSERVER_TYPE.REMOVE) {
144
- this.increaseAsyncId(gameObjectId);
145
- const mesh = this.meshes[changed.gameObject.id];
146
- this.containerManager.getContainer(changed.gameObject.id).removeChild(mesh);
147
- mesh.destroy();
148
- delete this.meshes[changed.gameObject.id];
149
- }
150
- }
151
- });
152
- }
153
- destroy() {
154
- var _a, _b;
155
- for (const key in this.meshes) {
156
- const mesh = this.meshes[key];
157
- (_b = (_a = this.containerManager) === null || _a === void 0 ? void 0 : _a.getContainer(parseInt(key))) === null || _b === void 0 ? void 0 : _b.removeChild(mesh);
158
- mesh.destroy();
159
- delete this.meshes[key];
160
- }
161
- }
162
- };
163
- MeshSystem.systemName = 'MeshSystem';
164
- MeshSystem = __decorate([eva_js.decorators.componentObserver({
165
- PerspectiveMesh: ['resource', '_forceUpdate']
166
- })], MeshSystem);
167
- var MeshSystem$1 = MeshSystem;
168
- exports.MeshSystem = MeshSystem$1;
169
- exports.PerspectiveMesh = PerspectiveMesh;
170
- Object.defineProperty(exports, '__esModule', {
171
- value: true
172
- });
173
- return exports;
174
- }({}, EVA, EVA.plugin.renderer, PIXI);
175
- globalThis.EVA.plugin.renderer.mesh = globalThis.EVA.plugin.renderer.mesh || _EVA_IIFE_mesh;
@@ -1 +0,0 @@
1
- globalThis.EVA=globalThis.EVA||{},globalThis.EVA.plugin=globalThis.EVA.plugin||{},globalThis.EVA.plugin.renderer=globalThis.EVA.plugin.renderer||{};var _EVA_IIFE_mesh=function(e,t,r,s){"use strict";function n(e,t,r,s){var n,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(o<3?n(i):o>3?n(t,r,i):n(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i}function o(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function i(e,t,r,s){return new(r||(r=Promise))(function(n,o){function i(e){try{d(s.next(e))}catch(e){o(e)}}function c(e){try{d(s.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,c)}d((s=s.apply(e,t||[])).next())})}class c{}n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"x0",void 0),n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"y0",void 0),n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"x1",void 0),n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"y1",void 0),n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"x2",void 0),n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"y2",void 0),n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"x3",void 0),n([t.type("number"),t.step(1),o("design:type",Number)],c.prototype,"y3",void 0);class d extends t.Component{constructor(){super(...arguments),this.verticesX=10,this.verticesY=10,this._forceUpdate=0}init(e){e&&e.resource&&(this.resource=e.resource),e&&e.verticesX&&(this.verticesX=e.verticesX),e&&e.verticesY&&(this.verticesY=e.verticesY),e&&e.corners&&(this.corners=e.corners)}setCorners(e,t,r,s,n,o,i,c){const d=this.corners||{};d.x0=e,d.y0=t,d.x1=r,d.y1=s,d.x2=n,d.y2=o,d.x3=i,d.y3=c,this.corners=d,this._forceUpdate+=1}}d.componentName="PerspectiveMesh",n([t.type("string"),o("design:type",String)],d.prototype,"resource",void 0),n([t.type("number"),t.step(1),o("design:type",Object)],d.prototype,"verticesX",void 0),n([t.type("number"),t.step(1),o("design:type",Object)],d.prototype,"verticesY",void 0),n([t.Field(()=>c),o("design:type",Object)],d.prototype,"corners",void 0);let p=class extends r.Renderer{constructor(){super(...arguments),this.name="MeshSystem",this.meshes={}}init(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)}componentChanged(e){var r,n;return i(this,void 0,void 0,function*(){if("PerspectiveMesh"===e.componentName){const o=e.gameObject.id,i=e.component;if(e.type===t.OBSERVER_TYPE.ADD){const n=new s.PerspectiveMesh({texture:new s.Texture,verticesX:i.verticesX,verticesY:i.verticesY});this.meshes[e.gameObject.id]=n,this.containerManager.getContainer(e.gameObject.id).addChildAt(n,0);const c=this.increaseAsyncId(o),d=yield t.resource.getResource(i.resource),p=null===(r=d.data)||void 0===r?void 0:r.image;if(!this.validateAsyncId(o,c))return;if(!p)return void console.error(`GameObject:${e.gameObject.name}'s Mesh resource load error`);n.texture=p,i.corners?this.meshes[e.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):n.setCorners(0,0,p.width,0,p.width,p.height,0,p.height)}else if(e.type===t.OBSERVER_TYPE.CHANGE){const r=this.increaseAsyncId(o),s=yield t.resource.getResource(i.resource),c=null===(n=s.data)||void 0===n?void 0:n.image;if(!this.validateAsyncId(o,r))return;if(!c)return void console.error(`GameObject:${e.gameObject.name}'s Mesh resource load error`);this.meshes[e.gameObject.id].texture=c,i.corners&&this.meshes[e.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(e.type===t.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(o);const t=this.meshes[e.gameObject.id];this.containerManager.getContainer(e.gameObject.id).removeChild(t),t.destroy(),delete this.meshes[e.gameObject.id]}}})}destroy(){var e,t;for(const r in this.meshes){const s=this.meshes[r];null===(t=null===(e=this.containerManager)||void 0===e?void 0:e.getContainer(parseInt(r)))||void 0===t||t.removeChild(s),s.destroy(),delete this.meshes[r]}}};p.systemName="MeshSystem",p=n([t.decorators.componentObserver({PerspectiveMesh:["resource","_forceUpdate"]})],p);var a=p;return e.MeshSystem=a,e.PerspectiveMesh=d,Object.defineProperty(e,"__esModule",{value:!0}),e}({},EVA,EVA.plugin.renderer,PIXI);globalThis.EVA.plugin.renderer.mesh=globalThis.EVA.plugin.renderer.mesh||_EVA_IIFE_mesh;
@@ -1,303 +0,0 @@
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
- /******************************************************************************
10
- Copyright (c) Microsoft Corporation.
11
-
12
- Permission to use, copy, modify, and/or distribute this software for any
13
- purpose with or without fee is hereby granted.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
16
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
17
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
18
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
19
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
20
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
21
- PERFORMANCE OF THIS SOFTWARE.
22
- ***************************************************************************** */
23
-
24
- function __decorate(decorators, target, key, desc) {
25
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
27
- 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;
28
- return c > 3 && r && Object.defineProperty(target, key, r), r;
29
- }
30
-
31
- function __metadata(metadataKey, metadataValue) {
32
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
33
- }
34
-
35
- function __awaiter(thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- }
44
-
45
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
46
- var e = new Error(message);
47
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
48
- };
49
-
50
- class CornersMetadata {
51
- }
52
- __decorate([
53
- eva_js.type('number'),
54
- eva_js.step(1),
55
- __metadata("design:type", Number)
56
- ], CornersMetadata.prototype, "x0", void 0);
57
- __decorate([
58
- eva_js.type('number'),
59
- eva_js.step(1),
60
- __metadata("design:type", Number)
61
- ], CornersMetadata.prototype, "y0", void 0);
62
- __decorate([
63
- eva_js.type('number'),
64
- eva_js.step(1),
65
- __metadata("design:type", Number)
66
- ], CornersMetadata.prototype, "x1", void 0);
67
- __decorate([
68
- eva_js.type('number'),
69
- eva_js.step(1),
70
- __metadata("design:type", Number)
71
- ], CornersMetadata.prototype, "y1", void 0);
72
- __decorate([
73
- eva_js.type('number'),
74
- eva_js.step(1),
75
- __metadata("design:type", Number)
76
- ], CornersMetadata.prototype, "x2", void 0);
77
- __decorate([
78
- eva_js.type('number'),
79
- eva_js.step(1),
80
- __metadata("design:type", Number)
81
- ], CornersMetadata.prototype, "y2", void 0);
82
- __decorate([
83
- eva_js.type('number'),
84
- eva_js.step(1),
85
- __metadata("design:type", Number)
86
- ], CornersMetadata.prototype, "x3", void 0);
87
- __decorate([
88
- eva_js.type('number'),
89
- eva_js.step(1),
90
- __metadata("design:type", Number)
91
- ], CornersMetadata.prototype, "y3", void 0);
92
- /**
93
- * 透视网格组件
94
- *
95
- * PerspectiveMesh 组件用于创建具有透视变形效果的图片。
96
- * 通过将图片分割成网格并调整四个角的位置,可以实现 3D 透视、梯形变换等效果,
97
- * 适用于翻书效果、卡片翻转、3D 地面贴图等场景。
98
- *
99
- * 工作原理:
100
- * - 将图片分割成 M×N 的网格
101
- * - 通过调整四个角的位置实现透视变换
102
- * - 网格越密集,变形效果越平滑
103
- *
104
- * @example
105
- * ```typescript
106
- * // 创建透视变形的图片
107
- * const card = new GameObject('card');
108
- * const mesh = new PerspectiveMesh({
109
- * resource: 'cardImage',
110
- * verticesX: 10, // 横向网格数
111
- * verticesY: 10 // 纵向网格数
112
- * });
113
- * card.addComponent(mesh);
114
- *
115
- * // 设置四个角的位置实现透视效果
116
- * // 参数:左上(x0,y0), 右上(x1,y1), 右下(x2,y2), 左下(x3,y3)
117
- * mesh.setCorners(
118
- * 50, 0, // 左上角
119
- * 350, 0, // 右上角
120
- * 400, 300, // 右下角
121
- * 0, 300 // 左下角
122
- * );
123
- *
124
- * // 创建翻书效果
125
- * let angle = 0;
126
- * setInterval(() => {
127
- * angle += 0.1;
128
- * const offset = Math.sin(angle) * 50;
129
- * mesh.setCorners(
130
- * offset, 0,
131
- * 400 - offset, 0,
132
- * 400, 300,
133
- * 0, 300
134
- * );
135
- * }, 16);
136
- * ```
137
- */
138
- class PerspectiveMesh extends eva_js.Component {
139
- constructor() {
140
- super(...arguments);
141
- /** 横向顶点数量(网格密度) */
142
- this.verticesX = 10;
143
- /** 纵向顶点数量(网格密度) */
144
- this.verticesY = 10;
145
- /** 强制更新标志 */
146
- this._forceUpdate = 0;
147
- }
148
- /**
149
- * 初始化组件
150
- * @param obj - 初始化参数
151
- * @param obj.resource - 纹理资源名称
152
- * @param obj.verticesX - 横向网格密度
153
- * @param obj.verticesY - 纵向网格密度
154
- */
155
- init(obj) {
156
- if (obj && obj.resource) {
157
- this.resource = obj.resource;
158
- }
159
- if (obj && obj.verticesX) {
160
- this.verticesX = obj.verticesX;
161
- }
162
- if (obj && obj.verticesY) {
163
- this.verticesY = obj.verticesY;
164
- }
165
- if (obj && obj.corners) {
166
- this.corners = obj.corners;
167
- }
168
- }
169
- /**
170
- * 设置四个角的位置
171
- *
172
- * 通过改变四个角的坐标来实现透视变换效果。
173
- *
174
- * @param x0 - 左上角 X 坐标
175
- * @param y0 - 左上角 Y 坐标
176
- * @param x1 - 右上角 X 坐标
177
- * @param y1 - 右上角 Y 坐标
178
- * @param x2 - 右下角 X 坐标
179
- * @param y2 - 右下角 Y 坐标
180
- * @param x3 - 左下角 X 坐标
181
- * @param y3 - 左下角 Y 坐标
182
- */
183
- setCorners(x0, y0, x1, y1, x2, y2, x3, y3) {
184
- const corners = this.corners || {};
185
- corners.x0 = x0;
186
- corners.y0 = y0;
187
- corners.x1 = x1;
188
- corners.y1 = y1;
189
- corners.x2 = x2;
190
- corners.y2 = y2;
191
- corners.x3 = x3;
192
- corners.y3 = y3;
193
- this.corners = corners;
194
- this._forceUpdate += 1;
195
- }
196
- }
197
- /** 组件名称 */
198
- PerspectiveMesh.componentName = 'PerspectiveMesh';
199
- __decorate([
200
- eva_js.type('string'),
201
- __metadata("design:type", String)
202
- ], PerspectiveMesh.prototype, "resource", void 0);
203
- __decorate([
204
- eva_js.type('number'),
205
- eva_js.step(1),
206
- __metadata("design:type", Object)
207
- ], PerspectiveMesh.prototype, "verticesX", void 0);
208
- __decorate([
209
- eva_js.type('number'),
210
- eva_js.step(1),
211
- __metadata("design:type", Object)
212
- ], PerspectiveMesh.prototype, "verticesY", void 0);
213
- __decorate([
214
- eva_js.Field(() => CornersMetadata),
215
- __metadata("design:type", Object)
216
- ], PerspectiveMesh.prototype, "corners", void 0);
217
-
218
- let MeshSystem = class MeshSystem extends pluginRenderer.Renderer {
219
- constructor() {
220
- super(...arguments);
221
- this.name = 'MeshSystem';
222
- this.meshes = {};
223
- }
224
- init() {
225
- this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
226
- this.renderSystem.rendererManager.register(this);
227
- }
228
- componentChanged(changed) {
229
- var _a, _b;
230
- return __awaiter(this, void 0, void 0, function* () {
231
- if (changed.componentName === 'PerspectiveMesh') {
232
- const gameObjectId = changed.gameObject.id;
233
- const component = changed.component;
234
- if (changed.type === eva_js.OBSERVER_TYPE.ADD) {
235
- const mesh = new pixi_js.PerspectiveMesh({
236
- texture: new pixi_js.Texture(),
237
- verticesX: component.verticesX,
238
- verticesY: component.verticesY,
239
- });
240
- this.meshes[changed.gameObject.id] = mesh;
241
- this.containerManager.getContainer(changed.gameObject.id).addChildAt(mesh, 0);
242
- const asyncId = this.increaseAsyncId(gameObjectId);
243
- const res = yield eva_js.resource.getResource(component.resource);
244
- const texture = (_a = res.data) === null || _a === void 0 ? void 0 : _a.image;
245
- if (!this.validateAsyncId(gameObjectId, asyncId))
246
- return;
247
- if (!texture) {
248
- console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
249
- return;
250
- }
251
- mesh.texture = texture;
252
- if (component.corners) {
253
- 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);
254
- }
255
- else {
256
- mesh.setCorners(0, 0, texture.width, 0, texture.width, texture.height, 0, texture.height);
257
- }
258
- }
259
- else if (changed.type === eva_js.OBSERVER_TYPE.CHANGE) {
260
- const asyncId = this.increaseAsyncId(gameObjectId);
261
- const res = yield eva_js.resource.getResource(component.resource);
262
- const texture = (_b = res.data) === null || _b === void 0 ? void 0 : _b.image;
263
- if (!this.validateAsyncId(gameObjectId, asyncId))
264
- return;
265
- if (!texture) {
266
- console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
267
- return;
268
- }
269
- this.meshes[changed.gameObject.id].texture = texture;
270
- if (component.corners) {
271
- 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);
272
- }
273
- }
274
- else if (changed.type === eva_js.OBSERVER_TYPE.REMOVE) {
275
- this.increaseAsyncId(gameObjectId);
276
- const mesh = this.meshes[changed.gameObject.id];
277
- this.containerManager.getContainer(changed.gameObject.id).removeChild(mesh);
278
- mesh.destroy();
279
- delete this.meshes[changed.gameObject.id];
280
- }
281
- }
282
- });
283
- }
284
- destroy() {
285
- var _a, _b;
286
- for (const key in this.meshes) {
287
- const mesh = this.meshes[key];
288
- (_b = (_a = this.containerManager) === null || _a === void 0 ? void 0 : _a.getContainer(parseInt(key))) === null || _b === void 0 ? void 0 : _b.removeChild(mesh);
289
- mesh.destroy();
290
- delete this.meshes[key];
291
- }
292
- }
293
- };
294
- MeshSystem.systemName = 'MeshSystem';
295
- MeshSystem = __decorate([
296
- eva_js.decorators.componentObserver({
297
- PerspectiveMesh: ['resource', '_forceUpdate'],
298
- })
299
- ], MeshSystem);
300
- var MeshSystem$1 = MeshSystem;
301
-
302
- exports.MeshSystem = MeshSystem$1;
303
- exports.PerspectiveMesh = PerspectiveMesh;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),t=require("@eva/plugin-renderer"),r=require("pixi.js");function s(e,t,r,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(i=(n<3?o(i):n>3?o(t,r,i):o(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i}function o(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function n(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{p(s.next(e))}catch(e){n(e)}}function c(e){try{p(s.throw(e))}catch(e){n(e)}}function p(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,c)}p((s=s.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class i{}s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"x0",void 0),s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"y0",void 0),s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"x1",void 0),s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"y1",void 0),s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"x2",void 0),s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"y2",void 0),s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"x3",void 0),s([e.type("number"),e.step(1),o("design:type",Number)],i.prototype,"y3",void 0);class c extends e.Component{constructor(){super(...arguments),this.verticesX=10,this.verticesY=10,this._forceUpdate=0}init(e){e&&e.resource&&(this.resource=e.resource),e&&e.verticesX&&(this.verticesX=e.verticesX),e&&e.verticesY&&(this.verticesY=e.verticesY),e&&e.corners&&(this.corners=e.corners)}setCorners(e,t,r,s,o,n,i,c){const p=this.corners||{};p.x0=e,p.y0=t,p.x1=r,p.y1=s,p.x2=o,p.y2=n,p.x3=i,p.y3=c,this.corners=p,this._forceUpdate+=1}}c.componentName="PerspectiveMesh",s([e.type("string"),o("design:type",String)],c.prototype,"resource",void 0),s([e.type("number"),e.step(1),o("design:type",Object)],c.prototype,"verticesX",void 0),s([e.type("number"),e.step(1),o("design:type",Object)],c.prototype,"verticesY",void 0),s([e.Field(()=>i),o("design:type",Object)],c.prototype,"corners",void 0);let p=class extends t.Renderer{constructor(){super(...arguments),this.name="MeshSystem",this.meshes={}}init(){this.renderSystem=this.game.getSystem(t.RendererSystem),this.renderSystem.rendererManager.register(this)}componentChanged(t){var s,o;return n(this,void 0,void 0,function*(){if("PerspectiveMesh"===t.componentName){const n=t.gameObject.id,i=t.component;if(t.type===e.OBSERVER_TYPE.ADD){const o=new r.PerspectiveMesh({texture:new r.Texture,verticesX:i.verticesX,verticesY:i.verticesY});this.meshes[t.gameObject.id]=o,this.containerManager.getContainer(t.gameObject.id).addChildAt(o,0);const c=this.increaseAsyncId(n),p=yield e.resource.getResource(i.resource),d=null===(s=p.data)||void 0===s?void 0:s.image;if(!this.validateAsyncId(n,c))return;if(!d)return void console.error(`GameObject:${t.gameObject.name}'s Mesh resource load error`);o.texture=d,i.corners?this.meshes[t.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):o.setCorners(0,0,d.width,0,d.width,d.height,0,d.height)}else if(t.type===e.OBSERVER_TYPE.CHANGE){const r=this.increaseAsyncId(n),s=yield e.resource.getResource(i.resource),c=null===(o=s.data)||void 0===o?void 0:o.image;if(!this.validateAsyncId(n,r))return;if(!c)return void console.error(`GameObject:${t.gameObject.name}'s Mesh resource load error`);this.meshes[t.gameObject.id].texture=c,i.corners&&this.meshes[t.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(t.type===e.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(n);const e=this.meshes[t.gameObject.id];this.containerManager.getContainer(t.gameObject.id).removeChild(e),e.destroy(),delete this.meshes[t.gameObject.id]}}})}destroy(){var e,t;for(const r in this.meshes){const s=this.meshes[r];null===(t=null===(e=this.containerManager)||void 0===e?void 0:e.getContainer(parseInt(r)))||void 0===t||t.removeChild(s),s.destroy(),delete this.meshes[r]}}};p.systemName="MeshSystem",p=s([e.decorators.componentObserver({PerspectiveMesh:["resource","_forceUpdate"]})],p);var d=p;exports.MeshSystem=d,exports.PerspectiveMesh=c;
@@ -1,118 +0,0 @@
1
- import { Component } from '@eva/eva.js';
2
- import { ComponentChanged } from '@eva/eva.js';
3
- import { Renderer } from '@eva/plugin-renderer';
4
- import { RendererSystem } from '@eva/plugin-renderer';
5
-
6
- declare interface Corners {
7
- x0: number;
8
- y0: number;
9
- x1: number;
10
- y1: number;
11
- x2: number;
12
- y2: number;
13
- x3: number;
14
- y3: number;
15
- }
16
-
17
- export declare class MeshSystem extends Renderer {
18
- static systemName: string;
19
- name: string;
20
- renderSystem: RendererSystem;
21
- meshes: {};
22
- init(): void;
23
- componentChanged(changed: ComponentChanged): Promise<void>;
24
- destroy(): void;
25
- }
26
-
27
- /**
28
- * 透视网格组件
29
- *
30
- * PerspectiveMesh 组件用于创建具有透视变形效果的图片。
31
- * 通过将图片分割成网格并调整四个角的位置,可以实现 3D 透视、梯形变换等效果,
32
- * 适用于翻书效果、卡片翻转、3D 地面贴图等场景。
33
- *
34
- * 工作原理:
35
- * - 将图片分割成 M×N 的网格
36
- * - 通过调整四个角的位置实现透视变换
37
- * - 网格越密集,变形效果越平滑
38
- *
39
- * @example
40
- * ```typescript
41
- * // 创建透视变形的图片
42
- * const card = new GameObject('card');
43
- * const mesh = new PerspectiveMesh({
44
- * resource: 'cardImage',
45
- * verticesX: 10, // 横向网格数
46
- * verticesY: 10 // 纵向网格数
47
- * });
48
- * card.addComponent(mesh);
49
- *
50
- * // 设置四个角的位置实现透视效果
51
- * // 参数:左上(x0,y0), 右上(x1,y1), 右下(x2,y2), 左下(x3,y3)
52
- * mesh.setCorners(
53
- * 50, 0, // 左上角
54
- * 350, 0, // 右上角
55
- * 400, 300, // 右下角
56
- * 0, 300 // 左下角
57
- * );
58
- *
59
- * // 创建翻书效果
60
- * let angle = 0;
61
- * setInterval(() => {
62
- * angle += 0.1;
63
- * const offset = Math.sin(angle) * 50;
64
- * mesh.setCorners(
65
- * offset, 0,
66
- * 400 - offset, 0,
67
- * 400, 300,
68
- * 0, 300
69
- * );
70
- * }, 16);
71
- * ```
72
- */
73
- export declare class PerspectiveMesh extends Component<PerspectiveMeshParams> {
74
- /** 组件名称 */
75
- static componentName: string;
76
- /** 纹理资源名称 */
77
- resource: string;
78
- /** 横向顶点数量(网格密度) */
79
- verticesX: number;
80
- /** 纵向顶点数量(网格密度) */
81
- verticesY: number;
82
- /** 四个角的坐标位置 */
83
- corners: Corners;
84
- /** 强制更新标志 */
85
- _forceUpdate: number;
86
- /**
87
- * 初始化组件
88
- * @param obj - 初始化参数
89
- * @param obj.resource - 纹理资源名称
90
- * @param obj.verticesX - 横向网格密度
91
- * @param obj.verticesY - 纵向网格密度
92
- */
93
- init(obj?: PerspectiveMeshParams): void;
94
- /**
95
- * 设置四个角的位置
96
- *
97
- * 通过改变四个角的坐标来实现透视变换效果。
98
- *
99
- * @param x0 - 左上角 X 坐标
100
- * @param y0 - 左上角 Y 坐标
101
- * @param x1 - 右上角 X 坐标
102
- * @param y1 - 右上角 Y 坐标
103
- * @param x2 - 右下角 X 坐标
104
- * @param y2 - 右下角 Y 坐标
105
- * @param x3 - 左下角 X 坐标
106
- * @param y3 - 左下角 Y 坐标
107
- */
108
- setCorners(x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void;
109
- }
110
-
111
- declare interface PerspectiveMeshParams {
112
- resource: string;
113
- verticesX?: number;
114
- verticesY?: number;
115
- corners?: Corners;
116
- }
117
-
118
- export { }
@@ -1,298 +0,0 @@
1
- import { Component, type, step, Field, decorators, OBSERVER_TYPE, resource } from '@eva/eva.js';
2
- import { Renderer, RendererSystem } from '@eva/plugin-renderer';
3
- import { PerspectiveMesh as PerspectiveMesh$1, Texture } from 'pixi.js';
4
-
5
- /******************************************************************************
6
- Copyright (c) Microsoft Corporation.
7
-
8
- Permission to use, copy, modify, and/or distribute this software for any
9
- purpose with or without fee is hereby granted.
10
-
11
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
- PERFORMANCE OF THIS SOFTWARE.
18
- ***************************************************************************** */
19
-
20
- function __decorate(decorators, target, key, desc) {
21
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
23
- 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;
24
- return c > 3 && r && Object.defineProperty(target, key, r), r;
25
- }
26
-
27
- function __metadata(metadataKey, metadataValue) {
28
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
29
- }
30
-
31
- function __awaiter(thisArg, _arguments, P, generator) {
32
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
33
- return new (P || (P = Promise))(function (resolve, reject) {
34
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
35
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
36
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
37
- step((generator = generator.apply(thisArg, _arguments || [])).next());
38
- });
39
- }
40
-
41
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
42
- var e = new Error(message);
43
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
44
- };
45
-
46
- class CornersMetadata {
47
- }
48
- __decorate([
49
- type('number'),
50
- step(1),
51
- __metadata("design:type", Number)
52
- ], CornersMetadata.prototype, "x0", void 0);
53
- __decorate([
54
- type('number'),
55
- step(1),
56
- __metadata("design:type", Number)
57
- ], CornersMetadata.prototype, "y0", void 0);
58
- __decorate([
59
- type('number'),
60
- step(1),
61
- __metadata("design:type", Number)
62
- ], CornersMetadata.prototype, "x1", void 0);
63
- __decorate([
64
- type('number'),
65
- step(1),
66
- __metadata("design:type", Number)
67
- ], CornersMetadata.prototype, "y1", void 0);
68
- __decorate([
69
- type('number'),
70
- step(1),
71
- __metadata("design:type", Number)
72
- ], CornersMetadata.prototype, "x2", void 0);
73
- __decorate([
74
- type('number'),
75
- step(1),
76
- __metadata("design:type", Number)
77
- ], CornersMetadata.prototype, "y2", void 0);
78
- __decorate([
79
- type('number'),
80
- step(1),
81
- __metadata("design:type", Number)
82
- ], CornersMetadata.prototype, "x3", void 0);
83
- __decorate([
84
- type('number'),
85
- step(1),
86
- __metadata("design:type", Number)
87
- ], CornersMetadata.prototype, "y3", void 0);
88
- /**
89
- * 透视网格组件
90
- *
91
- * PerspectiveMesh 组件用于创建具有透视变形效果的图片。
92
- * 通过将图片分割成网格并调整四个角的位置,可以实现 3D 透视、梯形变换等效果,
93
- * 适用于翻书效果、卡片翻转、3D 地面贴图等场景。
94
- *
95
- * 工作原理:
96
- * - 将图片分割成 M×N 的网格
97
- * - 通过调整四个角的位置实现透视变换
98
- * - 网格越密集,变形效果越平滑
99
- *
100
- * @example
101
- * ```typescript
102
- * // 创建透视变形的图片
103
- * const card = new GameObject('card');
104
- * const mesh = new PerspectiveMesh({
105
- * resource: 'cardImage',
106
- * verticesX: 10, // 横向网格数
107
- * verticesY: 10 // 纵向网格数
108
- * });
109
- * card.addComponent(mesh);
110
- *
111
- * // 设置四个角的位置实现透视效果
112
- * // 参数:左上(x0,y0), 右上(x1,y1), 右下(x2,y2), 左下(x3,y3)
113
- * mesh.setCorners(
114
- * 50, 0, // 左上角
115
- * 350, 0, // 右上角
116
- * 400, 300, // 右下角
117
- * 0, 300 // 左下角
118
- * );
119
- *
120
- * // 创建翻书效果
121
- * let angle = 0;
122
- * setInterval(() => {
123
- * angle += 0.1;
124
- * const offset = Math.sin(angle) * 50;
125
- * mesh.setCorners(
126
- * offset, 0,
127
- * 400 - offset, 0,
128
- * 400, 300,
129
- * 0, 300
130
- * );
131
- * }, 16);
132
- * ```
133
- */
134
- class PerspectiveMesh extends Component {
135
- constructor() {
136
- super(...arguments);
137
- /** 横向顶点数量(网格密度) */
138
- this.verticesX = 10;
139
- /** 纵向顶点数量(网格密度) */
140
- this.verticesY = 10;
141
- /** 强制更新标志 */
142
- this._forceUpdate = 0;
143
- }
144
- /**
145
- * 初始化组件
146
- * @param obj - 初始化参数
147
- * @param obj.resource - 纹理资源名称
148
- * @param obj.verticesX - 横向网格密度
149
- * @param obj.verticesY - 纵向网格密度
150
- */
151
- init(obj) {
152
- if (obj && obj.resource) {
153
- this.resource = obj.resource;
154
- }
155
- if (obj && obj.verticesX) {
156
- this.verticesX = obj.verticesX;
157
- }
158
- if (obj && obj.verticesY) {
159
- this.verticesY = obj.verticesY;
160
- }
161
- if (obj && obj.corners) {
162
- this.corners = obj.corners;
163
- }
164
- }
165
- /**
166
- * 设置四个角的位置
167
- *
168
- * 通过改变四个角的坐标来实现透视变换效果。
169
- *
170
- * @param x0 - 左上角 X 坐标
171
- * @param y0 - 左上角 Y 坐标
172
- * @param x1 - 右上角 X 坐标
173
- * @param y1 - 右上角 Y 坐标
174
- * @param x2 - 右下角 X 坐标
175
- * @param y2 - 右下角 Y 坐标
176
- * @param x3 - 左下角 X 坐标
177
- * @param y3 - 左下角 Y 坐标
178
- */
179
- setCorners(x0, y0, x1, y1, x2, y2, x3, y3) {
180
- const corners = this.corners || {};
181
- corners.x0 = x0;
182
- corners.y0 = y0;
183
- corners.x1 = x1;
184
- corners.y1 = y1;
185
- corners.x2 = x2;
186
- corners.y2 = y2;
187
- corners.x3 = x3;
188
- corners.y3 = y3;
189
- this.corners = corners;
190
- this._forceUpdate += 1;
191
- }
192
- }
193
- /** 组件名称 */
194
- PerspectiveMesh.componentName = 'PerspectiveMesh';
195
- __decorate([
196
- type('string'),
197
- __metadata("design:type", String)
198
- ], PerspectiveMesh.prototype, "resource", void 0);
199
- __decorate([
200
- type('number'),
201
- step(1),
202
- __metadata("design:type", Object)
203
- ], PerspectiveMesh.prototype, "verticesX", void 0);
204
- __decorate([
205
- type('number'),
206
- step(1),
207
- __metadata("design:type", Object)
208
- ], PerspectiveMesh.prototype, "verticesY", void 0);
209
- __decorate([
210
- Field(() => CornersMetadata),
211
- __metadata("design:type", Object)
212
- ], PerspectiveMesh.prototype, "corners", void 0);
213
-
214
- let MeshSystem = class MeshSystem extends Renderer {
215
- constructor() {
216
- super(...arguments);
217
- this.name = 'MeshSystem';
218
- this.meshes = {};
219
- }
220
- init() {
221
- this.renderSystem = this.game.getSystem(RendererSystem);
222
- this.renderSystem.rendererManager.register(this);
223
- }
224
- componentChanged(changed) {
225
- var _a, _b;
226
- return __awaiter(this, void 0, void 0, function* () {
227
- if (changed.componentName === 'PerspectiveMesh') {
228
- const gameObjectId = changed.gameObject.id;
229
- const component = changed.component;
230
- if (changed.type === OBSERVER_TYPE.ADD) {
231
- const mesh = new PerspectiveMesh$1({
232
- texture: new Texture(),
233
- verticesX: component.verticesX,
234
- verticesY: component.verticesY,
235
- });
236
- this.meshes[changed.gameObject.id] = mesh;
237
- this.containerManager.getContainer(changed.gameObject.id).addChildAt(mesh, 0);
238
- const asyncId = this.increaseAsyncId(gameObjectId);
239
- const res = yield resource.getResource(component.resource);
240
- const texture = (_a = res.data) === null || _a === void 0 ? void 0 : _a.image;
241
- if (!this.validateAsyncId(gameObjectId, asyncId))
242
- return;
243
- if (!texture) {
244
- console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
245
- return;
246
- }
247
- mesh.texture = texture;
248
- if (component.corners) {
249
- 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);
250
- }
251
- else {
252
- mesh.setCorners(0, 0, texture.width, 0, texture.width, texture.height, 0, texture.height);
253
- }
254
- }
255
- else if (changed.type === OBSERVER_TYPE.CHANGE) {
256
- const asyncId = this.increaseAsyncId(gameObjectId);
257
- const res = yield resource.getResource(component.resource);
258
- const texture = (_b = res.data) === null || _b === void 0 ? void 0 : _b.image;
259
- if (!this.validateAsyncId(gameObjectId, asyncId))
260
- return;
261
- if (!texture) {
262
- console.error(`GameObject:${changed.gameObject.name}'s Mesh resource load error`);
263
- return;
264
- }
265
- this.meshes[changed.gameObject.id].texture = texture;
266
- if (component.corners) {
267
- 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);
268
- }
269
- }
270
- else if (changed.type === OBSERVER_TYPE.REMOVE) {
271
- this.increaseAsyncId(gameObjectId);
272
- const mesh = this.meshes[changed.gameObject.id];
273
- this.containerManager.getContainer(changed.gameObject.id).removeChild(mesh);
274
- mesh.destroy();
275
- delete this.meshes[changed.gameObject.id];
276
- }
277
- }
278
- });
279
- }
280
- destroy() {
281
- var _a, _b;
282
- for (const key in this.meshes) {
283
- const mesh = this.meshes[key];
284
- (_b = (_a = this.containerManager) === null || _a === void 0 ? void 0 : _a.getContainer(parseInt(key))) === null || _b === void 0 ? void 0 : _b.removeChild(mesh);
285
- mesh.destroy();
286
- delete this.meshes[key];
287
- }
288
- }
289
- };
290
- MeshSystem.systemName = 'MeshSystem';
291
- MeshSystem = __decorate([
292
- decorators.componentObserver({
293
- PerspectiveMesh: ['resource', '_forceUpdate'],
294
- })
295
- ], MeshSystem);
296
- var MeshSystem$1 = MeshSystem;
297
-
298
- export { MeshSystem$1 as MeshSystem, PerspectiveMesh };