@eva/plugin-renderer-mesh 2.0.1-beta.39 → 2.0.1-beta.40

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.0.1-beta.39",
3
+ "version": "2.0.1-beta.40",
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": "^0.0.5",
22
- "@eva/plugin-renderer": "2.0.1-beta.39",
23
- "@eva/eva.js": "2.0.1-beta.39",
22
+ "@eva/plugin-renderer": "2.0.1-beta.40",
23
+ "@eva/eva.js": "2.0.1-beta.40",
24
24
  "pixi.js": "^8.17.0"
25
25
  }
26
26
  }
@@ -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,r,s,t){"use strict";class n extends r.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)}setCorners(e,r,s,t,n,i,o,c){const a=this.corners||{};a.x0=e,a.y0=r,a.x1=s,a.y1=t,a.x2=n,a.y2=i,a.x3=o,a.y3=c,this.corners=a,this._forceUpdate+=1}}function i(e,r,s,t){return new(s||(s=Promise))((function(n,i){function o(e){try{a(t.next(e))}catch(e){i(e)}}function c(e){try{a(t.throw(e))}catch(e){i(e)}}function a(e){var r;e.done?n(e.value):(r=e.value,r instanceof s?r:new s((function(e){e(r)}))).then(o,c)}a((t=t.apply(e,r||[])).next())}))}n.componentName="PerspectiveMesh";let o=class extends s.Renderer{constructor(){super(...arguments),this.name="MeshSystem",this.meshes={}}init(){this.renderSystem=this.game.getSystem(s.RendererSystem),this.renderSystem.rendererManager.register(this)}componentChanged(e){var s,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=new t.PerspectiveMesh({texture:new t.Texture,verticesX:o.verticesX,verticesY:o.verticesY});this.meshes[e.gameObject.id]=n,this.containerManager.getContainer(e.gameObject.id).addChildAt(n,0);const c=this.increaseAsyncId(i),a=yield r.resource.getResource(o.resource),h=null===(s=a.data)||void 0===s?void 0:s.image;if(!this.validateAsyncId(i,c))return;if(!h)return void console.error(`GameObject:${e.gameObject.name}'s Mesh resource load error`);n.texture=h,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):n.setCorners(0,0,h.width,0,h.width,h.height,0,h.height)}else if(e.type===r.OBSERVER_TYPE.CHANGE){const s=this.increaseAsyncId(i),t=yield r.resource.getResource(o.resource),c=null===(n=t.data)||void 0===n?void 0:n.image;if(!this.validateAsyncId(i,s))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]}}}))}destroy(){var e,r;for(const s in this.meshes){const t=this.meshes[s];null===(r=null===(e=this.containerManager)||void 0===e?void 0:e.getContainer(parseInt(s)))||void 0===r||r.removeChild(t),t.destroy(),delete this.meshes[s]}}};o.systemName="MeshSystem",o=function(e,r,s,t){var n,i=arguments.length,o=i<3?r:null===t?t=Object.getOwnPropertyDescriptor(r,s):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,r,s,t);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(o=(i<3?n(o):i>3?n(r,s,o):n(r,s))||o);return i>3&&o&&Object.defineProperty(r,s,o),o}([r.decorators.componentObserver({PerspectiveMesh:["resource","_forceUpdate"]})],o);var c=o;return e.MeshSystem=c,e.PerspectiveMesh=n,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,16 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),r=require("@eva/plugin-renderer"),t=require("pixi.js");class s 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)}setCorners(e,r,t,s,n,i,o,c){const a=this.corners||{};a.x0=e,a.y0=r,a.x1=t,a.y1=s,a.x2=n,a.y2=i,a.x3=o,a.y3=c,this.corners=a,this._forceUpdate+=1}}s.componentName="PerspectiveMesh";let n=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(r){var s,n,i,o,c,a;return i=this,o=void 0,a=function*(){if("PerspectiveMesh"===r.componentName){const i=r.gameObject.id,o=r.component;if(r.type===e.OBSERVER_TYPE.ADD){const n=new t.PerspectiveMesh({texture:new t.Texture,verticesX:o.verticesX,verticesY:o.verticesY});this.meshes[r.gameObject.id]=n,this.containerManager.getContainer(r.gameObject.id).addChildAt(n,0);const c=this.increaseAsyncId(i),a=yield e.resource.getResource(o.resource),h=null===(s=a.data)||void 0===s?void 0:s.image;if(!this.validateAsyncId(i,c))return;if(!h)return void console.error(`GameObject:${r.gameObject.name}'s Mesh resource load error`);n.texture=h,o.corners?this.meshes[r.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):n.setCorners(0,0,h.width,0,h.width,h.height,0,h.height)}else if(r.type===e.OBSERVER_TYPE.CHANGE){const t=this.increaseAsyncId(i),s=yield e.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:${r.gameObject.name}'s Mesh resource load error`);this.meshes[r.gameObject.id].texture=c,o.corners&&this.meshes[r.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(r.type===e.OBSERVER_TYPE.REMOVE){this.increaseAsyncId(i);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 t(e){try{n(a.next(e))}catch(e){r(e)}}function s(e){try{n(a.throw(e))}catch(e){r(e)}}function n(r){r.done?e(r.value):new c((function(e){e(r.value)})).then(t,s)}n((a=a.apply(i,o||[])).next())}))}destroy(){var e,r;for(const t in this.meshes){const s=this.meshes[t];null===(r=null===(e=this.containerManager)||void 0===e?void 0:e.getContainer(parseInt(t)))||void 0===r||r.removeChild(s),s.destroy(),delete this.meshes[t]}}};n.systemName="MeshSystem",n=
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,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}([e.decorators.componentObserver({PerspectiveMesh:["resource","_forceUpdate"]})],n);var i=n;exports.MeshSystem=i,exports.PerspectiveMesh=s;
@@ -1,117 +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
- }
116
-
117
- export { }