@galacean/effects-core 2.0.0-alpha.8 → 2.0.0-beta.0

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.
Files changed (121) hide show
  1. package/README.md +25 -21
  2. package/dist/__definations__/fbeffects-object-data.d.ts +28 -0
  3. package/dist/__definations__/fbeffects-package-data.d.ts +26 -0
  4. package/dist/__definations__/fbgeometry-data.d.ts +77 -0
  5. package/dist/__definations__/fbsub-mesh.d.ts +26 -0
  6. package/dist/__definations__/fbvertex-channel.d.ts +33 -0
  7. package/dist/__definations__/fbvertex-data.d.ts +27 -0
  8. package/dist/__definations__/index.d.ts +6 -0
  9. package/dist/asset-loader.d.ts +0 -13
  10. package/dist/asset-manager.d.ts +1 -75
  11. package/dist/binary-asset.d.ts +6 -0
  12. package/dist/camera.d.ts +10 -1
  13. package/dist/canvas-pool.d.ts +9 -0
  14. package/dist/comp-vfx-item.d.ts +26 -12
  15. package/dist/components/component.d.ts +4 -14
  16. package/dist/components/effect-component.d.ts +3 -23
  17. package/dist/components/index.d.ts +1 -0
  18. package/dist/components/post-process-volume.d.ts +15 -0
  19. package/dist/components/renderer-component.d.ts +2 -2
  20. package/dist/composition-source-manager.d.ts +8 -7
  21. package/dist/composition.d.ts +71 -64
  22. package/dist/constants.d.ts +1 -1
  23. package/dist/decorators.d.ts +4 -3
  24. package/dist/downloader.d.ts +9 -0
  25. package/dist/effects-object.d.ts +4 -1
  26. package/dist/effects-package.d.ts +19 -0
  27. package/dist/engine.d.ts +7 -4
  28. package/dist/events/event-emitter.d.ts +46 -0
  29. package/dist/events/index.d.ts +2 -0
  30. package/dist/events/types.d.ts +37 -0
  31. package/dist/fallback/camera.d.ts +2 -0
  32. package/dist/fallback/index.d.ts +12 -0
  33. package/dist/fallback/interact.d.ts +2 -0
  34. package/dist/fallback/migration.d.ts +20 -0
  35. package/dist/fallback/particle.d.ts +2 -0
  36. package/dist/fallback/sprite.d.ts +3 -0
  37. package/dist/fallback/utils.d.ts +25 -0
  38. package/dist/gl/create-gl-context.d.ts +2 -1
  39. package/dist/gl/index.d.ts +3 -0
  40. package/dist/image-asset.d.ts +5 -0
  41. package/dist/index.d.ts +9 -4
  42. package/dist/index.js +18920 -14116
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +19155 -14360
  45. package/dist/index.mjs.map +1 -1
  46. package/dist/material/material.d.ts +17 -7
  47. package/dist/material/utils.d.ts +0 -10
  48. package/dist/math/bezier.d.ts +99 -0
  49. package/dist/math/keyframe-info.d.ts +39 -0
  50. package/dist/math/translate.d.ts +3 -2
  51. package/dist/math/utils.d.ts +5 -4
  52. package/dist/math/value-getter.d.ts +52 -26
  53. package/dist/pass-render-level.d.ts +3 -1
  54. package/dist/plugin-system.d.ts +3 -4
  55. package/dist/plugins/cal/animation-playable.d.ts +2 -1
  56. package/dist/plugins/cal/calculate-item.d.ts +5 -39
  57. package/dist/plugins/cal/calculate-vfx-item.d.ts +54 -13
  58. package/dist/plugins/cal/playable-graph.d.ts +72 -21
  59. package/dist/plugins/cal/timeline-asset.d.ts +27 -0
  60. package/dist/plugins/camera/camera-controller-node.d.ts +2 -13
  61. package/dist/plugins/index.d.ts +8 -3
  62. package/dist/plugins/interact/click-handler.d.ts +3 -3
  63. package/dist/plugins/interact/event-system.d.ts +0 -2
  64. package/dist/plugins/interact/interact-item.d.ts +15 -1
  65. package/dist/plugins/particle/burst.d.ts +10 -3
  66. package/dist/plugins/particle/link.d.ts +1 -0
  67. package/dist/plugins/particle/particle-loader.d.ts +2 -2
  68. package/dist/plugins/particle/particle-mesh.d.ts +5 -9
  69. package/dist/plugins/particle/particle-system-renderer.d.ts +1 -1
  70. package/dist/plugins/particle/particle-system.d.ts +14 -6
  71. package/dist/plugins/particle/particle-vfx-item.d.ts +9 -3
  72. package/dist/plugins/particle/trail-mesh.d.ts +2 -2
  73. package/dist/plugins/plugin.d.ts +7 -8
  74. package/dist/plugins/sprite/sprite-item.d.ts +29 -12
  75. package/dist/plugins/sprite/sprite-mesh.d.ts +0 -4
  76. package/dist/plugins/text/index.d.ts +4 -0
  77. package/dist/plugins/text/text-item.d.ts +33 -5
  78. package/dist/plugins/text/text-layout.d.ts +9 -1
  79. package/dist/plugins/timeline/playables/activation-mixer-playable.d.ts +7 -0
  80. package/dist/plugins/timeline/playables/sub-composition-clip-playable.d.ts +5 -0
  81. package/dist/plugins/timeline/playables/sub-composition-playable-asset.d.ts +5 -0
  82. package/dist/plugins/timeline/track.d.ts +72 -0
  83. package/dist/plugins/timeline/tracks/activation-track.d.ts +5 -0
  84. package/dist/plugins/timeline/tracks/sprite-color-track.d.ts +3 -0
  85. package/dist/plugins/timeline/tracks/sub-composition-track.d.ts +4 -0
  86. package/dist/plugins/timeline/tracks/transform-track.d.ts +3 -0
  87. package/dist/render/create-copy-shader.d.ts +2 -2
  88. package/dist/render/{frame-buffer.d.ts → framebuffer.d.ts} +7 -7
  89. package/dist/render/geometry.d.ts +14 -1
  90. package/dist/render/global-volume.d.ts +4 -5
  91. package/dist/render/gpu-capability.d.ts +6 -6
  92. package/dist/render/index.d.ts +3 -2
  93. package/dist/render/mesh.d.ts +1 -1
  94. package/dist/render/render-frame.d.ts +13 -12
  95. package/dist/render/render-pass.d.ts +10 -10
  96. package/dist/render/{render-buffer.d.ts → renderbuffer.d.ts} +4 -4
  97. package/dist/render/renderer.d.ts +9 -7
  98. package/dist/{semantic-map.d.ts → render/semantic-map.d.ts} +4 -4
  99. package/dist/render/shader.d.ts +4 -4
  100. package/dist/scene.d.ts +86 -4
  101. package/dist/serialization-helper.d.ts +6 -4
  102. package/dist/shader/index.d.ts +1 -3
  103. package/dist/shader/shader-factory.d.ts +35 -0
  104. package/dist/shape/shape.d.ts +1 -1
  105. package/dist/template-image.d.ts +3 -14
  106. package/dist/texture/texture.d.ts +8 -0
  107. package/dist/texture/types.d.ts +2 -2
  108. package/dist/texture/utils.d.ts +2 -1
  109. package/dist/ticker.d.ts +2 -2
  110. package/dist/transform.d.ts +3 -3
  111. package/dist/utils/array.d.ts +1 -1
  112. package/dist/utils/device.d.ts +4 -0
  113. package/dist/utils/index.d.ts +29 -14
  114. package/dist/utils/text.d.ts +8 -0
  115. package/dist/vfx-item.d.ts +37 -61
  116. package/package.json +7 -5
  117. package/dist/asset-migrations.d.ts +0 -5
  118. package/dist/plugins/cal/animation-mixer-playable.d.ts +0 -4
  119. package/dist/plugins/cal/animation-playable-output.d.ts +0 -4
  120. package/dist/plugins/cal/track.d.ts +0 -34
  121. package/dist/utils/timeline-component.d.ts +0 -6
@@ -6,7 +6,7 @@ import { Component } from './component';
6
6
  * @since 2.0.0
7
7
  */
8
8
  export declare class RendererComponent extends Component {
9
- started: boolean;
9
+ isStartCalled: boolean;
10
10
  materials: Material[];
11
11
  protected _priority: number;
12
12
  protected _enabled: boolean;
@@ -26,7 +26,7 @@ export declare class RendererComponent extends Component {
26
26
  lateUpdate(dt: number): void;
27
27
  render(renderer: Renderer): void;
28
28
  onAttached(): void;
29
- fromData(data: any): void;
29
+ fromData(data: unknown): void;
30
30
  toData(): void;
31
31
  dispose(): void;
32
32
  }
@@ -1,8 +1,8 @@
1
1
  import * as spec from '@galacean/effects-specification';
2
+ import type { SceneBindingData } from './comp-vfx-item';
2
3
  import type { Engine } from './engine';
3
4
  import type { PluginSystem } from './plugin-system';
4
- import type { GlobalVolume } from './render';
5
- import type { Scene } from './scene';
5
+ import type { Scene, SceneRenderLevel } from './scene';
6
6
  import type { Texture } from './texture';
7
7
  import type { Disposable } from './utils';
8
8
  import type { VFXItemProps } from './vfx-item';
@@ -10,21 +10,22 @@ export interface ContentOptions {
10
10
  id: string;
11
11
  duration: number;
12
12
  name: string;
13
- endBehavior: spec.CompositionEndBehavior;
13
+ endBehavior: spec.EndBehavior;
14
14
  items: VFXItemProps[];
15
15
  camera: spec.CameraOptions;
16
16
  startTime: number;
17
- globalVolume: GlobalVolume;
17
+ timelineAsset: spec.DataPath;
18
+ sceneBindings: SceneBindingData[];
18
19
  }
19
20
  /**
20
21
  * 合成资源管理
21
22
  */
22
23
  export declare class CompositionSourceManager implements Disposable {
23
- composition?: spec.Composition;
24
- refCompositions: Map<string, spec.Composition>;
24
+ composition?: spec.CompositionData;
25
+ refCompositions: Map<string, spec.CompositionData>;
25
26
  sourceContent?: ContentOptions;
26
27
  refCompositionProps: Map<string, VFXItemProps>;
27
- renderLevel?: spec.RenderLevel;
28
+ renderLevel?: SceneRenderLevel;
28
29
  pluginSystem?: PluginSystem;
29
30
  totalTime: number;
30
31
  imgUsage: Record<string, number[]>;
@@ -1,23 +1,27 @@
1
- import type { Ray } from '@galacean/effects-math/es/core/index';
2
1
  import * as spec from '@galacean/effects-specification';
2
+ import type { Ray } from '@galacean/effects-math/es/core/ray';
3
+ import type { Vector3 } from '@galacean/effects-math/es/core/vector3';
4
+ import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';
3
5
  import { Camera } from './camera';
4
6
  import { CompositionComponent } from './comp-vfx-item';
5
- import type { CompositionSourceManager } from './composition-source-manager';
7
+ import { CompositionSourceManager } from './composition-source-manager';
6
8
  import type { PluginSystem } from './plugin-system';
7
- import type { EventSystem, Region } from './plugins';
9
+ import type { EventSystem, Plugin, Region } from './plugins';
8
10
  import type { MeshRendererOptions, Renderer } from './render';
9
11
  import { RenderFrame } from './render';
10
- import type { Scene } from './scene';
12
+ import type { Scene, SceneType } from './scene';
11
13
  import type { Texture } from './texture';
12
- import { Transform } from './transform';
13
14
  import type { Disposable, LostHandler } from './utils';
14
- import type { VFXItemContent, VFXItemProps } from './vfx-item';
15
+ import type { VFXItemProps } from './vfx-item';
15
16
  import { VFXItem } from './vfx-item';
16
- import type { SceneType } from './asset-manager';
17
+ import type { CompositionEvent } from './events';
18
+ import { EventEmitter } from './events';
19
+ import type { PostProcessVolume } from './components/post-process-volume';
17
20
  export interface CompositionStatistic {
18
21
  loadTime: number;
19
22
  loadStart: number;
20
23
  firstFrameTime: number;
24
+ precompileTime: number;
21
25
  }
22
26
  export interface MessageItem {
23
27
  id: string;
@@ -25,21 +29,25 @@ export interface MessageItem {
25
29
  phrase: number;
26
30
  compositionId: string;
27
31
  }
32
+ export interface CompItemClickedData {
33
+ name: string;
34
+ id: string;
35
+ hitPositions: Vector3[];
36
+ position: Vector3;
37
+ }
28
38
  /**
29
39
  *
30
40
  */
31
41
  export interface CompositionHitTestOptions {
32
42
  maxCount?: number;
33
43
  stop?: (region: Region) => boolean;
34
- skip?: (item: VFXItem<VFXItemContent>) => boolean;
44
+ skip?: (item: VFXItem) => boolean;
35
45
  }
36
46
  export interface CompositionProps {
37
47
  reusable?: boolean;
38
48
  baseRenderOrder?: number;
39
49
  renderer: Renderer;
40
- onPlayerPause?: (item: VFXItem<any>) => void;
41
- onMessageItem?: (item: MessageItem) => void;
42
- onEnd?: (composition: Composition) => void;
50
+ handleItemMessage: (message: MessageItem) => void;
43
51
  event?: EventSystem;
44
52
  width: number;
45
53
  height: number;
@@ -50,8 +58,7 @@ export interface CompositionProps {
50
58
  * 合成中包含了相关的 Item 元素,支持对 Item 元素的创建、更新和销毁。
51
59
  * 也负责 Item 相关的动画播放控制,和持有渲染帧数据。
52
60
  */
53
- export declare class Composition implements Disposable, LostHandler {
54
- compositionSourceManager: CompositionSourceManager;
61
+ export declare class Composition extends EventEmitter<CompositionEvent<Composition>> implements Disposable, LostHandler {
55
62
  renderer: Renderer;
56
63
  /**
57
64
  * 当前帧的渲染数据对象
@@ -70,10 +77,6 @@ export declare class Composition implements Disposable, LostHandler {
70
77
  * 合成渲染顺序,默认按升序渲染
71
78
  */
72
79
  renderOrder: number;
73
- /**
74
- * 所有合成 Item 的根变换
75
- */
76
- transform: Transform;
77
80
  /**
78
81
  * 播放完成后是否需要再使用,是的话生命周期结束后不会自动 dispose
79
82
  */
@@ -82,20 +85,13 @@ export declare class Composition implements Disposable, LostHandler {
82
85
  * 是否播放完成后销毁 texture 对象
83
86
  */
84
87
  keepResource: boolean;
85
- extraCamera: VFXItem<VFXItemContent>;
86
- /**
87
- * 合成结束行为是 spec.END_BEHAVIOR_PAUSE 或 spec.END_BEHAVIOR_PAUSE_AND_DESTROY 时执行的回调
88
- * @internal
89
- */
90
- onPlayerPause?: (item: VFXItem<any>) => void;
88
+ extraCamera: VFXItem;
91
89
  /**
92
- * 单个合成结束时的回调
90
+ * 合成内的元素否允许点击、拖拽交互
91
+ * @since 1.6.0
93
92
  */
94
- onEnd?: (composition: Composition) => void;
95
- /**
96
- * 合成中消息元素创建/销毁时触发的回调
97
- */
98
- onMessageItem?: (item: MessageItem) => void;
93
+ interactive: boolean;
94
+ compositionSourceManager: CompositionSourceManager;
99
95
  /**
100
96
  * 合成id
101
97
  */
@@ -128,10 +124,6 @@ export declare class Composition implements Disposable, LostHandler {
128
124
  * 用于保存与当前合成相关的插件数据
129
125
  */
130
126
  readonly loaderData: Record<string, any>;
131
- /**
132
- * 渲染等级:S,A+,A,B+,B
133
- */
134
- readonly renderLevel?: spec.RenderLevel;
135
127
  /**
136
128
  * 场景加载和首帧渲染时间
137
129
  */
@@ -143,11 +135,11 @@ export declare class Composition implements Disposable, LostHandler {
143
135
  /**
144
136
  * 合成根元素
145
137
  */
146
- rootItem: VFXItem<VFXItemContent>;
138
+ readonly rootItem: VFXItem;
147
139
  /**
148
140
  * 预合成数组
149
141
  */
150
- readonly refContent: VFXItem<VFXItemContent>[];
142
+ readonly refContent: VFXItem[];
151
143
  /**
152
144
  * 预合成的合成属性,在 content 中会被其元素属性覆盖
153
145
  */
@@ -160,6 +152,10 @@ export declare class Composition implements Disposable, LostHandler {
160
152
  * 合成全局时间
161
153
  */
162
154
  globalTime: number;
155
+ /**
156
+ * 后处理渲染配置
157
+ */
158
+ globalVolume: PostProcessVolume;
163
159
  protected rendererOptions: MeshRendererOptions | null;
164
160
  protected assigned: boolean;
165
161
  /**
@@ -171,31 +167,28 @@ export declare class Composition implements Disposable, LostHandler {
171
167
  */
172
168
  protected readonly keepColorBuffer: boolean;
173
169
  protected rootComposition: CompositionComponent;
170
+ protected readonly postLoaders: Plugin[];
174
171
  /**
175
172
  * 合成暂停/播放 标识
176
173
  */
177
174
  private paused;
178
175
  private lastVideoUpdateTime;
176
+ private readonly texInfo;
179
177
  /**
180
- * 后处理渲染配置
178
+ * 合成中消息元素创建/销毁时触发的回调
181
179
  */
182
- private readonly globalVolume;
183
- private readonly texInfo;
184
- private readonly postLoaders;
185
- private rootTimeline;
180
+ private handleItemMessage;
186
181
  /**
187
182
  * Composition 构造函数
188
183
  * @param props - composition 的创建参数
189
184
  * @param scene
190
185
  * @param compositionSourceManager
191
186
  */
192
- constructor(props: CompositionProps, scene: Scene, compositionSourceManager: CompositionSourceManager);
187
+ constructor(props: CompositionProps, scene: Scene);
193
188
  /**
194
- * 合成结束回调
195
- * @param {(composition: Composition) => void} func
196
- * @deprecated since 2.0 - use `onEnd` instead
189
+ * 所有合成 Item 的根变换
197
190
  */
198
- set handleEnd(func: (composition: Composition) => void);
191
+ get transform(): import("@galacean/effects-core").Transform;
199
192
  /**
200
193
  * 获取场景中的纹理数组
201
194
  */
@@ -203,7 +196,7 @@ export declare class Composition implements Disposable, LostHandler {
203
196
  /**
204
197
  * 获取合成中所有元素
205
198
  */
206
- get items(): VFXItem<VFXItemContent>[];
199
+ get items(): VFXItem[];
207
200
  /**
208
201
  * 获取合成开始渲染的时间
209
202
  */
@@ -216,6 +209,8 @@ export declare class Composition implements Disposable, LostHandler {
216
209
  * 获取销毁状态
217
210
  */
218
211
  get isDestroyed(): boolean;
212
+ set viewportMatrix(matrix: Matrix4);
213
+ get viewportMatrix(): Matrix4;
219
214
  /**
220
215
  * 获取合成的时长
221
216
  */
@@ -239,6 +234,12 @@ export declare class Composition implements Disposable, LostHandler {
239
234
  * @param speed - 速度
240
235
  */
241
236
  setSpeed(speed: number): void;
237
+ /**
238
+ * 设置合成的可见性
239
+ * @since 2.0.0
240
+ * @param visible - 是否可见
241
+ */
242
+ setVisible(visible: boolean): void;
242
243
  /**
243
244
  * 获取合成的动画速度
244
245
  * @returns
@@ -273,7 +274,7 @@ export declare class Composition implements Disposable, LostHandler {
273
274
  * @param time - 相对 startTime 的时间
274
275
  */
275
276
  setTime(time: number): void;
276
- addItem(item: VFXItem<VFXItemContent>): void;
277
+ addItem(item: VFXItem): void;
277
278
  /**
278
279
  * 前进合成到指定时间
279
280
  * @param time - 相对0时刻的时间
@@ -285,22 +286,15 @@ export declare class Composition implements Disposable, LostHandler {
285
286
  */
286
287
  protected reset(): void;
287
288
  prepareRender(): void;
288
- /**
289
- * 是否合成需要重新播放
290
- * @returns 重新播放合成标志位
291
- */
292
- private shouldRestart;
293
- /**
294
- * 是否合成需要销毁
295
- * @returns 销毁合成标志位
296
- */
297
- private shouldDispose;
289
+ protected gatherRendererComponent(vfxItem: VFXItem, renderFrame: RenderFrame): void;
298
290
  /**
299
291
  * 合成更新,针对所有 item 的更新
300
292
  * @param deltaTime - 更新的时间步长
301
293
  * @param skipRender - 是否需要渲染
302
294
  */
303
- update(deltaTime: number, skipRender?: boolean): void;
295
+ update(deltaTime: number): void;
296
+ private toLocalTime;
297
+ private shouldDispose;
304
298
  private getUpdateTime;
305
299
  private callStart;
306
300
  private callUpdate;
@@ -319,18 +313,22 @@ export declare class Composition implements Disposable, LostHandler {
319
313
  * 更新相机
320
314
  * @override
321
315
  */
322
- updateCamera(): void;
316
+ private updateCamera;
323
317
  /**
324
318
  * 插件更新,来自 CompVFXItem 的更新调用
325
319
  * @param deltaTime - 更新的时间步长
326
320
  */
327
- updatePluginLoaders(deltaTime: number): void;
321
+ private updatePluginLoaders;
322
+ /**
323
+ * 更新主合成组件
324
+ */
325
+ private updateRootComposition;
328
326
  /**
329
327
  * 通过名称获取元素
330
328
  * @param name - 元素名称
331
329
  * @returns 元素对象
332
330
  */
333
- getItemByName(name: string): VFXItem<VFXItemContent> | undefined;
331
+ getItemByName(name: string): VFXItem | undefined;
334
332
  /**
335
333
  * 获取指定位置和相机连成的射线
336
334
  * @param x
@@ -356,13 +354,13 @@ export declare class Composition implements Disposable, LostHandler {
356
354
  * @param item - 交互元素
357
355
  * @param type - 交互类型
358
356
  */
359
- addInteractiveItem(item: VFXItem<VFXItemContent>, type: spec.InteractType): string | undefined;
357
+ addInteractiveItem(item: VFXItem, type: spec.InteractType): string | undefined;
360
358
  /**
361
359
  * InteractItem 生命周期结束时的调用
362
360
  * @param item - 交互元素
363
361
  * @param type - 交互类型
364
362
  */
365
- removeInteractiveItem(item: VFXItem<VFXItemContent>, type: spec.InteractType): void;
363
+ removeInteractiveItem(item: VFXItem, type: spec.InteractType): void;
366
364
  /**
367
365
  * 销毁插件 Item 中保存的纹理数组
368
366
  * @internal
@@ -374,7 +372,7 @@ export declare class Composition implements Disposable, LostHandler {
374
372
  * @internal
375
373
  * @param item - 需要销毁的 item
376
374
  */
377
- destroyItem(item: VFXItem<VFXItemContent>): void;
375
+ destroyItem(item: VFXItem): void;
378
376
  lost(e: Event): void;
379
377
  /**
380
378
  * 合成对象销毁
@@ -392,6 +390,15 @@ export declare class Composition implements Disposable, LostHandler {
392
390
  * 合成整体在水平方向移动 x 像素,垂直方向移动 y 像素
393
391
  */
394
392
  translateByPixel(x: number, y: number): void;
393
+ /**
394
+ * 设置合成在画布上的像素位置
395
+ * Tips:
396
+ * - 坐标原点在 canvas 左上角,x 正方向水平向右, y 正方向垂直向下
397
+ * - 设置后会覆盖原有的位置信息
398
+ * @param x - x 坐标
399
+ * @param y - y 坐标
400
+ */
401
+ setPositionByPixel(x: number, y: number): void;
395
402
  /**
396
403
  * 设置合成在 3D 坐标轴上相对当前的位移
397
404
  */
@@ -5,6 +5,6 @@ export declare const SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0 = "PRE_MAIN_COLOR_0";
5
5
  export declare const SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0 = "PRE_MAIN_COLOR_SIZE_0";
6
6
  export declare const PLAYER_OPTIONS_ENV_EDITOR = "editor";
7
7
  export declare const HELP_LINK: {
8
- 'Filter not imported': string;
9
8
  'Item duration can\'t be less than 0': string;
9
+ 'ValueType: 21/22 is not supported': string;
10
10
  };
@@ -1,4 +1,5 @@
1
+ import type { Constructor } from './utils';
1
2
  export declare const effectsClassStore: Record<string, any>;
2
- export declare function getMergedStore(target: any): any;
3
- export declare function serialize(sourceName?: string): (target: any, propertyKey: any) => void;
4
- export declare function effectsClass(className: any): (target: any, context?: any) => void;
3
+ export declare function effectsClass(className: string): (target: Object, context?: unknown) => void;
4
+ export declare function serialize(type?: Constructor, sourceName?: string): (target: Object, propertyKey: string | symbol) => void;
5
+ export declare function getMergedStore(target: Object): Record<string, any> | undefined;
@@ -53,6 +53,15 @@ export declare function loadWebPOptional(png: string, webp?: string): Promise<{
53
53
  image: HTMLImageElement;
54
54
  url: string;
55
55
  }>;
56
+ /**
57
+ * 异步加载一个 AVIF 图片文件,如果不支持 AVIF,则加载 PNG 图片文件
58
+ * @param png - PNG 图片文件的 URL
59
+ * @param avif - AVIF 图片文件的 URL
60
+ */
61
+ export declare function loadAVIFOptional(png: string, avif?: string): Promise<{
62
+ image: HTMLImageElement;
63
+ url: string;
64
+ }>;
56
65
  /**
57
66
  * 异步加载一个图片文件
58
67
  * @param source - 图片文件的 URL、Blob 或 HTMLImageElement 对象
@@ -1,11 +1,14 @@
1
1
  import type * as spec from '@galacean/effects-specification';
2
2
  import type { Engine } from './engine';
3
+ import type { ItemEvent } from './events';
4
+ import { EventEmitter } from './events';
3
5
  /**
4
6
  * @since 2.0.0
5
7
  * @internal
6
8
  */
7
- export declare abstract class EffectsObject {
9
+ export declare abstract class EffectsObject extends EventEmitter<ItemEvent> {
8
10
  engine: Engine;
11
+ static is(obj: unknown): obj is EffectsObject;
9
12
  protected guid: string;
10
13
  /**
11
14
  * 存储需要序列化的数据
@@ -0,0 +1,19 @@
1
+ import * as spec from '@galacean/effects-specification';
2
+ interface FileSummary {
3
+ assetType: string;
4
+ guid: string;
5
+ }
6
+ /**
7
+ * @since 2.0.0
8
+ * @internal
9
+ */
10
+ export declare class EffectsPackage {
11
+ fileSummary: FileSummary;
12
+ exportObjectDatas: spec.EffectsObjectData[];
13
+ addData(effectsObjectData: spec.EffectsObjectData): void;
14
+ serializeToBinary(): Uint8Array;
15
+ deserializeFromBinary(buffer: Uint8Array): void;
16
+ private geometryDataToBinary;
17
+ private binaryToGeometryData;
18
+ }
19
+ export {};
package/dist/engine.d.ts CHANGED
@@ -5,10 +5,10 @@ import type { EffectsObject } from './effects-object';
5
5
  import type { Material } from './material';
6
6
  import type { GPUCapability, Geometry, Mesh, RenderPass, Renderer, ShaderLibrary } from './render';
7
7
  import type { Scene } from './scene';
8
- import { Texture } from './texture';
8
+ import type { Texture } from './texture';
9
9
  import type { Disposable } from './utils';
10
10
  /**
11
- * Engine 基类,负责维护所有 GPU 资源的销毁
11
+ * Engine 基类,负责维护所有 GPU 资源的管理及销毁
12
12
  */
13
13
  export declare class Engine implements Disposable {
14
14
  renderer: Renderer;
@@ -19,6 +19,10 @@ export declare class Engine implements Disposable {
19
19
  objectInstance: Record<string, EffectsObject>;
20
20
  assetLoader: AssetLoader;
21
21
  database?: Database;
22
+ /**
23
+ * 渲染过程中错误队列
24
+ */
25
+ renderErrors: Set<Error>;
22
26
  protected destroyed: boolean;
23
27
  protected textures: Texture[];
24
28
  protected materials: Material[];
@@ -37,7 +41,7 @@ export declare class Engine implements Disposable {
37
41
  getInstance(id: string): EffectsObject;
38
42
  removeInstance(id: string): void;
39
43
  addPackageDatas(scene: Scene): void;
40
- createVFXItemsAsync(scene: Scene): Promise<void>;
44
+ createVFXItems(scene: Scene): Promise<void>;
41
45
  addTexture(tex: Texture): void;
42
46
  removeTexture(tex: Texture): void;
43
47
  addMaterial(mat: Material): void;
@@ -50,7 +54,6 @@ export declare class Engine implements Disposable {
50
54
  removeRenderPass(pass: RenderPass): void;
51
55
  get isDestroyed(): boolean;
52
56
  getShaderLibrary(): ShaderLibrary;
53
- private createDefaultTexture;
54
57
  /**
55
58
  * 销毁所有缓存的资源
56
59
  */
@@ -0,0 +1,46 @@
1
+ export type EventEmitterListener<P extends any[]> = (...callbackArgs: P) => void;
2
+ /**
3
+ * 事件监听器选项
4
+ */
5
+ export type EventEmitterOptions = {
6
+ /**
7
+ * 是否只监听一次
8
+ */
9
+ once?: boolean;
10
+ };
11
+ export declare class EventEmitter<T extends Record<string, any[]>> {
12
+ private listeners;
13
+ /**
14
+ * 移除事件监听器
15
+ * @param eventName - 事件名称
16
+ * @param listener - 事件监听器
17
+ * @returns
18
+ */
19
+ off: <E extends keyof T & string>(eventName: E, listener: EventEmitterListener<T[E]>) => void;
20
+ /**
21
+ * 监听事件
22
+ * @param eventName - 事件名称
23
+ * @param listener - 事件监听器
24
+ * @param options - 事件监听器选项
25
+ * @returns
26
+ */
27
+ on: <E extends keyof T & string>(eventName: E, listener: EventEmitterListener<T[E]>, options?: EventEmitterOptions) => () => void;
28
+ /**
29
+ * 一次性监听事件
30
+ * @param eventName - 事件名称
31
+ * @param listener - 事件监听器
32
+ */
33
+ once: <E extends keyof T & string>(eventName: E, listener: EventEmitterListener<T[E]>) => void;
34
+ /**
35
+ * 触发事件
36
+ * @param eventName - 事件名称
37
+ * @param args - 事件参数
38
+ */
39
+ emit: <E extends keyof T & string>(eventName: E, ...args: T[E]) => void;
40
+ /**
41
+ * 获取事件名称对应的所有监听器
42
+ * @param eventName - 事件名称
43
+ * @returns - 返回事件名称对应的所有监听器
44
+ */
45
+ getListeners: <E extends keyof T & string>(eventName: E) => EventEmitterListener<T[E]>[];
46
+ }
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './event-emitter';
@@ -0,0 +1,37 @@
1
+ import type { MessageItem } from '../composition';
2
+ import type { Region } from '../plugins';
3
+ /**
4
+ * Item 可以绑定的事件
5
+ */
6
+ export type ItemEvent = {
7
+ /**
8
+ * 元素点击事件
9
+ */
10
+ ['click']: [region: Region];
11
+ /**
12
+ * 元素消息事件(元素创建/销毁时触发)
13
+ */
14
+ ['message']: [message: Omit<MessageItem, 'compositionId'>];
15
+ };
16
+ /**
17
+ * Compositio 可以绑定的事件
18
+ */
19
+ export type CompositionEvent<C> = {
20
+ /**
21
+ * 合成点击事件
22
+ */
23
+ ['click']: [
24
+ clickInfo: Region & {
25
+ compositionName: string;
26
+ compositionId: string;
27
+ }
28
+ ];
29
+ /**
30
+ * 合成结束事件
31
+ * 合成行为为循环时每次循环结束都会触发
32
+ * 合成行为为销毁/冻结时只会触发一次
33
+ */
34
+ ['end']: [endInfo: {
35
+ composition: C;
36
+ }];
37
+ };
@@ -0,0 +1,2 @@
1
+ import type { CameraContent } from '@galacean/effects-specification';
2
+ export declare function getStandardCameraContent(model: any): CameraContent;
@@ -0,0 +1,12 @@
1
+ import type { BaseItem, Composition, CompressedImage, Image, JSONScene, ParticleItem, RenderLevel, SpriteItem, TemplateImage } from '@galacean/effects-specification';
2
+ export * from './utils';
3
+ export declare function getStandardJSON(json: any): JSONScene;
4
+ export declare function getStandardImage(image: any, index: number, imageTags: RenderLevel[]): TemplateImage | Image | CompressedImage;
5
+ export declare function getStandardComposition(composition: any, opt?: {
6
+ plugins?: string[];
7
+ requires?: string[];
8
+ }): Composition;
9
+ export declare function getStandardItem(item: any, opt?: {
10
+ plugins?: string[];
11
+ requires?: string[];
12
+ }): SpriteItem | ParticleItem | BaseItem;
@@ -0,0 +1,2 @@
1
+ import type { InteractContent } from '@galacean/effects-specification';
2
+ export declare function getStandardInteractContent(ui: any): InteractContent;
@@ -0,0 +1,20 @@
1
+ import type { BaseContent, BinaryFile, JSONScene, JSONSceneLegacy, SpineResource, SpineContent } from '@galacean/effects-specification';
2
+ /**
3
+ * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)
4
+ */
5
+ export declare function version21Migration(json: JSONSceneLegacy): JSONSceneLegacy;
6
+ /**
7
+ * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)
8
+ */
9
+ export declare function version22Migration(json: JSONSceneLegacy): JSONSceneLegacy;
10
+ /**
11
+ * 3.0 以下版本数据适配(runtime 2.0及以上版本支持)
12
+ */
13
+ export declare function version30Migration(json: JSONSceneLegacy): JSONScene;
14
+ /**
15
+ * 2.5 以下版本 赫尔米特数据转换成贝塞尔数据
16
+ */
17
+ export declare function version24Migration(json: JSONScene): JSONScene;
18
+ export declare function convertParam(content?: BaseContent): void;
19
+ export declare function convertBinaryAsset(bins: BinaryFile[], jsonScene: JSONScene): void;
20
+ export declare function convertSpineData(resource: SpineResource, content: SpineContent, jsonScene: JSONScene): void;
@@ -0,0 +1,2 @@
1
+ import type { ParticleContent } from '@galacean/effects-specification';
2
+ export declare function getStandardParticleContent(particle: any): ParticleContent;
@@ -0,0 +1,3 @@
1
+ import type { BaseItemTransform, NullContent, SpriteContent } from '@galacean/effects-specification';
2
+ export declare function getStandardNullContent(sprite: any, transform: BaseItemTransform): NullContent;
3
+ export declare function getStandardSpriteContent(sprite: any, transform: BaseItemTransform): SpriteContent;
@@ -0,0 +1,25 @@
1
+ import type { FixedNumberExpression, RGBAColorValue, ColorExpression, NumberExpression, GradientColor, FixedVec3Expression, vec4, vec3, BezierKeyframeValue, vec2 } from '@galacean/effects-specification';
2
+ import { ParticleOrigin } from '@galacean/effects-specification';
3
+ export declare function arrAdd<T>(arr: T[], item: T): boolean | undefined;
4
+ export declare function ensureFixedNumber(a: any): FixedNumberExpression | undefined;
5
+ export declare function ensureFixedNumberWithRandom(a: any, p: number): FixedNumberExpression | undefined;
6
+ export declare function ensureRGBAValue(a: any): RGBAColorValue;
7
+ export declare function ensureColorExpression(a: any, normalized?: boolean): ColorExpression | undefined;
8
+ export declare function ensureNumberExpression(a: any): NumberExpression | undefined;
9
+ export declare function ensureValueGetter(a: any): any;
10
+ export declare function ensureGradient(a: any, normalized?: boolean): GradientColor | undefined;
11
+ export declare function colorToArr(hex: string | number[], normalized?: boolean): vec4;
12
+ export declare function normalizeColor(a: number[]): number[] | undefined;
13
+ export declare function parsePercent(c: string): number;
14
+ export declare function getGradientColor(color: string | Array<string | number[]> | GradientColor, normalized?: boolean): GradientColor | undefined;
15
+ export declare function ensureFixedVec3(a: any): FixedVec3Expression | undefined;
16
+ export declare function objectValueToNumber(o: Record<string, any>): object;
17
+ export declare function deleteEmptyValue(o: Record<string, any>): object;
18
+ export declare function quatFromXYZRotation(out: vec4 | number[], x: number, y: number, z: number): vec4;
19
+ export declare function rotationZYXFromQuat(out: vec3 | number[], quat: vec4): vec3;
20
+ /**
21
+ * 提取并转换 JSON 数据中的 anchor 值
22
+ */
23
+ export declare function convertAnchor(anchor?: vec2, particleOrigin?: ParticleOrigin): vec2;
24
+ export declare const particleOriginTranslateMap: Record<number, vec2>;
25
+ export declare function getBezierCurveFromHermiteInGE(geHermiteCurves: number[][]): BezierKeyframeValue[];
@@ -1,3 +1,4 @@
1
+ export type GLType = 'webgl' | 'webgl2';
1
2
  /**
2
3
  * Helper class to create a WebGL Context
3
4
  *
@@ -6,4 +7,4 @@
6
7
  * @param options
7
8
  * @returns
8
9
  */
9
- export declare function createGLContext(canvas: HTMLCanvasElement | OffscreenCanvas, glType: "webgl" | "webgl2" | undefined, options: WebGLContextAttributes): WebGLRenderingContext | WebGL2RenderingContext;
10
+ export declare function createGLContext(canvas: HTMLCanvasElement | OffscreenCanvas, glType: GLType | undefined, options: WebGLContextAttributes): WebGLRenderingContext | WebGL2RenderingContext;