@galacean/engine-core 2.0.0-alpha.39 → 2.0.0-alpha.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.
Files changed (52) hide show
  1. package/dist/main.js +10744 -11149
  2. package/dist/main.js.map +1 -1
  3. package/dist/module.js +10745 -11148
  4. package/dist/module.js.map +1 -1
  5. package/package.json +3 -3
  6. package/types/2d/sprite/SpriteMask.d.ts +4 -0
  7. package/types/2d/sprite/SpriteRenderer.d.ts +4 -0
  8. package/types/Renderer.d.ts +6 -1
  9. package/types/Signal.d.ts +7 -1
  10. package/types/Transform.d.ts +6 -1
  11. package/types/UpdateFlag.d.ts +1 -1
  12. package/types/animation/AnimationClip.d.ts +1 -1
  13. package/types/animation/Animator.d.ts +6 -1
  14. package/types/base/DataObject.d.ts +6 -0
  15. package/types/base/index.d.ts +1 -0
  16. package/types/clone/CloneDecorators.d.ts +17 -0
  17. package/types/clone/ComponentCloner.d.ts +1 -15
  18. package/types/clone/ICloneHook.d.ts +12 -0
  19. package/types/index.d.ts +2 -2
  20. package/types/mesh/MeshRenderer.d.ts +4 -0
  21. package/types/mesh/Skin.d.ts +2 -2
  22. package/types/mesh/SkinnedMeshRenderer.d.ts +4 -0
  23. package/types/particle/ParticleGenerator.d.ts +7 -1
  24. package/types/particle/ParticleRenderer.d.ts +4 -0
  25. package/types/particle/modules/Burst.d.ts +2 -1
  26. package/types/particle/modules/MainModule.d.ts +7 -2
  27. package/types/particle/modules/ParticleCompositeCurve.d.ts +2 -1
  28. package/types/particle/modules/ParticleCompositeGradient.d.ts +6 -1
  29. package/types/particle/modules/ParticleCurve.d.ts +3 -2
  30. package/types/particle/modules/ParticleGeneratorModule.d.ts +2 -1
  31. package/types/particle/modules/ParticleGradient.d.ts +4 -3
  32. package/types/particle/modules/SubEmitter.d.ts +2 -1
  33. package/types/particle/modules/shape/BaseShape.d.ts +3 -2
  34. package/types/particle/modules/shape/MeshShape.d.ts +6 -1
  35. package/types/physics/Collider.d.ts +6 -2
  36. package/types/physics/DynamicCollider.d.ts +4 -0
  37. package/types/physics/joint/JointLimits.d.ts +2 -4
  38. package/types/physics/joint/JointMotor.d.ts +2 -4
  39. package/types/physics/shape/ColliderShape.d.ts +7 -2
  40. package/types/physics/shape/MeshColliderShape.d.ts +4 -3
  41. package/types/postProcess/PostProcessEffect.d.ts +2 -1
  42. package/types/postProcess/PostProcessEffectParameter.d.ts +2 -1
  43. package/types/shader/ShaderData.d.ts +8 -1
  44. package/types/shader/state/BlendState.d.ts +2 -1
  45. package/types/shader/state/DepthState.d.ts +2 -1
  46. package/types/shader/state/RasterState.d.ts +2 -1
  47. package/types/shader/state/RenderState.d.ts +2 -1
  48. package/types/shader/state/RenderTargetBlendState.d.ts +2 -1
  49. package/types/shader/state/StencilState.d.ts +2 -1
  50. package/types/clone/CloneManager.d.ts +0 -31
  51. package/types/clone/enums/CloneMode.d.ts +0 -13
  52. /package/types/clone/{CloneUtils.d.ts → CloneUtil.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/engine-core",
3
- "version": "2.0.0-alpha.39",
3
+ "version": "2.0.0-alpha.40",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -18,10 +18,10 @@
18
18
  "types/**/*"
19
19
  ],
20
20
  "dependencies": {
21
- "@galacean/engine-math": "2.0.0-alpha.39"
21
+ "@galacean/engine-math": "2.0.0-alpha.40"
22
22
  },
23
23
  "devDependencies": {
24
- "@galacean/engine-design": "2.0.0-alpha.39"
24
+ "@galacean/engine-design": "2.0.0-alpha.40"
25
25
  },
26
26
  "scripts": {
27
27
  "b:types": "tsc"
@@ -56,6 +56,10 @@ export declare class SpriteMask extends Renderer implements ISpriteRenderer {
56
56
  */
57
57
  get alphaCutoff(): number;
58
58
  set alphaCutoff(value: number);
59
+ /**
60
+ * @inheritdoc
61
+ */
62
+ _onClone(target: SpriteMask): void;
59
63
  protected _updateBounds(worldBounds: BoundingBox): void;
60
64
  /**
61
65
  * @inheritdoc
@@ -86,6 +86,10 @@ export declare class SpriteRenderer extends Renderer implements ISpriteRenderer
86
86
  */
87
87
  get maskInteraction(): SpriteMaskInteraction;
88
88
  set maskInteraction(value: SpriteMaskInteraction);
89
+ /**
90
+ * @inheritdoc
91
+ */
92
+ _onClone(target: SpriteRenderer): void;
89
93
  protected _updateBounds(worldBounds: BoundingBox): void;
90
94
  protected _render(context: RenderContext): void;
91
95
  protected _onDestroy(): void;
@@ -3,6 +3,7 @@ import { Component } from "./Component";
3
3
  import { Entity } from "./Entity";
4
4
  import { RenderContext } from "./RenderPipeline/RenderContext";
5
5
  import { TransformModifyFlags } from "./Transform";
6
+ import type { ICloneHook } from "./clone/ICloneHook";
6
7
  import { SpriteMaskLayer } from "./enums/SpriteMaskLayer";
7
8
  import { Material } from "./material";
8
9
  import { ShaderData } from "./shader/ShaderData";
@@ -10,7 +11,7 @@ import { ShaderData } from "./shader/ShaderData";
10
11
  * Basis for all renderers.
11
12
  * @decorator `@dependentComponents(Transform, DependentMode.CheckOnly)`
12
13
  */
13
- export declare class Renderer extends Component {
14
+ export declare class Renderer extends Component implements ICloneHook<Renderer> {
14
15
  private static _tempVector0;
15
16
  private static _receiveShadowMacro;
16
17
  private static _mvMatrixProperty;
@@ -111,6 +112,10 @@ export declare class Renderer extends Component {
111
112
  */
112
113
  setMaterials(materials: Material[]): void;
113
114
  update(deltaTime: number): void;
115
+ /**
116
+ * @inheritdoc
117
+ */
118
+ _onClone(target: Renderer): void;
114
119
  /**
115
120
  * Update once per frame per renderer.
116
121
  */
package/types/Signal.d.ts CHANGED
@@ -1,9 +1,11 @@
1
+ import { DataObject } from "./base/DataObject";
2
+ import type { ICloneHook } from "./clone/ICloneHook";
1
3
  import { Component } from "./Component";
2
4
  /**
3
5
  * Signal is a typed event mechanism for Galacean Engine.
4
6
  * @typeParam T - Tuple type of the signal arguments
5
7
  */
6
- export declare class Signal<T extends any[] = []> {
8
+ export declare class Signal<T extends any[] = []> extends DataObject implements ICloneHook<Signal<T>> {
7
9
  private _listeners;
8
10
  /**
9
11
  * Add a listener for this signal.
@@ -57,6 +59,10 @@ export declare class Signal<T extends any[] = []> {
57
59
  * @param args - Arguments to pass to each listener
58
60
  */
59
61
  invoke(...args: T): void;
62
+ /**
63
+ * @inheritdoc
64
+ */
65
+ _onClone(target: Signal<T>, cloneMap: ReadonlyMap<object, object>): void;
60
66
  private _cloneArguments;
61
67
  private _addListener;
62
68
  }
@@ -1,10 +1,11 @@
1
1
  import { Matrix, Quaternion, Vector3 } from "@galacean/engine-math";
2
2
  import { BoolUpdateFlag } from "./BoolUpdateFlag";
3
3
  import { Component } from "./Component";
4
+ import type { ICloneHook } from "./clone/ICloneHook";
4
5
  /**
5
6
  * Used to implement transformation related functions.
6
7
  */
7
- export declare class Transform extends Component {
8
+ export declare class Transform extends Component implements ICloneHook<Transform> {
8
9
  private static _tempQuat0;
9
10
  private static _tempVec30;
10
11
  private static _tempVec31;
@@ -192,6 +193,10 @@ export declare class Transform extends Component {
192
193
  * @param worldUp - Up direction in world space, default is Vector3(0, 1, 0)
193
194
  */
194
195
  lookAt(targetPosition: Vector3, worldUp?: Vector3): void;
196
+ /**
197
+ * @inheritdoc
198
+ */
199
+ _onClone(target: Transform): void;
195
200
  protected _onLocalMatrixChanging(): void;
196
201
  protected _onWorldMatrixChanging(): void;
197
202
  protected _isContainDirtyFlags(targetDirtyFlags: number): boolean;
@@ -7,7 +7,7 @@ export declare abstract class UpdateFlag {
7
7
  * @param bit - Bit
8
8
  * @param param - Parameter
9
9
  */
10
- abstract dispatch(bit?: number, param?: Object): void;
10
+ abstract dispatch(bit?: number, param?: unknown): void;
11
11
  /**
12
12
  * Clear.
13
13
  */
@@ -34,7 +34,7 @@ export declare class AnimationClip extends EngineObject {
34
34
  * @param time - The time when the event be triggered
35
35
  * @param parameter - The parameter that is stored in the event and will be sent to the function
36
36
  */
37
- addEvent(functionName: string, time: number, parameter: Object): void;
37
+ addEvent(functionName: string, time: number, parameter: object): void;
38
38
  /**
39
39
  * Adds an animation event to the clip.
40
40
  * @param event - The animation event
@@ -1,5 +1,6 @@
1
1
  import { BoolUpdateFlag } from "../BoolUpdateFlag";
2
2
  import { Component } from "../Component";
3
+ import type { ICloneHook } from "../clone/ICloneHook";
3
4
  import { AnimatorController } from "./AnimatorController";
4
5
  import { AnimatorControllerLayer } from "./AnimatorControllerLayer";
5
6
  import { AnimatorControllerParameter, AnimatorControllerParameterValue } from "./AnimatorControllerParameter";
@@ -8,7 +9,7 @@ import { AnimatorCullingMode } from "./enums/AnimatorCullingMode";
8
9
  /**
9
10
  * The controller of the animation system.
10
11
  */
11
- export declare class Animator extends Component {
12
+ export declare class Animator extends Component implements ICloneHook<Animator> {
12
13
  private static _passedTriggerParameterNames;
13
14
  private static _tempScripts;
14
15
  /** Culling mode of this Animator. */
@@ -115,6 +116,10 @@ export declare class Animator extends Component {
115
116
  */
116
117
  deactivateTriggerParameter(name: string): void;
117
118
  private _resetIfControllerUpdated;
119
+ /**
120
+ * @inheritdoc
121
+ */
122
+ _onClone(target: Animator): void;
118
123
  protected _onDestroy(): void;
119
124
  private _crossFade;
120
125
  private _getAnimatorStateInfo;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Base class for objects whose own enumerable string-keyed properties are structurally cloned by default.
3
+ * Subclasses must support argument-less construction when no compatible preset exists.
4
+ */
5
+ export declare abstract class DataObject {
6
+ }
@@ -1,5 +1,6 @@
1
1
  export { EventDispatcher } from "./EventDispatcher";
2
2
  export { Logger } from "./Logger";
3
3
  export { Time } from "./Time";
4
+ export { DataObject } from "./DataObject";
4
5
  export { EngineObject } from "./EngineObject";
5
6
  export * from "./Constant";
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Property decorator — deep clone this field's whole subtree, overriding the value type's default
3
+ * clone mode (field-level decorators have the highest priority). The deep intent carries into
4
+ * field-cloneable members; engine-bound and platform objects keep their defaults. A decorator is
5
+ * an explicit intent: if the decorated value itself can't be deep cloned (an entity reference,
6
+ * asset, function, or object with opaque internal state), cloning throws rather than falling back.
7
+ * Field-cloned classes reproduce only their own enumerable string-keyed properties.
8
+ */
9
+ export declare function deepClone(target: object, propertyKey: string): void;
10
+ /**
11
+ * Property decorator — assign (share the reference) this field, overriding the value type's default clone mode.
12
+ */
13
+ export declare function assignmentClone(target: object, propertyKey: string): void;
14
+ /**
15
+ * Property decorator — ignore this field when cloning; keep the clone's own constructor-built value.
16
+ */
17
+ export declare function ignoreClone(target: object, propertyKey: string): void;
@@ -1,15 +1 @@
1
- import { Component } from "../Component";
2
- import { Entity } from "../Entity";
3
- /**
4
- * Custom clone interface.
5
- */
6
- export interface ICustomClone {
7
- }
8
- export declare class ComponentCloner {
9
- /**
10
- * Clone component.
11
- * @param source - Clone source
12
- * @param target - Clone target
13
- */
14
- static cloneComponent(source: Component, target: Component, srcRoot: Entity, targetRoot: Entity, deepInstanceMap: Map<Object, Object>): void;
15
- }
1
+ export {};
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Extends automatic field cloning with type-specific behavior.
3
+ * @typeParam T - Clone target type
4
+ */
5
+ export interface ICloneHook<T extends object = object> {
6
+ /**
7
+ * Called on the source after its fields have been cloned to the target.
8
+ * @param target - Populated clone target
9
+ * @param cloneMap - Source-to-clone identity map for the cloned graph
10
+ */
11
+ _onClone(target: T, cloneMap: ReadonlyMap<object, object>): void;
12
+ }
package/types/index.d.ts CHANGED
@@ -63,8 +63,8 @@ export * from "./trail/index";
63
63
  export * from "./env-probe/index";
64
64
  export * from "./shader/index";
65
65
  export * from "./Layer";
66
- export * from "./clone/CloneManager";
67
- export { CloneUtils } from "./clone/CloneUtils";
66
+ export { deepClone, assignmentClone, ignoreClone } from "./clone/CloneDecorators";
67
+ export type { ICloneHook } from "./clone/ICloneHook";
68
68
  export * from "./renderingHardwareInterface/index";
69
69
  export * from "./physics/index";
70
70
  export * from "./Utils";
@@ -19,6 +19,10 @@ export declare class MeshRenderer extends Renderer {
19
19
  */
20
20
  get enableVertexColor(): boolean;
21
21
  set enableVertexColor(value: boolean);
22
+ /**
23
+ * @inheritdoc
24
+ */
25
+ _onClone(target: MeshRenderer): void;
22
26
  private _setMesh;
23
27
  private _onMeshChanged;
24
28
  }
@@ -1,10 +1,10 @@
1
1
  import { Matrix } from "@galacean/engine-math";
2
2
  import { Entity } from "../Entity";
3
- import { EngineObject } from "../base/EngineObject";
3
+ import { DataObject } from "../base/DataObject";
4
4
  /**
5
5
  * Skin used for skinned mesh renderer.
6
6
  */
7
- export declare class Skin extends EngineObject {
7
+ export declare class Skin extends DataObject {
8
8
  name: string;
9
9
  /** Inverse bind matrices. */
10
10
  inverseBindMatrices: Matrix[];
@@ -32,6 +32,10 @@ export declare class SkinnedMeshRenderer extends MeshRenderer {
32
32
  */
33
33
  get localBounds(): BoundingBox;
34
34
  set localBounds(value: BoundingBox);
35
+ /**
36
+ * @inheritdoc
37
+ */
38
+ _onClone(target: SkinnedMeshRenderer): void;
35
39
  protected _update(context: RenderContext): void;
36
40
  private _checkBlendShapeWeightLength;
37
41
  private _onLocalBoundsChanged;
@@ -1,3 +1,5 @@
1
+ import { DataObject } from "../base/DataObject";
2
+ import type { ICloneHook } from "../clone/ICloneHook";
1
3
  import { ParticleStopMode } from "./enums/ParticleStopMode";
2
4
  import { ColorOverLifetimeModule } from "./modules/ColorOverLifetimeModule";
3
5
  import { CustomDataModule } from "./modules/CustomDataModule";
@@ -14,7 +16,7 @@ import { SubEmittersModule } from "./modules/SubEmittersModule";
14
16
  /**
15
17
  * Particle Generator.
16
18
  */
17
- export declare class ParticleGenerator {
19
+ export declare class ParticleGenerator extends DataObject implements ICloneHook<ParticleGenerator> {
18
20
  private static _tempVector20;
19
21
  private static _tempVector21;
20
22
  private static _tempVector22;
@@ -103,6 +105,10 @@ export declare class ParticleGenerator {
103
105
  * @param count - Number of particles to emit
104
106
  */
105
107
  emit(count: number): void;
108
+ /**
109
+ * @inheritdoc
110
+ */
111
+ _onClone(target: ParticleGenerator): void;
106
112
  private _addNewParticle;
107
113
  private _onParticleBirth;
108
114
  private _addFeedbackParticle;
@@ -44,4 +44,8 @@ export declare class ParticleRenderer extends Renderer {
44
44
  protected _update(context: RenderContext): void;
45
45
  protected _render(context: RenderContext): void;
46
46
  protected _onDestroy(): void;
47
+ /**
48
+ * @inheritdoc
49
+ */
50
+ _onClone(target: ParticleRenderer): void;
47
51
  }
@@ -1,8 +1,9 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { ParticleCompositeCurve } from "./ParticleCompositeCurve";
2
3
  /**
3
4
  * A burst is a particle emission event, where a number of particles are all emitted at the same time
4
5
  */
5
- export declare class Burst {
6
+ export declare class Burst extends DataObject {
6
7
  time: number;
7
8
  count: ParticleCompositeCurve;
8
9
  private _cycles;
@@ -1,10 +1,11 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { Rand } from "@galacean/engine-math";
2
- import { ICustomClone } from "../../clone/ComponentCloner";
3
+ import type { ICloneHook } from "../../clone/ICloneHook";
3
4
  import { ParticleScaleMode } from "../enums/ParticleScaleMode";
4
5
  import { ParticleSimulationSpace } from "../enums/ParticleSimulationSpace";
5
6
  import { ParticleCompositeCurve } from "./ParticleCompositeCurve";
6
7
  import { ParticleCompositeGradient } from "./ParticleCompositeGradient";
7
- export declare class MainModule implements ICustomClone {
8
+ export declare class MainModule extends DataObject implements ICloneHook<MainModule> {
8
9
  private _tempVector40;
9
10
  private static _vector3One;
10
11
  private static readonly _positionScale;
@@ -100,5 +101,9 @@ export declare class MainModule implements ICustomClone {
100
101
  */
101
102
  get startSize(): ParticleCompositeCurve;
102
103
  set startSize(value: ParticleCompositeCurve);
104
+ /**
105
+ * @inheritdoc
106
+ */
107
+ _onClone(target: MainModule): void;
103
108
  private _onCompositeCurveChange;
104
109
  }
@@ -1,9 +1,10 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { ParticleCurveMode } from "../enums/ParticleCurveMode";
2
3
  import { ParticleCurve } from "./ParticleCurve";
3
4
  /**
4
5
  * Particle composite curve.
5
6
  */
6
- export declare class ParticleCompositeCurve {
7
+ export declare class ParticleCompositeCurve extends DataObject {
7
8
  private static _minMaxRange;
8
9
  private _updateManager;
9
10
  private _mode;
@@ -1,10 +1,11 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { Color } from "@galacean/engine-math";
2
3
  import { ParticleGradientMode } from "../enums/ParticleGradientMode";
3
4
  import { ParticleGradient } from "./ParticleGradient";
4
5
  /**
5
6
  * Particle composite gradient.
6
7
  */
7
- export declare class ParticleCompositeGradient {
8
+ export declare class ParticleCompositeGradient extends DataObject {
8
9
  private static _tempColor;
9
10
  /** The gradient mode. */
10
11
  mode: ParticleGradientMode;
@@ -24,6 +25,10 @@ export declare class ParticleCompositeGradient {
24
25
  */
25
26
  get gradient(): ParticleGradient;
26
27
  set gradient(value: ParticleGradient);
28
+ /**
29
+ * Create a particle gradient in constant mode with the default color.
30
+ */
31
+ constructor();
27
32
  /**
28
33
  * Create a particle gradient that generates a constant color.
29
34
  * @param constant - The constant color
@@ -1,7 +1,8 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  /**
2
3
  * Particle curve.
3
4
  */
4
- export declare class ParticleCurve {
5
+ export declare class ParticleCurve extends DataObject {
5
6
  private _updateManager;
6
7
  private _keys;
7
8
  private _typeArray;
@@ -42,7 +43,7 @@ export declare class ParticleCurve {
42
43
  /**
43
44
  * The key of the curve.
44
45
  */
45
- export declare class CurveKey {
46
+ export declare class CurveKey extends DataObject {
46
47
  private _updateManager;
47
48
  private _time;
48
49
  private _value;
@@ -1,9 +1,10 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { ShaderData, ShaderMacro } from "../../shader";
2
3
  import { ParticleCompositeCurve } from "./ParticleCompositeCurve";
3
4
  /**
4
5
  * Particle generator module.
5
6
  */
6
- export declare abstract class ParticleGeneratorModule {
7
+ export declare abstract class ParticleGeneratorModule extends DataObject {
7
8
  protected _enabled: boolean;
8
9
  /**
9
10
  * Specifies whether the module is enabled or not.
@@ -1,8 +1,9 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { Color } from "@galacean/engine-math";
2
3
  /**
3
4
  * Particle gradient.
4
5
  */
5
- export declare class ParticleGradient {
6
+ export declare class ParticleGradient extends DataObject {
6
7
  private _colorKeys;
7
8
  private _alphaKeys;
8
9
  private _colorTypeArray;
@@ -69,7 +70,7 @@ export declare class ParticleGradient {
69
70
  /**
70
71
  * The color key of the particle gradient.
71
72
  */
72
- export declare class GradientColorKey {
73
+ export declare class GradientColorKey extends DataObject {
73
74
  private _time;
74
75
  private _color;
75
76
  /**
@@ -92,7 +93,7 @@ export declare class GradientColorKey {
92
93
  /**
93
94
  * The alpha key of the particle gradient.
94
95
  */
95
- export declare class GradientAlphaKey {
96
+ export declare class GradientAlphaKey extends DataObject {
96
97
  private _time;
97
98
  private _alpha;
98
99
  /**
@@ -1,3 +1,4 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { ParticleRenderer } from "../ParticleRenderer";
2
3
  import { ParticleSubEmitterInheritProperty } from "../enums/ParticleSubEmitterInheritProperty";
3
4
  import { ParticleSubEmitterType } from "../enums/ParticleSubEmitterType";
@@ -5,7 +6,7 @@ import { ParticleSubEmitterType } from "../enums/ParticleSubEmitterType";
5
6
  * One slot in `SubEmittersModule.subEmitters`. Configures which sub-emitter
6
7
  * fires, on which parent event, with what inheritance, probability, and count.
7
8
  */
8
- export declare class SubEmitter {
9
+ export declare class SubEmitter extends DataObject {
9
10
  /** Bitmask of properties inherited from the parent particle. */
10
11
  inheritProperties: ParticleSubEmitterInheritProperty;
11
12
  /** Probability (0..1) the sub-emitter fires for any given event. */
@@ -1,10 +1,11 @@
1
1
  import { Rand, Vector3 } from "@galacean/engine-math";
2
- import { ParticleShapeType } from "./enums/ParticleShapeType";
3
2
  import { UpdateFlagManager } from "../../../UpdateFlagManager";
3
+ import { DataObject } from "../../../base/DataObject";
4
+ import { ParticleShapeType } from "./enums/ParticleShapeType";
4
5
  /**
5
6
  * Base class for all particle shapes.
6
7
  */
7
- export declare abstract class BaseShape {
8
+ export declare abstract class BaseShape extends DataObject {
8
9
  private static _tempQuaternion;
9
10
  /** The type of shape to emit particles from. */
10
11
  abstract readonly shapeType: ParticleShapeType;
@@ -1,10 +1,11 @@
1
+ import type { ICloneHook } from "../../../clone/ICloneHook";
1
2
  import { ModelMesh } from "../../../mesh";
2
3
  import { BaseShape } from "./BaseShape";
3
4
  import { ParticleShapeType } from "./enums/ParticleShapeType";
4
5
  /**
5
6
  * Particle shape that emits particles from a mesh.
6
7
  */
7
- export declare class MeshShape extends BaseShape {
8
+ export declare class MeshShape extends BaseShape implements ICloneHook<MeshShape> {
8
9
  readonly shapeType = ParticleShapeType.Mesh;
9
10
  private _mesh;
10
11
  private _positionBuffer;
@@ -18,4 +19,8 @@ export declare class MeshShape extends BaseShape {
18
19
  set mesh(value: ModelMesh);
19
20
  private _getAttributeBuffer;
20
21
  private _onMeshChanged;
22
+ /**
23
+ * @inheritdoc
24
+ */
25
+ _onClone(target: MeshShape): void;
21
26
  }
@@ -1,5 +1,5 @@
1
1
  import { BoolUpdateFlag } from "../BoolUpdateFlag";
2
- import { ICustomClone } from "../clone/ComponentCloner";
2
+ import type { ICloneHook } from "../clone/ICloneHook";
3
3
  import { Component } from "../Component";
4
4
  import { Layer } from "../Layer";
5
5
  import { ColliderShape } from "./shape/ColliderShape";
@@ -7,7 +7,7 @@ import { ColliderShape } from "./shape/ColliderShape";
7
7
  * Base class for all colliders.
8
8
  * @decorator `@dependentComponents(Transform, DependentMode.CheckOnly)`
9
9
  */
10
- export declare class Collider extends Component implements ICustomClone {
10
+ export declare class Collider extends Component implements ICloneHook<Collider> {
11
11
  protected _updateFlag: BoolUpdateFlag;
12
12
  protected _shapes: ColliderShape[];
13
13
  protected _collisionLayerIndex: number;
@@ -36,6 +36,10 @@ export declare class Collider extends Component implements ICustomClone {
36
36
  * Remove all shape attached.
37
37
  */
38
38
  clearShapes(): void;
39
+ /**
40
+ * @inheritdoc
41
+ */
42
+ _onClone(target: Collider): void;
39
43
  protected _syncNative(): void;
40
44
  protected _addNativeShape(shape: ColliderShape): void;
41
45
  protected _removeNativeShape(shape: ColliderShape): void;
@@ -168,6 +168,10 @@ export declare class DynamicCollider extends Collider {
168
168
  * @inheritdoc
169
169
  */
170
170
  addShape(shape: ColliderShape): void;
171
+ /**
172
+ * @inheritdoc
173
+ */
174
+ _onClone(target: DynamicCollider): void;
171
175
  protected _syncNative(): void;
172
176
  private _setMassAndUpdateInertia;
173
177
  private _setLinearVelocity;
@@ -1,10 +1,8 @@
1
- import { UpdateFlagManager } from "../../UpdateFlagManager";
1
+ import { DataObject } from "../../base/DataObject";
2
2
  /**
3
3
  * JointLimits is used to limit the joints angle.
4
4
  */
5
- export declare class JointLimits {
6
- /** @internal */
7
- _updateFlagManager: UpdateFlagManager;
5
+ export declare class JointLimits extends DataObject {
8
6
  private _max;
9
7
  private _min;
10
8
  private _contactDistance;
@@ -1,10 +1,8 @@
1
- import { UpdateFlagManager } from "../../UpdateFlagManager";
1
+ import { DataObject } from "../../base/DataObject";
2
2
  /**
3
3
  * The JointMotor is used to motorize a joint.
4
4
  */
5
- export declare class JointMotor {
6
- /** @internal */
7
- _updateFlagManager: UpdateFlagManager;
5
+ export declare class JointMotor extends DataObject {
8
6
  private _targetVelocity;
9
7
  private _forceLimit;
10
8
  private _gearRatio;
@@ -1,11 +1,12 @@
1
+ import { DataObject } from "../../base/DataObject";
1
2
  import { PhysicsMaterial } from "../PhysicsMaterial";
2
3
  import { Vector3 } from "@galacean/engine-math";
3
4
  import { Collider } from "../Collider";
4
- import { ICustomClone } from "../../clone/ComponentCloner";
5
+ import type { ICloneHook } from "../../clone/ICloneHook";
5
6
  /**
6
7
  * Abstract class for collider shapes.
7
8
  */
8
- export declare abstract class ColliderShape implements ICustomClone {
9
+ export declare abstract class ColliderShape extends DataObject implements ICloneHook<ColliderShape> {
9
10
  private static _idGenerator;
10
11
  protected _id: number;
11
12
  protected _material: PhysicsMaterial;
@@ -55,6 +56,10 @@ export declare abstract class ColliderShape implements ICustomClone {
55
56
  * @returns The distance between the point and the shape
56
57
  */
57
58
  getClosestPoint(point: Vector3, outClosestPoint: Vector3): number;
59
+ /**
60
+ * @inheritdoc
61
+ */
62
+ _onClone(target: ColliderShape): void;
58
63
  protected _syncNative(): void;
59
64
  private _setPosition;
60
65
  private _setRotation;
@@ -11,7 +11,6 @@ export declare class MeshColliderShape extends ColliderShape {
11
11
  private _positions;
12
12
  private _indices;
13
13
  private _cookingFlags;
14
- private _isShapeAttached;
15
14
  /**
16
15
  * Cooking flags for this mesh collider shape.
17
16
  */
@@ -35,11 +34,13 @@ export declare class MeshColliderShape extends ColliderShape {
35
34
  * {@inheritDoc ColliderShape.getClosestPoint}
36
35
  */
37
36
  getClosestPoint(point: Vector3, outClosestPoint: Vector3): number;
37
+ /**
38
+ * @inheritdoc
39
+ */
40
+ _onClone(target: MeshColliderShape): void;
38
41
  private _clearMeshData;
39
42
  private _destroyNativeShape;
40
43
  private _extractMeshData;
41
44
  private _updateNativeShapeData;
42
- private _detachFromCollider;
43
- private _attachToCollider;
44
45
  private _createNativeShape;
45
46
  }
@@ -1,7 +1,8 @@
1
+ import { DataObject } from "../base/DataObject";
1
2
  /**
2
3
  * The base class for post process effect.
3
4
  */
4
- export declare class PostProcessEffect {
5
+ export declare class PostProcessEffect extends DataObject {
5
6
  private _enabled;
6
7
  private _parameters;
7
8
  private _parameterInitialized;