@galacean/effects-core 1.2.0 → 2.0.0-alpha.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 (78) hide show
  1. package/dist/asset-loader.d.ts +103 -0
  2. package/dist/asset-manager.d.ts +15 -1
  3. package/dist/asset-migrations.d.ts +2 -0
  4. package/dist/comp-vfx-item.d.ts +19 -63
  5. package/dist/components/component.d.ts +63 -0
  6. package/dist/components/effect-component.d.ts +63 -0
  7. package/dist/components/index.d.ts +3 -0
  8. package/dist/components/renderer-component.d.ts +32 -0
  9. package/dist/composition-source-manager.d.ts +7 -6
  10. package/dist/composition.d.ts +40 -41
  11. package/dist/decorators.d.ts +4 -0
  12. package/dist/effects-object.d.ts +25 -0
  13. package/dist/engine.d.ts +23 -4
  14. package/dist/index.d.ts +25 -21
  15. package/dist/index.js +17265 -16811
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.mjs +17230 -16783
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/material/material.d.ts +5 -4
  20. package/dist/material/utils.d.ts +1 -1
  21. package/dist/pass-render-level.d.ts +1 -1
  22. package/dist/plugins/cal/animation-mixer-playable.d.ts +4 -0
  23. package/dist/plugins/cal/animation-playable-output.d.ts +4 -0
  24. package/dist/plugins/cal/animation-playable.d.ts +6 -0
  25. package/dist/plugins/cal/animation-stream.d.ts +14 -0
  26. package/dist/plugins/cal/calculate-item.d.ts +34 -57
  27. package/dist/plugins/cal/calculate-vfx-item.d.ts +71 -25
  28. package/dist/plugins/cal/playable-graph.d.ts +62 -0
  29. package/dist/plugins/cal/track.d.ts +35 -0
  30. package/dist/plugins/camera/camera-controller-node.d.ts +11 -8
  31. package/dist/plugins/index.d.ts +2 -5
  32. package/dist/plugins/interact/click-handler.d.ts +3 -3
  33. package/dist/plugins/interact/interact-item.d.ts +27 -1
  34. package/dist/plugins/interact/interact-loader.d.ts +0 -10
  35. package/dist/plugins/interact/interact-vfx-item.d.ts +7 -27
  36. package/dist/plugins/particle/particle-loader.d.ts +2 -11
  37. package/dist/plugins/particle/particle-mesh.d.ts +4 -9
  38. package/dist/plugins/particle/particle-system-renderer.d.ts +36 -0
  39. package/dist/plugins/particle/particle-system.d.ts +22 -21
  40. package/dist/plugins/particle/particle-vfx-item.d.ts +9 -25
  41. package/dist/plugins/particle/trail-mesh.d.ts +3 -5
  42. package/dist/plugins/sprite/sprite-item.d.ts +69 -42
  43. package/dist/plugins/sprite/sprite-loader.d.ts +3 -15
  44. package/dist/plugins/sprite/sprite-mesh.d.ts +4 -36
  45. package/dist/plugins/text/text-item.d.ts +12 -9
  46. package/dist/plugins/text/text-loader.d.ts +0 -15
  47. package/dist/render/geometry.d.ts +5 -14
  48. package/dist/render/mesh.d.ts +5 -16
  49. package/dist/render/render-frame.d.ts +3 -8
  50. package/dist/render/render-pass.d.ts +10 -9
  51. package/dist/render/renderer.d.ts +5 -5
  52. package/dist/render/shader.d.ts +7 -4
  53. package/dist/semantic-map.d.ts +1 -1
  54. package/dist/serialization-helper.d.ts +14 -0
  55. package/dist/texture/texture.d.ts +4 -4
  56. package/dist/transform.d.ts +14 -4
  57. package/dist/utils/asserts.d.ts +1 -1
  58. package/dist/utils/index.d.ts +2 -1
  59. package/dist/utils/timeline-component.d.ts +1 -34
  60. package/dist/vfx-item.d.ts +56 -147
  61. package/package.json +3 -2
  62. package/dist/filter.d.ts +0 -63
  63. package/dist/filters/alpha-frame.d.ts +0 -5
  64. package/dist/filters/alpha-mask.d.ts +0 -5
  65. package/dist/filters/bloom.d.ts +0 -8
  66. package/dist/filters/camera-move.d.ts +0 -5
  67. package/dist/filters/delay.d.ts +0 -14
  68. package/dist/filters/distortion.d.ts +0 -5
  69. package/dist/filters/gaussian.d.ts +0 -27
  70. package/dist/filters/index.d.ts +0 -2
  71. package/dist/filters/lum.d.ts +0 -5
  72. package/dist/filters/utils.d.ts +0 -7
  73. package/dist/plugins/camera/camera-vfx-item.d.ts +0 -13
  74. package/dist/plugins/sprite/filter-sprite-vfx-item.d.ts +0 -13
  75. package/dist/plugins/sprite/sprite-group.d.ts +0 -95
  76. package/dist/plugins/sprite/sprite-vfx-item.d.ts +0 -33
  77. package/dist/plugins/text/text-mesh.d.ts +0 -15
  78. package/dist/plugins/text/text-vfx-item.d.ts +0 -28
@@ -1,7 +1,9 @@
1
1
  import type * as spec from '@galacean/effects-specification';
2
2
  import type { vec4 } from '@galacean/effects-specification';
3
3
  import type { Camera } from '../camera';
4
- import type { Mesh, MeshDestroyOptions, Renderer } from '../render';
4
+ import type { RendererComponent } from '../components';
5
+ import type { Engine } from '../engine';
6
+ import type { MeshDestroyOptions, Renderer } from '../render';
5
7
  import { FrameBuffer } from '../render';
6
8
  import type { SemanticGetter } from '../semantic-map';
7
9
  import { SemanticMap } from '../semantic-map';
@@ -11,7 +13,6 @@ import type { Disposable, Sortable } from '../utils';
11
13
  import { DestroyOptions, OrderType } from '../utils';
12
14
  import type { RenderBuffer } from './render-buffer';
13
15
  import type { RenderingData } from './render-frame';
14
- import type { Engine } from '../engine';
15
16
  export declare const RenderPassPriorityPrepare = 0;
16
17
  export declare const RenderPassPriorityNormal = 1000;
17
18
  export declare const RenderPassPriorityPostprocess = 3000;
@@ -157,13 +158,13 @@ export interface RenderPassDelegate {
157
158
  * @param mesh - 当前 Mesh
158
159
  * @param state - 当前渲染状态
159
160
  */
160
- willRenderMesh?: (mesh: Mesh, state: RenderingData) => void;
161
+ willRenderMesh?: (mesh: RendererComponent, state: RenderingData) => void;
161
162
  /**
162
163
  * Mesh 渲染后回调
163
164
  * @param mesh - 当前 Mesh
164
165
  * @param state - 当前渲染状态
165
166
  */
166
- didRenderMesh?: (mesh: Mesh, state: RenderingData) => void;
167
+ didRenderMesh?: (mesh: RendererComponent, state: RenderingData) => void;
167
168
  }
168
169
  /**
169
170
  * RenderPass Attachment 选项
@@ -184,7 +185,7 @@ export interface RenderPassAttachmentOptions {
184
185
  }
185
186
  export interface RenderPassOptions extends RenderPassAttachmentOptions {
186
187
  name?: string;
187
- meshes?: Mesh[];
188
+ meshes?: RendererComponent[];
188
189
  priority?: number;
189
190
  meshOrder?: OrderType;
190
191
  clearAction?: RenderPassClearAction;
@@ -216,7 +217,7 @@ export declare class RenderPass implements Disposable, Sortable {
216
217
  /**
217
218
  * 包含的 Mesh 列表
218
219
  */
219
- readonly meshes: Mesh[];
220
+ readonly meshes: RendererComponent[];
220
221
  /**
221
222
  * Mesh 渲染顺序,按照优先级升序或降序
222
223
  */
@@ -255,9 +256,9 @@ export declare class RenderPass implements Disposable, Sortable {
255
256
  get viewport(): spec.vec4;
256
257
  get stencilAttachment(): RenderPassDepthStencilAttachment | undefined;
257
258
  get depthAttachment(): RenderPassDepthStencilAttachment | undefined;
258
- addMesh(mesh: Mesh): void;
259
- removeMesh(mesh: Mesh): void;
260
- setMeshes(meshes: Mesh[]): Mesh[];
259
+ addMesh(mesh: RendererComponent): void;
260
+ removeMesh(mesh: RendererComponent): void;
261
+ setMeshes(meshes: RendererComponent[]): RendererComponent[];
261
262
  /**
262
263
  * 获取当前 Attachment 数组,注意 RenderPass 可能没有创建完成
263
264
  */
@@ -1,13 +1,13 @@
1
1
  import type { Matrix4 } from '@galacean/effects-math/es/core/index';
2
+ import type { RendererComponent } from '../components/renderer-component';
3
+ import type { Engine } from '../engine';
4
+ import type { Material } from '../material';
2
5
  import type { LostHandler, RestoreHandler } from '../utils';
3
6
  import type { FilterMode, FrameBuffer, RenderTextureFormat } from './frame-buffer';
4
- import type { Mesh } from './mesh';
7
+ import type { Geometry } from './geometry';
5
8
  import type { RenderFrame, RenderingData } from './render-frame';
6
9
  import type { RenderPassClearAction, RenderPassStoreAction } from './render-pass';
7
10
  import type { ShaderLibrary } from './shader';
8
- import type { Geometry } from './geometry';
9
- import type { Material } from '../material';
10
- import type { Engine } from '../engine';
11
11
  export declare class Renderer implements LostHandler, RestoreHandler {
12
12
  static create: (canvas: HTMLCanvasElement | OffscreenCanvas, framework: 'webgl' | 'webgl2', renderOptions?: WebGLContextAttributes) => Renderer;
13
13
  engine: Engine;
@@ -55,7 +55,7 @@ export declare class Renderer implements LostHandler, RestoreHandler {
55
55
  */
56
56
  getShaderLibrary(): ShaderLibrary | undefined;
57
57
  renderRenderFrame(renderFrame: RenderFrame): void;
58
- renderMeshes(meshes: Mesh[]): void;
58
+ renderMeshes(meshes: RendererComponent[]): void;
59
59
  drawGeometry(geometry: Geometry, material: Material): void;
60
60
  getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): FrameBuffer | null;
61
61
  dispose(haltGL?: boolean): void;
@@ -1,3 +1,5 @@
1
+ import { EffectsObject } from '../effects-object';
2
+ import type { Engine } from '../engine';
1
3
  export type ShaderMarcos = [key: string, value: string | number | boolean][];
2
4
  export declare enum ShaderCompileResultStatus {
3
5
  noShader = 0,
@@ -40,7 +42,7 @@ export interface InstancedShaderWithSource {
40
42
  /**
41
43
  * shader是否共享
42
44
  */
43
- shared?: false;
45
+ shared?: boolean;
44
46
  }
45
47
  export interface SharedShaderWithSource {
46
48
  /**
@@ -69,22 +71,23 @@ export interface SharedShaderWithSource {
69
71
  * 如果提供了cacheId,cacheId相同的shader会共用一个GLProgram
70
72
  * 如果没有提供cacheId,会根据字符串hash计算出cacheId,字符串相同的shader将会使用同一个GLProgram
71
73
  */
72
- shared?: true;
74
+ shared?: boolean;
73
75
  /**
74
76
  * 相同cacheId的shader会使用同一个GLProgram
75
77
  */
76
78
  cacheId?: string;
77
79
  }
78
80
  export type ShaderWithSource = InstancedShaderWithSource | SharedShaderWithSource;
79
- export declare abstract class Shader {
81
+ export declare abstract class Shader extends EffectsObject {
80
82
  readonly source: ShaderWithSource;
81
- constructor(source: ShaderWithSource);
83
+ constructor(engine: Engine, source: ShaderWithSource);
82
84
  }
83
85
  export interface ShaderLibrary {
84
86
  readonly shaderResults: {
85
87
  [cacheId: string]: ShaderCompileResult;
86
88
  };
87
89
  addShader(shader: ShaderWithSource): void;
90
+ createShader(shaderSource: ShaderWithSource): Shader;
88
91
  /**
89
92
  * @param cacheId
90
93
  */
@@ -8,7 +8,7 @@ export declare class SemanticMap implements Disposable {
8
8
  constructor(semantics?: Record<string, SemanticGetter>);
9
9
  toObject(): Record<string, SemanticGetter>;
10
10
  setSemantic(name: string, value?: SemanticGetter): void;
11
- getSemanticValue(name: string, state: RenderingData): number | Float32Array | Int32Array | Float64Array | Uint8Array | Uint32Array | Uint16Array | Int8Array | Int16Array | number[] | number[][] | import("@galacean/effects-math/es").Matrix4 | import("@galacean/effects-math/es").Vector3 | import("@galacean/effects-math/es").Matrix3 | import("./texture").Texture | import("@galacean/effects-math/es").Vector2 | import("@galacean/effects-math/es").Vector4 | import("./texture").Texture[] | import("./material").UniformStruct | import("./material").UniformStruct[] | SemanticFunc | undefined;
11
+ getSemanticValue(name: string, state: RenderingData): number | Float32Array | Int32Array | Float64Array | Uint8Array | Uint32Array | Uint16Array | Int8Array | Int16Array | number[] | number[][] | import("@galacean/effects-math/es/core").Vector3 | import("./texture").Texture | import("@galacean/effects-math/es/core").Vector2 | import("@galacean/effects-math/es/core").Vector4 | import("@galacean/effects-math/es/core").Matrix3 | import("@galacean/effects-math/es/core").Matrix4 | import("./texture").Texture[] | import("./material").UniformStruct | import("./material").UniformStruct[] | SemanticFunc | undefined;
12
12
  hasSemanticValue(name: string): boolean;
13
13
  dispose(): void;
14
14
  }
@@ -0,0 +1,14 @@
1
+ import { EffectsObject } from './effects-object';
2
+ export declare class SerializationHelper {
3
+ static collectSerializableObject(effectsObject: EffectsObject, res: Record<string, EffectsObject>): void;
4
+ static serializeEffectObject(effectsObject: EffectsObject): Record<string, any>;
5
+ static serializeTaggedProperties(effectsObject: EffectsObject, serializedData?: Record<string, any>): Record<string, any>;
6
+ static deserializeTaggedProperties(serializedData: Record<string, any>, effectsObject: EffectsObject): void;
7
+ static deserializeTaggedPropertiesAsync(serializedData: Record<string, any>, effectsObject: EffectsObject): Promise<void>;
8
+ static checkTypedArray(obj: any): boolean;
9
+ static checkDataPath(value: any): boolean;
10
+ private static deserializeProperty;
11
+ private static deserializePropertyAsync;
12
+ private static serializeObjectProperty;
13
+ private static serializeArrayProperty;
14
+ }
@@ -1,10 +1,11 @@
1
1
  import { TextureSourceType } from './types';
2
2
  import type { TextureFactorySourceFrom, TextureSourceOptions, TextureDataType } from './types';
3
3
  import type { Engine } from '../engine';
4
+ import { EffectsObject } from '../effects-object';
4
5
  /**
5
6
  * Texture 抽象类
6
7
  */
7
- export declare abstract class Texture {
8
+ export declare abstract class Texture extends EffectsObject {
8
9
  /**
9
10
  * Texture 名称
10
11
  */
@@ -12,7 +13,6 @@ export declare abstract class Texture {
12
13
  sourceFrom?: TextureFactorySourceFrom;
13
14
  sourceType?: TextureSourceType;
14
15
  source: TextureSourceOptions;
15
- engine: Engine;
16
16
  /**
17
17
  * Texture 高度
18
18
  */
@@ -30,14 +30,14 @@ export declare abstract class Texture {
30
30
  /**
31
31
  * 创建一个新的 Texture 对象。
32
32
  */
33
- static create: (engine: Engine, options: TextureSourceOptions) => Texture;
33
+ static create: (engine: Engine, options?: TextureSourceOptions) => Texture;
34
34
  /**
35
35
  * 通过数据创建 Texture 对象。
36
36
  * @param data - 要创建的 Texture 数据
37
37
  * @param options - 可选的 Texture 选项
38
38
  */
39
39
  static createWithData: (engine: Engine, data?: TextureDataType, options?: Record<string, any>) => Texture;
40
- constructor();
40
+ constructor(engine: Engine);
41
41
  get isDestroyed(): boolean;
42
42
  /**
43
43
  * 获取 Texture 的宽度。
@@ -1,6 +1,7 @@
1
+ import { Euler, Matrix4, Quaternion, Vector2, Vector3 } from '@galacean/effects-math/es/core/index';
1
2
  import type * as spec from '@galacean/effects-specification';
2
- import { Vector3, Matrix4, Quaternion, Euler } from '@galacean/effects-math/es/core/index';
3
3
  import type { Disposable } from './utils';
4
+ import type { Engine } from './engine';
4
5
  export interface TransformProps {
5
6
  position?: spec.vec3 | Vector3;
6
7
  rotation?: spec.vec3 | Euler;
@@ -18,7 +19,9 @@ export declare class Transform implements Disposable {
18
19
  * @returns
19
20
  */
20
21
  static getRotation(quat: Quaternion, out: Euler): Euler;
22
+ engine: Engine;
21
23
  name: string;
24
+ taggedProperties: Record<string, any>;
22
25
  /**
23
26
  * 自身位移
24
27
  */
@@ -39,6 +42,10 @@ export declare class Transform implements Disposable {
39
42
  * 自身锚点
40
43
  */
41
44
  readonly anchor: Vector3;
45
+ /**
46
+ * 元素矩形宽高
47
+ */
48
+ readonly size: Vector2;
42
49
  /**
43
50
  * 子变换,可以有多个
44
51
  */
@@ -113,6 +120,7 @@ export declare class Transform implements Disposable {
113
120
  * @param z
114
121
  */
115
122
  setScale(x: number, y: number, z: number): void;
123
+ setSize(x: number, y: number): void;
116
124
  /**
117
125
  * 在当前旋转的基础上使用四元素添加旋转
118
126
  * @param quat
@@ -195,9 +203,9 @@ export declare class Transform implements Disposable {
195
203
  getWorldRotation(): Euler;
196
204
  /**
197
205
  * 根据世界变换矩阵计算位移、旋转、缩放向量
198
- * @param position
199
- * @param quat
200
- * @param scale
206
+ * @param position
207
+ * @param quat
208
+ * @param scale
201
209
  */
202
210
  assignWorldTRS(position?: Vector3, quat?: Quaternion, scale?: Vector3): void;
203
211
  /**
@@ -215,6 +223,8 @@ export declare class Transform implements Disposable {
215
223
  * 获取 Transform 是否生效
216
224
  */
217
225
  getValid(): boolean;
226
+ toData(): Record<string, any>;
227
+ fromData(data: any): void;
218
228
  dispose(): void;
219
229
  private updateTRSCache;
220
230
  private dispatchValueChange;
@@ -1,2 +1,2 @@
1
- export declare function assertExist<T>(item: T | void | undefined | null, msg?: string): asserts item is T;
1
+ export declare function assertExist<T>(item?: T | void | null, msg?: string): asserts item is T;
2
2
  export declare function asserts(condition: any, msg?: string): asserts condition;
@@ -35,7 +35,7 @@ export declare function noop(): void;
35
35
  * @param {object} obj - 要判断的对象
36
36
  * @return {boolean}
37
37
  */
38
- export declare function isString(obj: any): boolean;
38
+ export declare function isString(obj: any): obj is string;
39
39
  /**
40
40
  * 判断对象是否是`Array`类型
41
41
  *
@@ -66,3 +66,4 @@ export declare function isObject(obj: any): boolean;
66
66
  export declare function deepClone(obj: any): any;
67
67
  export declare function random(min: number, max: number): number;
68
68
  export declare function throwDestroyedError(): void;
69
+ export declare function generateGUID(): string;
@@ -1,39 +1,6 @@
1
- import * as spec from '@galacean/effects-specification';
2
- import type { ValueGetter } from '../math';
3
- import type { Transform } from '../transform';
4
- import type { VFXItem } from '../vfx-item';
5
- import type { SpriteItemOptions, ItemBasicTransform, ItemLinearVelOverLifetime, SpriteRenderData } from '../plugins';
1
+ import type * as spec from '@galacean/effects-specification';
6
2
  export interface TimelineComponentOptions {
7
3
  sizeOverLifetime?: spec.SizeOverLifetime;
8
4
  rotationOverLifetime?: spec.RotationOverLifetime;
9
5
  positionOverLifetime?: spec.PositionOverLifetime;
10
6
  }
11
- export declare class TimelineComponent {
12
- options: Omit<SpriteItemOptions, 'delay'>;
13
- sizeSeparateAxes: boolean;
14
- speedOverLifetime?: ValueGetter<number>;
15
- basicTransform: ItemBasicTransform;
16
- gravityModifier: ValueGetter<number>;
17
- readonly transform: Transform;
18
- readonly linearVelOverLifetime: ItemLinearVelOverLifetime;
19
- readonly orbitalVelOverLifetime: {
20
- x?: ValueGetter<number>;
21
- y?: ValueGetter<number>;
22
- z?: ValueGetter<number>;
23
- center: [x: number, y: number, z: number];
24
- asRotation?: boolean;
25
- enabled?: boolean;
26
- };
27
- private velocity;
28
- private readonly rotationOverLifetime;
29
- private readonly sizeXOverLifetime;
30
- private readonly sizeYOverLifetime;
31
- private readonly sizeZOverLifetime;
32
- private readonly positionOverLifetime;
33
- constructor(options: TimelineComponentOptions, ownerItem: VFXItem<any>);
34
- private getVelocity;
35
- private willTranslate;
36
- updatePosition(x: number, y: number, z: number): void;
37
- updateRotation(x: number, y: number, z: number): void;
38
- getRenderData(_time: number, init?: boolean): SpriteRenderData;
39
- }
@@ -1,14 +1,20 @@
1
+ import { Vector3 } from '@galacean/effects-math/es/core/vector3';
1
2
  import * as spec from '@galacean/effects-specification';
2
- import { Vector3 } from '@galacean/effects-math/es/core/index';
3
- import type { Disposable } from './utils';
4
- import { Transform } from './transform';
5
- import type { HitTestBoxParams, HitTestCustomParams, HitTestSphereParams, HitTestTriangleParams, ParticleSystem, SpriteItem, CalculateItem, CameraController, InteractItem, BoundingBoxData, SpriteRenderData, ParticleVFXItem, FilterSpriteVFXItem, SpriteVFXItem, CameraVFXItem } from './plugins';
3
+ import { RendererComponent } from './components';
4
+ import type { Component } from './components/component';
5
+ import { ItemBehaviour } from './components/component';
6
6
  import type { Composition } from './composition';
7
- import type { CompVFXItem } from './comp-vfx-item';
8
- export type VFXItemContent = ParticleSystem | SpriteItem | CalculateItem | CameraController | InteractItem | void;
9
- export type VFXItemConstructor = new (props: VFXItemProps, composition: Composition) => VFXItem<VFXItemContent>;
7
+ import { type VFXItemData } from './asset-loader';
8
+ import { EffectsObject } from './effects-object';
9
+ import type { Engine } from './engine';
10
+ import type { BoundingBoxData, CameraController, HitTestBoxParams, HitTestCustomParams, HitTestSphereParams, HitTestTriangleParams, InteractComponent, ParticleSystem, SpriteComponent } from './plugins';
11
+ import { TimelineComponent } from './plugins';
12
+ import { Transform } from './transform';
13
+ import { type Disposable } from './utils';
14
+ export type VFXItemContent = ParticleSystem | SpriteComponent | TimelineComponent | CameraController | InteractComponent | void | {};
15
+ export type VFXItemConstructor = new (enigne: Engine, props: VFXItemProps, composition: Composition) => VFXItem<VFXItemContent>;
10
16
  export type VFXItemProps = spec.Item & {
11
- items: any;
17
+ items: VFXItemProps[];
12
18
  startTime: number;
13
19
  relative?: boolean;
14
20
  listIndex?: number;
@@ -17,7 +23,7 @@ export type VFXItemProps = spec.Item & {
17
23
  /**
18
24
  * 所有元素的继承的抽象类
19
25
  */
20
- export declare abstract class VFXItem<T extends VFXItemContent> implements Disposable {
26
+ export declare class VFXItem<T extends VFXItemContent> extends EffectsObject implements Disposable {
21
27
  /**
22
28
  * 元素绑定的父元素,
23
29
  * 1. 当元素没有绑定任何父元素时,parent为空,transform.parentTransform 为 composition.transform
@@ -26,6 +32,7 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
26
32
  * 4. 当元素绑定 TreeItem 本身时,行为表现和绑定 nullItem 相同
27
33
  */
28
34
  parent?: VFXItem<VFXItemContent>;
35
+ children: VFXItem<VFXItemContent>[];
29
36
  /**
30
37
  * 元素的变换包含位置、旋转、缩放。
31
38
  */
@@ -49,7 +56,7 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
49
56
  /**
50
57
  * 元素动画的开始时间
51
58
  */
52
- delay?: number;
59
+ start: number;
53
60
  /**
54
61
  * 元素动画结束时行为(如何处理元素)
55
62
  */
@@ -61,27 +68,32 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
61
68
  /**
62
69
  * 元素在合成中的索引
63
70
  */
64
- readonly listIndex: number;
71
+ listIndex: number;
65
72
  /**
66
73
  * 元素名称
67
74
  */
68
- readonly name: string;
75
+ name: string;
69
76
  /**
70
77
  * 元素 id 唯一
71
78
  */
72
- readonly id: string;
79
+ id: string;
73
80
  /**
74
- * 元素动画是否开始
81
+ * 元素创建的数据图层/粒子/模型等
75
82
  */
76
- started: boolean;
83
+ _content?: T;
77
84
  /**
78
- * 元素优先级
85
+ * 元素动画是否延迟播放
79
86
  */
80
- _v_priority: number;
87
+ delaying: boolean;
81
88
  /**
82
- * 元素创建的数据图层/粒子/模型等
89
+ * 元素动画的速度
83
90
  */
84
- protected _content?: T;
91
+ type: spec.ItemType;
92
+ stopped: boolean;
93
+ props: VFXItemProps;
94
+ components: Component[];
95
+ itemBehaviours: ItemBehaviour[];
96
+ rendererComponents: RendererComponent[];
85
97
  /**
86
98
  * 元素可见性,该值的改变会触发 `handleVisibleChanged` 回调
87
99
  * @protected
@@ -92,77 +104,23 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
92
104
  * @protected
93
105
  */
94
106
  protected _contentVisible: boolean;
95
- /**
96
- * 合成元素当前的时间,单位毫秒
97
- * @protected
98
- */
99
- protected timeInms: number;
100
- /**
101
- * 合成元素当前的时间,单位秒,兼容旧 player 使用秒的时间更新数据
102
- * @protected
103
- */
104
- protected time: number;
105
- /**
106
- * 元素动画持续时间,单位毫秒
107
- */
108
- protected readonly durInms: number;
109
- /**
110
- * 元素动画延迟/开始播放时间,单位毫秒
111
- */
112
- protected readonly delayInms: number;
113
- /**
114
- * 元素动画是否延迟播放
115
- */
116
- protected delaying: boolean;
117
- /**
118
- * 元素冻结属性,冻结后停止计算/更新数据
119
- */
120
- private _frozen;
121
- /**
122
- * 元素动画结束回调是否被调用
123
- */
124
- private callEnd;
125
- /**
126
- * 元素动画的速度
127
- */
128
107
  private speed;
129
- static isComposition(item: VFXItem<VFXItemContent>): item is CompVFXItem;
130
- static isSprite(item: VFXItem<VFXItemContent>): item is SpriteVFXItem;
131
- static isParticle(item: VFXItem<VFXItemContent>): item is ParticleVFXItem;
132
- static isFilterSprite(item: VFXItem<VFXItemContent>): item is FilterSpriteVFXItem;
108
+ static isComposition(item: VFXItem<VFXItemContent>): item is VFXItem<void>;
109
+ static isSprite(item: VFXItem<VFXItemContent>): item is VFXItem<SpriteComponent>;
110
+ static isParticle(item: VFXItem<VFXItemContent>): item is VFXItem<ParticleSystem>;
133
111
  static isNull(item: VFXItem<VFXItemContent>): item is VFXItem<void>;
134
112
  static isTree(item: VFXItem<VFXItemContent>): item is VFXItem<void>;
135
113
  static isCamera(item: VFXItem<VFXItemContent>): item is VFXItem<void>;
136
- static isExtraCamera(item: VFXItem<VFXItemContent>): item is CameraVFXItem;
137
- constructor(props: VFXItemProps, composition: Composition);
138
- /**
139
- * 元素内容可见性
140
- */
141
- get contentVisible(): boolean;
114
+ static isExtraCamera(item: VFXItem<VFXItemContent>): item is VFXItem<CameraController>;
115
+ constructor(engine: Engine, props?: VFXItemProps);
142
116
  /**
143
117
  * 返回元素创建的数据
144
118
  */
145
119
  get content(): T;
146
- /**
147
- * 设置元素数据
148
- */
149
- set content(t: T);
150
120
  /**
151
121
  * 播放完成后是否需要再使用,是的话生命周期结束后不会 dispose
152
122
  */
153
123
  get reusable(): boolean;
154
- /**
155
- * 获取元素类型
156
- */
157
- get type(): spec.ItemType | string;
158
- /**
159
- * 获取元素冻结属性
160
- */
161
- get frozen(): boolean;
162
- /**
163
- * 设置元素冻结属性
164
- */
165
- set frozen(v: boolean);
166
124
  /**
167
125
  * 获取元素生命周期是否开始
168
126
  */
@@ -178,59 +136,27 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
178
136
  */
179
137
  getSpeed(): number;
180
138
  /**
181
- * 重置元素状态属性
139
+ * 添加组件
140
+ * @param classConstructor - 要添加的组件类型
182
141
  */
183
- start(): void;
142
+ addComponent<T extends Component>(classConstructor: new (engine: Engine) => T): T;
184
143
  /**
185
- * 停止播放元素动画
144
+ * 获取某一类型的组件。如果当前元素绑定了多个同类型的组件只返回第一个
145
+ * @param classConstructor - 要获取的组件类型
146
+ * @returns 查询结果中符合类型的第一个组件
186
147
  */
187
- stop(): void;
188
- doStop(): void;
148
+ getComponent<T extends Component>(classConstructor: new (engine: Engine) => T): T | undefined;
189
149
  /**
190
- * 创建元素内容,此函数可以在任何时间被调用
191
- * 第一帧渲染前会被调用
192
- * @returns
150
+ * 获取某一类型的所有组件
151
+ * @param classConstructor - 要获取的组件
152
+ * @returns 一个组件列表,包含所有符合类型的组件
193
153
  */
194
- createContent(): T;
154
+ getComponents<T extends Component>(classConstructor: new (engine: Engine) => T): T[];
155
+ setParent(vfxItem: VFXItem<VFXItemContent>): void;
195
156
  /**
196
- * 创建元素的内容
197
- * @override
198
- * @param composition
199
- * @returns
200
- */
201
- protected doCreateContent(composition: Composition | null): T;
202
- /**
203
- * 元素构造函数调用时将调用该函数
204
- * @param options
205
- * @override
206
- */
207
- onConstructed(options: spec.Item): void;
208
- /**
209
- * 内部使用的更新回调,请不要重写此方法,重写 `onItemUpdate` 方法
210
- * @param deltaTime
211
- */
212
- onUpdate(deltaTime: number): void;
213
- /**
214
- * 元素结束时的回调
215
- * @override
216
- * @param composition
217
- * @param content
218
- */
219
- protected onItemRemoved(composition: Composition, content?: T): void;
220
- /**
221
- * 元素更新函数,在 Composition 对象的 tick 函数中被调用
222
- * @override
223
- * @param dt
224
- * @param lifetime
225
- */
226
- onItemUpdate(dt: number, lifetime: number): void;
227
- /**
228
- * 元素 doCreateContent 函数调用后会立即调用该函数用于初始化数据
229
- * @override
230
- * @param composition
231
- * @param content
157
+ * 停止播放元素动画
232
158
  */
233
- onLifetimeBegin(composition: Composition, content: T): void;
159
+ stop(): void;
234
160
  /**
235
161
  * 元素动画结束播放时回调函数
236
162
  * @override
@@ -258,18 +184,6 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
258
184
  * 设置元素显隐属性 会触发 `handleVisibleChanged` 回调
259
185
  */
260
186
  setVisible(visible: boolean): void;
261
- /**
262
- * 元素显隐属性改变时调用的函数,当 visible 为 true 时,务必显示元素
263
- * @param visible
264
- * @override
265
- */
266
- protected handleVisibleChanged(visible: boolean): void;
267
- /**
268
- * 元素冻结属性改变时调用的函数
269
- * @param frozen
270
- * @override
271
- */
272
- protected handleFrozenChanged(frozen: boolean): void;
273
187
  /**
274
188
  * 获取元素变换包括位置、旋转、缩放
275
189
  * @param transform 将元素变换拷贝到该对象,并将其作为返回值
@@ -321,11 +235,6 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
321
235
  * @param force 元素没有开启交互也返回参数
322
236
  */
323
237
  getHitTestParams(force?: boolean): void | HitTestBoxParams | HitTestTriangleParams | HitTestSphereParams | HitTestCustomParams;
324
- /**
325
- * 获取元素的 transform、当前生命周期、可见性,当子元素需要时可继承
326
- * @override
327
- */
328
- getRenderData(): SpriteRenderData;
329
238
  /**
330
239
  * 获取元素当前世界坐标
331
240
  */
@@ -335,16 +244,16 @@ export declare abstract class VFXItem<T extends VFXItemContent> implements Dispo
335
244
  * @param now
336
245
  * @returns
337
246
  */
338
- protected isEnded(now: number): boolean;
339
- /**
340
- * 重置元素,元素创建的内容将会被销毁
341
- */
342
- reset(): void;
247
+ isEnded(now: number): boolean;
248
+ find(name: string): VFXItem<VFXItemContent> | undefined;
249
+ fromData(data: VFXItemData): void;
250
+ toData(): void;
343
251
  translateByPixel(x: number, y: number): void;
344
252
  /**
345
253
  * 销毁元素
346
254
  */
347
255
  dispose(): void;
256
+ private resetChildrenParent;
348
257
  }
349
258
  export declare namespace Item {
350
259
  function is<T extends spec.Item>(item: spec.Item, type: spec.ItemType): item is T;
@@ -354,7 +263,7 @@ export declare namespace Item {
354
263
  function isNull(item: spec.Item): item is spec.NullItem;
355
264
  }
356
265
  /**
357
- * 根据元素的类型创建对应的 `VFXItem` 实例
266
+ * (待废弃) 根据元素的类型创建对应的 `VFXItem` 实例
358
267
  * @param props
359
268
  * @param composition
360
269
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/effects-core",
3
- "version": "1.2.0",
3
+ "version": "2.0.0-alpha.0",
4
4
  "description": "Galacean Effects runtime core for the web",
5
5
  "module": "./dist/index.mjs",
6
6
  "main": "./dist/index.js",
@@ -43,7 +43,8 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@galacean/effects-specification": "1.0.1",
46
- "@galacean/effects-math": "1.0.1"
46
+ "@galacean/effects-math": "1.0.1",
47
+ "uuid": "9.0.1"
47
48
  },
48
49
  "scripts": {
49
50
  "prebuild": "pnpm clean",