@eva/plugin-renderer 2.0.1-beta.27 → 2.0.1-beta.29

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.
@@ -44,12 +44,45 @@ function __awaiter(thisArg, _arguments, P, generator) {
44
44
  });
45
45
  }
46
46
 
47
+ /**
48
+ * 渲染管理器类
49
+ *
50
+ * RendererManager 负责管理和协调所有渲染器。
51
+ * 它将组件变化事件分发给相应的渲染器,
52
+ * 并在每帧调用渲染器的更新方法。
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const rendererManager = new RendererManager({
57
+ * game,
58
+ * rendererSystem
59
+ * });
60
+ *
61
+ * rendererManager.register(
62
+ * new SpriteRenderer(),
63
+ * new TextRenderer()
64
+ * );
65
+ * ```
66
+ */
47
67
  class RendererManager {
68
+ /**
69
+ * 构造渲染管理器
70
+ * @param game - 游戏实例
71
+ * @param rendererSystem - 渲染系统实例
72
+ */
48
73
  constructor({ game, rendererSystem }) {
74
+ /** 注册的渲染器列表 */
49
75
  this.renderers = [];
50
76
  this.game = game;
51
77
  this.rendererSystem = rendererSystem;
52
78
  }
79
+ /**
80
+ * 注册渲染器
81
+ *
82
+ * 将渲染器添加到管理器,并为其设置必要的引用。
83
+ *
84
+ * @param renderers - 要注册的渲染器列表
85
+ */
53
86
  register(...renderers) {
54
87
  for (const renderer of renderers) {
55
88
  renderer.game = this.game;
@@ -131,9 +164,11 @@ class ContainerManager {
131
164
  return;
132
165
  const { anchor, origin, position, rotation, scale, size, skew } = transform;
133
166
  container.rotation = rotation;
167
+ // @ts-ignore
134
168
  container.scale = scale;
135
169
  container.pivot.x = size.width * origin.x;
136
170
  container.pivot.y = size.height * origin.y;
171
+ // @ts-ignore
137
172
  container.skew = skew;
138
173
  let x = position.x;
139
174
  let y = position.y;
@@ -142,6 +177,7 @@ class ContainerManager {
142
177
  x = x + parent.size.width * anchor.x;
143
178
  y = y + parent.size.height * anchor.y;
144
179
  }
180
+ // @ts-ignore
145
181
  container.position = { x, y };
146
182
  }
147
183
  }
@@ -158,7 +194,12 @@ let Transform = class Transform extends EventEmitter__default {
158
194
  init(system) {
159
195
  this.system = system;
160
196
  this.on('changeScene', ({ scene, mode, application }) => {
197
+ // switch (mode) {
198
+ // case LOAD_SCENE_MODE.SINGLE:
161
199
  this.waitChangeScenes.push({ scene, mode, application });
200
+ // break;
201
+ // case LOAD_SCENE_MODE.MULTI_CANVAS:
202
+ // }
162
203
  });
163
204
  }
164
205
  update() {
@@ -167,6 +208,7 @@ let Transform = class Transform extends EventEmitter__default {
167
208
  }
168
209
  this.waitRemoveIds = [];
169
210
  for (const sceneInfo of this.waitChangeScenes) {
211
+ // set scene
170
212
  const container = this.containerManager.getContainer(sceneInfo.scene.id);
171
213
  if (container) {
172
214
  sceneInfo.application.stage.removeChildren();
@@ -299,17 +341,20 @@ let Renderer$1 = class Renderer extends eva_js.System {
299
341
  });
300
342
  }
301
343
  registerObserver(observerInfo) {
344
+ // @ts-ignore
302
345
  const thisObserverInfo = this.constructor.observerInfo;
303
346
  for (const key in observerInfo) {
304
347
  if (!thisObserverInfo[key]) {
305
348
  thisObserverInfo[key] = [];
306
349
  }
350
+ //@ts-ignore
307
351
  thisObserverInfo[key].push(...observerInfo[key]);
308
352
  }
309
353
  }
310
354
  createMultiApplication({ params }) {
311
355
  return __awaiter(this, void 0, void 0, function* () {
312
356
  const app = yield this.createApplication(params);
357
+ // @ts-ignore
313
358
  this.multiApps.push(app);
314
359
  return app;
315
360
  });
@@ -363,6 +408,7 @@ let Renderer$1 = class Renderer extends eva_js.System {
363
408
  resize(width, height) {
364
409
  this.params.width = width;
365
410
  this.params.height = height;
411
+ // @ts-ignore
366
412
  this.application.renderer.resize(width, height);
367
413
  }
368
414
  getApplicationByScene(scene) {
@@ -390,6 +436,7 @@ let Renderer$1 = class Renderer extends eva_js.System {
390
436
  resizeByScene(scene, width, height) {
391
437
  const app = this.getApplicationByScene(scene);
392
438
  if (app) {
439
+ // @ts-ignore
393
440
  app.renderer.resize(width, height);
394
441
  }
395
442
  }
@@ -409,7 +456,9 @@ function getSuportCompressedTextureFormats() {
409
456
  const canvas = document.createElement('canvas');
410
457
  const gl = canvas.getContext('webgl2');
411
458
  if (!gl) {
459
+ // #if _DEBUG
412
460
  console.warn('WebGL not available for compressed textures. Silently failing.');
461
+ // #endif
413
462
  return {
414
463
  s3tc: false,
415
464
  etc: false,
@@ -462,14 +511,29 @@ function registerKtx2CompressedTexture(params) {
462
511
  addPreProcessResourceHandler(eva_js.resource);
463
512
  }
464
513
 
514
+ /* eslint-disable @typescript-eslint/no-unused-vars */
465
515
  class Renderer extends eva_js.System {
466
516
  constructor(params) {
467
517
  super(params);
468
518
  this.asyncIdMap = {};
519
+ // @ts-ignore
469
520
  this.observerInfo = this.constructor.observerInfo;
470
521
  }
522
+ // init(arg?: any): void;
523
+ /**
524
+ * 当监听的属性变化时候调用
525
+ *
526
+ * called while the observed component props change.
527
+ */
471
528
  componentChanged(_changed) { }
529
+ /**
530
+ * 每帧调用
531
+ *
532
+ * called by every loop
533
+ * @param _gameObject gameObject
534
+ */
472
535
  rendererUpdate(_gameObject) { }
536
+ // @ts-ignore
473
537
  update(e) {
474
538
  const changes = this.componentObserver.clear();
475
539
  for (const changed of changes) {
@@ -485,7 +549,19 @@ class Renderer extends eva_js.System {
485
549
  }
486
550
  }
487
551
 
552
+ // import { BaseTexture, utils } from 'pixi.js';
488
553
  const mixinPIXI = () => {
554
+ // BaseTexture.prototype.destroy = function () {
555
+ // if (this.imageUrl) {
556
+ // delete utils.TextureCache[this.imageUrl];
557
+ // this.imageUrl = null;
558
+ // }
559
+ // this.source = null;
560
+ // this.dispose();
561
+ // BaseTexture.removeFromCache(this);
562
+ // this.textureCacheIds = null;
563
+ // this._destroyed = true;
564
+ // };
489
565
  };
490
566
 
491
567
  mixinPIXI();
@@ -37,14 +37,40 @@ declare interface Params {
37
37
  export declare function registerKtx2CompressedTexture(params: Params): void;
38
38
 
39
39
  export declare class Renderer<T extends {} = {}> extends System<T> {
40
+ /**
41
+ * Renderer name
42
+ */
40
43
  name: string;
44
+ /**
45
+ * currentGame
46
+ */
41
47
  game: Game;
48
+ /**
49
+ * observer component props info
50
+ */
42
51
  static observerInfo: PureObserverInfo;
52
+ /**
53
+ * observer component props info
54
+ */
43
55
  observerInfo: PureObserverInfo;
56
+ /**
57
+ * containerManager
58
+ */
44
59
  containerManager: ContainerManager;
45
60
  rendererManager: RendererManager;
46
61
  constructor(params?: T);
62
+ /**
63
+ * 当监听的属性变化时候调用
64
+ *
65
+ * called while the observed component props change.
66
+ */
47
67
  componentChanged(_changed: ComponentChanged): void;
68
+ /**
69
+ * 每帧调用
70
+ *
71
+ * called by every loop
72
+ * @param _gameObject gameObject
73
+ */
48
74
  rendererUpdate(_gameObject: GameObject): void;
49
75
  update(e?: UpdateParams): void;
50
76
  protected asyncIdMap: Record<number, number>;
@@ -58,14 +84,49 @@ export declare enum RENDERER_TYPE {
58
84
  CANVAS = 2
59
85
  }
60
86
 
87
+ /**
88
+ * 渲染管理器类
89
+ *
90
+ * RendererManager 负责管理和协调所有渲染器。
91
+ * 它将组件变化事件分发给相应的渲染器,
92
+ * 并在每帧调用渲染器的更新方法。
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const rendererManager = new RendererManager({
97
+ * game,
98
+ * rendererSystem
99
+ * });
100
+ *
101
+ * rendererManager.register(
102
+ * new SpriteRenderer(),
103
+ * new TextRenderer()
104
+ * );
105
+ * ```
106
+ */
61
107
  export declare class RendererManager {
108
+ /** 游戏实例引用 */
62
109
  game: Game;
110
+ /** 渲染系统引用 */
63
111
  rendererSystem: RendererSystem;
112
+ /**
113
+ * 构造渲染管理器
114
+ * @param game - 游戏实例
115
+ * @param rendererSystem - 渲染系统实例
116
+ */
64
117
  constructor({ game, rendererSystem }: {
65
118
  game: any;
66
119
  rendererSystem: any;
67
120
  });
121
+ /** 注册的渲染器列表 */
68
122
  renderers: Renderer[];
123
+ /**
124
+ * 注册渲染器
125
+ *
126
+ * 将渲染器添加到管理器,并为其设置必要的引用。
127
+ *
128
+ * @param renderers - 要注册的渲染器列表
129
+ */
69
130
  register(...renderers: Renderer[]): void;
70
131
  componentChanged(changes: ComponentChanged[]): void;
71
132
  update(gameObject: GameObject): void;
@@ -35,12 +35,45 @@ function __awaiter(thisArg, _arguments, P, generator) {
35
35
  });
36
36
  }
37
37
 
38
+ /**
39
+ * 渲染管理器类
40
+ *
41
+ * RendererManager 负责管理和协调所有渲染器。
42
+ * 它将组件变化事件分发给相应的渲染器,
43
+ * 并在每帧调用渲染器的更新方法。
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const rendererManager = new RendererManager({
48
+ * game,
49
+ * rendererSystem
50
+ * });
51
+ *
52
+ * rendererManager.register(
53
+ * new SpriteRenderer(),
54
+ * new TextRenderer()
55
+ * );
56
+ * ```
57
+ */
38
58
  class RendererManager {
59
+ /**
60
+ * 构造渲染管理器
61
+ * @param game - 游戏实例
62
+ * @param rendererSystem - 渲染系统实例
63
+ */
39
64
  constructor({ game, rendererSystem }) {
65
+ /** 注册的渲染器列表 */
40
66
  this.renderers = [];
41
67
  this.game = game;
42
68
  this.rendererSystem = rendererSystem;
43
69
  }
70
+ /**
71
+ * 注册渲染器
72
+ *
73
+ * 将渲染器添加到管理器,并为其设置必要的引用。
74
+ *
75
+ * @param renderers - 要注册的渲染器列表
76
+ */
44
77
  register(...renderers) {
45
78
  for (const renderer of renderers) {
46
79
  renderer.game = this.game;
@@ -122,9 +155,11 @@ class ContainerManager {
122
155
  return;
123
156
  const { anchor, origin, position, rotation, scale, size, skew } = transform;
124
157
  container.rotation = rotation;
158
+ // @ts-ignore
125
159
  container.scale = scale;
126
160
  container.pivot.x = size.width * origin.x;
127
161
  container.pivot.y = size.height * origin.y;
162
+ // @ts-ignore
128
163
  container.skew = skew;
129
164
  let x = position.x;
130
165
  let y = position.y;
@@ -133,6 +168,7 @@ class ContainerManager {
133
168
  x = x + parent.size.width * anchor.x;
134
169
  y = y + parent.size.height * anchor.y;
135
170
  }
171
+ // @ts-ignore
136
172
  container.position = { x, y };
137
173
  }
138
174
  }
@@ -149,7 +185,12 @@ let Transform = class Transform extends EventEmitter {
149
185
  init(system) {
150
186
  this.system = system;
151
187
  this.on('changeScene', ({ scene, mode, application }) => {
188
+ // switch (mode) {
189
+ // case LOAD_SCENE_MODE.SINGLE:
152
190
  this.waitChangeScenes.push({ scene, mode, application });
191
+ // break;
192
+ // case LOAD_SCENE_MODE.MULTI_CANVAS:
193
+ // }
153
194
  });
154
195
  }
155
196
  update() {
@@ -158,6 +199,7 @@ let Transform = class Transform extends EventEmitter {
158
199
  }
159
200
  this.waitRemoveIds = [];
160
201
  for (const sceneInfo of this.waitChangeScenes) {
202
+ // set scene
161
203
  const container = this.containerManager.getContainer(sceneInfo.scene.id);
162
204
  if (container) {
163
205
  sceneInfo.application.stage.removeChildren();
@@ -290,17 +332,20 @@ let Renderer$1 = class Renderer extends System {
290
332
  });
291
333
  }
292
334
  registerObserver(observerInfo) {
335
+ // @ts-ignore
293
336
  const thisObserverInfo = this.constructor.observerInfo;
294
337
  for (const key in observerInfo) {
295
338
  if (!thisObserverInfo[key]) {
296
339
  thisObserverInfo[key] = [];
297
340
  }
341
+ //@ts-ignore
298
342
  thisObserverInfo[key].push(...observerInfo[key]);
299
343
  }
300
344
  }
301
345
  createMultiApplication({ params }) {
302
346
  return __awaiter(this, void 0, void 0, function* () {
303
347
  const app = yield this.createApplication(params);
348
+ // @ts-ignore
304
349
  this.multiApps.push(app);
305
350
  return app;
306
351
  });
@@ -354,6 +399,7 @@ let Renderer$1 = class Renderer extends System {
354
399
  resize(width, height) {
355
400
  this.params.width = width;
356
401
  this.params.height = height;
402
+ // @ts-ignore
357
403
  this.application.renderer.resize(width, height);
358
404
  }
359
405
  getApplicationByScene(scene) {
@@ -381,6 +427,7 @@ let Renderer$1 = class Renderer extends System {
381
427
  resizeByScene(scene, width, height) {
382
428
  const app = this.getApplicationByScene(scene);
383
429
  if (app) {
430
+ // @ts-ignore
384
431
  app.renderer.resize(width, height);
385
432
  }
386
433
  }
@@ -400,7 +447,9 @@ function getSuportCompressedTextureFormats() {
400
447
  const canvas = document.createElement('canvas');
401
448
  const gl = canvas.getContext('webgl2');
402
449
  if (!gl) {
450
+ // #if _DEBUG
403
451
  console.warn('WebGL not available for compressed textures. Silently failing.');
452
+ // #endif
404
453
  return {
405
454
  s3tc: false,
406
455
  etc: false,
@@ -453,14 +502,29 @@ function registerKtx2CompressedTexture(params) {
453
502
  addPreProcessResourceHandler(resource);
454
503
  }
455
504
 
505
+ /* eslint-disable @typescript-eslint/no-unused-vars */
456
506
  class Renderer extends System {
457
507
  constructor(params) {
458
508
  super(params);
459
509
  this.asyncIdMap = {};
510
+ // @ts-ignore
460
511
  this.observerInfo = this.constructor.observerInfo;
461
512
  }
513
+ // init(arg?: any): void;
514
+ /**
515
+ * 当监听的属性变化时候调用
516
+ *
517
+ * called while the observed component props change.
518
+ */
462
519
  componentChanged(_changed) { }
520
+ /**
521
+ * 每帧调用
522
+ *
523
+ * called by every loop
524
+ * @param _gameObject gameObject
525
+ */
463
526
  rendererUpdate(_gameObject) { }
527
+ // @ts-ignore
464
528
  update(e) {
465
529
  const changes = this.componentObserver.clear();
466
530
  for (const changed of changes) {
@@ -476,7 +540,19 @@ class Renderer extends System {
476
540
  }
477
541
  }
478
542
 
543
+ // import { BaseTexture, utils } from 'pixi.js';
479
544
  const mixinPIXI = () => {
545
+ // BaseTexture.prototype.destroy = function () {
546
+ // if (this.imageUrl) {
547
+ // delete utils.TextureCache[this.imageUrl];
548
+ // this.imageUrl = null;
549
+ // }
550
+ // this.source = null;
551
+ // this.dispose();
552
+ // BaseTexture.removeFromCache(this);
553
+ // this.textureCacheIds = null;
554
+ // this._destroyed = true;
555
+ // };
480
556
  };
481
557
 
482
558
  mixinPIXI();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eva/plugin-renderer",
3
- "version": "2.0.1-beta.27",
3
+ "version": "2.0.1-beta.29",
4
4
  "description": "@eva/plugin-renderer",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer.esm.js",
@@ -18,8 +18,8 @@
18
18
  "license": "MIT",
19
19
  "homepage": "https://eva.js.org",
20
20
  "dependencies": {
21
- "@eva/eva.js": "2.0.1-beta.27",
22
- "@eva/renderer-adapter": "2.0.1-beta.27",
21
+ "@eva/eva.js": "2.0.1-beta.29",
22
+ "@eva/renderer-adapter": "2.0.1-beta.29",
23
23
  "eventemitter3": "^3.1.2",
24
24
  "lodash-es": "^4.17.21",
25
25
  "pixi.js": "^8.8.1"