@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 +6 -0
- package/dist/EVA.plugin.renderer.mesh.js +145 -0
- package/dist/EVA.plugin.renderer.mesh.min.js +1 -0
- package/dist/plugin-renderer-mesh.cjs.js +142 -0
- package/dist/plugin-renderer-mesh.cjs.prod.js +16 -0
- package/dist/plugin-renderer-mesh.d.ts +41 -0
- package/dist/plugin-renderer-mesh.esm.js +138 -0
- package/index.js +7 -0
- package/package.json +26 -0
package/README.md
ADDED
|
@@ -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
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
|
+
}
|