@needle-tools/engine 5.1.0-alpha.4 → 5.1.0-alpha.5

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 (96) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/components.needle.json +1 -1
  3. package/dist/{needle-engine.bundle-B7cqsI4c.js → needle-engine.bundle-C-LG00ZZ.js} +6570 -6271
  4. package/dist/{needle-engine.bundle-AjVIot3d.min.js → needle-engine.bundle-D7tzaiYE.min.js} +157 -157
  5. package/dist/{needle-engine.bundle-DQCuBTVp.umd.cjs → needle-engine.bundle-OPkPmdUM.umd.cjs} +140 -140
  6. package/dist/needle-engine.d.ts +668 -191
  7. package/dist/needle-engine.js +597 -595
  8. package/dist/needle-engine.min.js +1 -1
  9. package/dist/needle-engine.umd.cjs +1 -1
  10. package/dist/three.js +1 -0
  11. package/dist/three.min.js +21 -21
  12. package/dist/three.umd.cjs +16 -16
  13. package/lib/engine/api.d.ts +2 -0
  14. package/lib/engine/api.js +2 -0
  15. package/lib/engine/api.js.map +1 -1
  16. package/lib/engine/codegen/register_types.js +10 -10
  17. package/lib/engine/codegen/register_types.js.map +1 -1
  18. package/lib/engine/engine_camera.fit.js +16 -4
  19. package/lib/engine/engine_camera.fit.js.map +1 -1
  20. package/lib/engine/engine_context.d.ts +20 -7
  21. package/lib/engine/engine_context.js +29 -14
  22. package/lib/engine/engine_context.js.map +1 -1
  23. package/lib/engine/engine_context_eventbus.d.ts +47 -0
  24. package/lib/engine/engine_context_eventbus.js +47 -0
  25. package/lib/engine/engine_context_eventbus.js.map +1 -0
  26. package/lib/engine/engine_input.d.ts +23 -4
  27. package/lib/engine/engine_input.js +2 -1
  28. package/lib/engine/engine_input.js.map +1 -1
  29. package/lib/engine/engine_physics_rapier.d.ts +10 -0
  30. package/lib/engine/engine_physics_rapier.js +6 -0
  31. package/lib/engine/engine_physics_rapier.js.map +1 -1
  32. package/lib/engine/engine_types.d.ts +10 -0
  33. package/lib/engine-components/AnimationBuilder.d.ts +158 -0
  34. package/lib/engine-components/AnimationBuilder.js +305 -0
  35. package/lib/engine-components/AnimationBuilder.js.map +1 -0
  36. package/lib/engine-components/Animator.js +6 -1
  37. package/lib/engine-components/Animator.js.map +1 -1
  38. package/lib/engine-components/AnimatorController.builder.d.ts +101 -23
  39. package/lib/engine-components/AnimatorController.builder.js +88 -20
  40. package/lib/engine-components/AnimatorController.builder.js.map +1 -1
  41. package/lib/engine-components/AnimatorController.js +2 -0
  42. package/lib/engine-components/AnimatorController.js.map +1 -1
  43. package/lib/engine-components/ContactShadows.d.ts +1 -0
  44. package/lib/engine-components/ContactShadows.js +14 -1
  45. package/lib/engine-components/ContactShadows.js.map +1 -1
  46. package/lib/engine-components/DropListener.js +3 -0
  47. package/lib/engine-components/DropListener.js.map +1 -1
  48. package/lib/engine-components/OrbitControls.d.ts +0 -2
  49. package/lib/engine-components/OrbitControls.js +14 -1
  50. package/lib/engine-components/OrbitControls.js.map +1 -1
  51. package/lib/engine-components/SceneSwitcher.js +3 -0
  52. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  53. package/lib/engine-components/api.d.ts +1 -0
  54. package/lib/engine-components/api.js +1 -0
  55. package/lib/engine-components/api.js.map +1 -1
  56. package/lib/engine-components/codegen/components.d.ts +6 -6
  57. package/lib/engine-components/codegen/components.js +6 -6
  58. package/lib/engine-components/codegen/components.js.map +1 -1
  59. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
  60. package/lib/engine-components/timeline/PlayableDirector.d.ts +7 -7
  61. package/lib/engine-components/timeline/PlayableDirector.js +6 -6
  62. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  63. package/lib/engine-components/timeline/TimelineBuilder.d.ts +175 -9
  64. package/lib/engine-components/timeline/TimelineBuilder.js +108 -2
  65. package/lib/engine-components/timeline/TimelineBuilder.js.map +1 -1
  66. package/lib/engine-components/timeline/TimelineTracks.d.ts +15 -7
  67. package/lib/engine-components/timeline/TimelineTracks.js +22 -14
  68. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  69. package/lib/engine-components/web/CursorFollow.d.ts +0 -1
  70. package/lib/engine-components/web/CursorFollow.js +0 -1
  71. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  72. package/package.json +1 -1
  73. package/plugins/common/cloud.js +6 -1
  74. package/plugins/vite/license.js +19 -1
  75. package/src/engine/api.ts +3 -0
  76. package/src/engine/codegen/register_types.ts +10 -10
  77. package/src/engine/engine_camera.fit.ts +15 -4
  78. package/src/engine/engine_context.ts +30 -15
  79. package/src/engine/engine_context_eventbus.ts +73 -0
  80. package/src/engine/engine_input.ts +27 -6
  81. package/src/engine/engine_physics_rapier.ts +20 -6
  82. package/src/engine/engine_types.ts +22 -12
  83. package/src/engine-components/AnimationBuilder.ts +472 -0
  84. package/src/engine-components/Animator.ts +6 -1
  85. package/src/engine-components/AnimatorController.builder.ts +163 -37
  86. package/src/engine-components/AnimatorController.ts +1 -0
  87. package/src/engine-components/ContactShadows.ts +15 -1
  88. package/src/engine-components/DropListener.ts +3 -0
  89. package/src/engine-components/OrbitControls.ts +16 -5
  90. package/src/engine-components/SceneSwitcher.ts +3 -0
  91. package/src/engine-components/api.ts +1 -0
  92. package/src/engine-components/codegen/components.ts +6 -6
  93. package/src/engine-components/timeline/PlayableDirector.ts +20 -20
  94. package/src/engine-components/timeline/TimelineBuilder.ts +277 -17
  95. package/src/engine-components/timeline/TimelineTracks.ts +24 -16
  96. package/src/engine-components/web/CursorFollow.ts +0 -1
@@ -0,0 +1,158 @@
1
+ import { AnimationClip, Color, Euler, Object3D, Quaternion, Vector3 } from "three";
2
+ import type { Light, Material, PerspectiveCamera } from "three";
3
+ /** A Vector3 value, either as a Three.js Vector3 or as a `[x, y, z]` tuple */
4
+ export type Vec3Value = Vector3 | [number, number, number];
5
+ /** A Quaternion value, either as a Three.js Quaternion or as a `[x, y, z, w]` tuple */
6
+ export type QuatValue = Quaternion | [number, number, number, number];
7
+ /** A Color value, either as a Three.js Color or as an `[r, g, b]` tuple (0–1) */
8
+ export type ColorValue = Color | [number, number, number];
9
+ /** An Euler value, either as a Three.js Euler or as a `[x, y, z]` tuple (radians) */
10
+ export type EulerValue = Euler | [number, number, number];
11
+ /** User-friendly interpolation mode names */
12
+ export type AnimationInterpolation = "linear" | "smooth" | "step";
13
+ /** A single keyframe: a time and a value */
14
+ export type AnimationKeyframe<V> = {
15
+ /** Time in seconds */
16
+ time: number;
17
+ /** The value at this time */
18
+ value: V;
19
+ /** Interpolation mode for this track (default: `"linear"`). Note: Three.js applies one mode per track; the first keyframe's mode is used. */
20
+ interpolation?: AnimationInterpolation;
21
+ };
22
+ /** Shorthand for a simple two-keyframe animation (start → end) */
23
+ export type Tween<V> = {
24
+ /** Start value (at time 0) */
25
+ from: V;
26
+ /** End value (at time = duration) */
27
+ to: V;
28
+ /** Duration in seconds (default: 1) */
29
+ duration?: number;
30
+ /** Interpolation mode (default: `"linear"`) */
31
+ interpolation?: AnimationInterpolation;
32
+ };
33
+ /** Keyframe array or tween shorthand */
34
+ type KF<V> = AnimationKeyframe<V>[] | Tween<V>;
35
+ /**
36
+ * An opaque descriptor for a single animation track.
37
+ * Created by {@link track} and resolved into a Three.js KeyframeTrack
38
+ * when passed to {@link createAnimation}, or inline to
39
+ * {@link AnimatorControllerBuilder.state} / {@link TimelineBuilder.clip}.
40
+ *
41
+ * @category Animation and Sequencing
42
+ */
43
+ export type TrackDescriptor = {
44
+ readonly __isTrackDescriptor: true;
45
+ /** @internal */ readonly _target: object;
46
+ /** @internal */ readonly _property: string;
47
+ /** @internal */ readonly _keyframes: Array<{
48
+ time: number;
49
+ value: any;
50
+ interpolation?: AnimationInterpolation;
51
+ }>;
52
+ /** @internal */ readonly _root?: Object3D;
53
+ };
54
+ /** Options for a single track */
55
+ export type TrackOptions = {
56
+ /**
57
+ * Root object for resolving the track path.
58
+ * - If `root === target` → self-targeting (`.property`)
59
+ * - If `root !== target` → named targeting (`"targetName.property"` using `target.name`)
60
+ * - If omitted → self-targeting by default
61
+ */
62
+ root?: Object3D;
63
+ };
64
+ /** Options for {@link createAnimation} */
65
+ export type CreateAnimationOptions = {
66
+ /** Default root for all tracks that don't specify their own */
67
+ root?: Object3D;
68
+ /** Clip name (auto-generated if omitted) */
69
+ name?: string;
70
+ };
71
+ /** Create an animation track for an Object3D's position or scale */
72
+ export declare function track(target: Object3D, property: "position" | "scale", keyframes: KF<Vec3Value>, options?: TrackOptions): TrackDescriptor;
73
+ /** Create an animation track for an Object3D's quaternion */
74
+ export declare function track(target: Object3D, property: "quaternion", keyframes: KF<QuatValue>, options?: TrackOptions): TrackDescriptor;
75
+ /** Create an animation track for an Object3D's rotation (Euler angles, converted to quaternion internally) */
76
+ export declare function track(target: Object3D, property: "rotation", keyframes: KF<EulerValue>, options?: TrackOptions): TrackDescriptor;
77
+ /** Create an animation track for an Object3D's visibility */
78
+ export declare function track(target: Object3D, property: "visible", keyframes: KF<boolean>, options?: TrackOptions): TrackDescriptor;
79
+ /** Create an animation track for a material's numeric property */
80
+ export declare function track(target: Material, property: "opacity" | "roughness" | "metalness" | "alphaTest" | "emissiveIntensity" | "envMapIntensity" | "bumpScale" | "displacementScale" | "displacementBias", keyframes: KF<number>, options?: TrackOptions): TrackDescriptor;
81
+ /** Create an animation track for a material's color property */
82
+ export declare function track(target: Material, property: "color" | "emissive", keyframes: KF<ColorValue>, options?: TrackOptions): TrackDescriptor;
83
+ /** Create an animation track for a light's numeric property */
84
+ export declare function track(target: Light, property: "intensity" | "distance" | "angle" | "penumbra" | "decay", keyframes: KF<number>, options?: TrackOptions): TrackDescriptor;
85
+ /** Create an animation track for a light's color */
86
+ export declare function track(target: Light, property: "color", keyframes: KF<ColorValue>, options?: TrackOptions): TrackDescriptor;
87
+ /** Create an animation track for a camera's numeric property */
88
+ export declare function track(target: PerspectiveCamera, property: "fov" | "near" | "far" | "zoom", keyframes: KF<number>, options?: TrackOptions): TrackDescriptor;
89
+ /**
90
+ * A fluent builder for creating `AnimationClip` instances from code.
91
+ *
92
+ * Use {@link AnimationBuilder.create} to start a new builder, chain `.track()` calls
93
+ * to add animation tracks, and call `.build()` to produce the clip.
94
+ *
95
+ * @example Single track
96
+ * ```ts
97
+ * const clip = AnimationBuilder.create()
98
+ * .track(door, "position", { from: [0,0,0], to: [2,0,0], duration: 1 })
99
+ * .build();
100
+ * ```
101
+ *
102
+ * @example Multiple tracks
103
+ * ```ts
104
+ * const clip = AnimationBuilder.create("DoorOpen")
105
+ * .track(door, "position", { from: [0,0,0], to: [2,0,0], duration: 1 })
106
+ * .track(light, "intensity", { from: 0, to: 5, duration: 1 })
107
+ * .build(room);
108
+ * ```
109
+ *
110
+ * @category Animation and Sequencing
111
+ * @group Utilities
112
+ */
113
+ export declare class AnimationBuilder {
114
+ private _name?;
115
+ private _tracks;
116
+ /** Creates a new AnimationBuilder instance */
117
+ static create(name?: string): AnimationBuilder;
118
+ constructor(name?: string);
119
+ /** Adds an animation track for an Object3D's position or scale */
120
+ track(target: Object3D, property: "position" | "scale", keyframes: KF<Vec3Value>, options?: TrackOptions): this;
121
+ /** Adds an animation track for an Object3D's quaternion */
122
+ track(target: Object3D, property: "quaternion", keyframes: KF<QuatValue>, options?: TrackOptions): this;
123
+ /** Adds an animation track for an Object3D's rotation (Euler, converted to quaternion) */
124
+ track(target: Object3D, property: "rotation", keyframes: KF<EulerValue>, options?: TrackOptions): this;
125
+ /** Adds an animation track for an Object3D's visibility */
126
+ track(target: Object3D, property: "visible", keyframes: KF<boolean>, options?: TrackOptions): this;
127
+ /** Adds an animation track for a material's numeric property */
128
+ track(target: Material, property: "opacity" | "roughness" | "metalness" | "alphaTest" | "emissiveIntensity" | "envMapIntensity" | "bumpScale" | "displacementScale" | "displacementBias", keyframes: KF<number>, options?: TrackOptions): this;
129
+ /** Adds an animation track for a material's color property */
130
+ track(target: Material, property: "color" | "emissive", keyframes: KF<ColorValue>, options?: TrackOptions): this;
131
+ /** Adds an animation track for a light's numeric property */
132
+ track(target: Light, property: "intensity" | "distance" | "angle" | "penumbra" | "decay", keyframes: KF<number>, options?: TrackOptions): this;
133
+ /** Adds an animation track for a light's color */
134
+ track(target: Light, property: "color", keyframes: KF<ColorValue>, options?: TrackOptions): this;
135
+ /** Adds an animation track for a camera's numeric property */
136
+ track(target: PerspectiveCamera, property: "fov" | "near" | "far" | "zoom", keyframes: KF<number>, options?: TrackOptions): this;
137
+ /**
138
+ * Builds and returns the `AnimationClip`.
139
+ * @param root - Optional root Object3D for resolving track paths.
140
+ * When provided, tracks targeting a different object use `target.name` for named resolution.
141
+ */
142
+ build(root?: Object3D): AnimationClip;
143
+ }
144
+ /** @internal @deprecated Use {@link AnimationBuilder.create} instead */
145
+ export declare function createAnimation(options: CreateAnimationOptions, ...tracks: TrackDescriptor[]): AnimationClip;
146
+ /** @internal @deprecated Use {@link AnimationBuilder.create} instead */
147
+ export declare function createAnimation(...tracks: TrackDescriptor[]): AnimationClip;
148
+ /**
149
+ * Resolves a clip source (AnimationClip, TrackDescriptor, or TrackDescriptor[]) into an AnimationClip.
150
+ * Used internally by AnimatorControllerBuilder and TimelineBuilder.
151
+ * @internal
152
+ */
153
+ export declare function resolveClipSource(clip: AnimationClip | TrackDescriptor | TrackDescriptor[], root?: Object3D): AnimationClip;
154
+ /** Type guard for {@link TrackDescriptor} */
155
+ export declare function isTrackDescriptor(obj: unknown): obj is TrackDescriptor;
156
+ /** Resolves an array of TrackDescriptors into an AnimationClip. @internal */
157
+ export declare function resolveToClip(descriptors: TrackDescriptor[], buildRoot?: Object3D, name?: string): AnimationClip;
158
+ export {};
@@ -0,0 +1,305 @@
1
+ import { AnimationClip, BooleanKeyframeTrack, Color, ColorKeyframeTrack, Euler, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, NumberKeyframeTrack, Object3D, Quaternion, QuaternionKeyframeTrack, Vector3, VectorKeyframeTrack } from "three";
2
+ import { isDevEnvironment } from "../engine/debug/index.js";
3
+ // --- Implementation ---
4
+ /**
5
+ * Creates an animation track descriptor targeting a property on the given object.
6
+ *
7
+ * The `target` is used for **TypeScript type inference** — it determines which property names
8
+ * are offered and what value types the keyframes accept. By default, the resulting track
9
+ * targets "self" (the mixer root). Pass `{ root }` to target a named child instead.
10
+ *
11
+ * @param target - The object whose type determines valid properties and value types
12
+ * @param property - The property to animate (e.g. `"position"`, `"opacity"`, `"intensity"`)
13
+ * @param keyframes - An array of {@link AnimationKeyframe} objects, or a {@link Tween} shorthand
14
+ * @param options - Optional {@link TrackOptions} with a `root` for named targeting
15
+ * @returns A {@link TrackDescriptor} that can be passed to {@link createAnimation}, or inline
16
+ * to `AnimatorControllerBuilder.state()` or `TimelineBuilder.clip()`
17
+ *
18
+ * @example Keyframe array
19
+ * ```ts
20
+ * track(door, "position", [
21
+ * { time: 0, value: [0, 0, 0] },
22
+ * { time: 1, value: [2, 0, 0] },
23
+ * ])
24
+ * ```
25
+ *
26
+ * @example Tween shorthand
27
+ * ```ts
28
+ * track(door, "position", { from: [0, 0, 0], to: [2, 0, 0], duration: 1 })
29
+ * ```
30
+ *
31
+ * @example Named targeting (track targets a child of root)
32
+ * ```ts
33
+ * track(door, "position", keyframes, { root: room })
34
+ * ```
35
+ *
36
+ * @category Animation and Sequencing
37
+ * @group Utilities
38
+ */
39
+ export function track(target, property, keyframes, options) {
40
+ const kf = isTween(keyframes) ? tweenToKeyframes(keyframes) : keyframes;
41
+ return {
42
+ __isTrackDescriptor: true,
43
+ _target: target,
44
+ _property: property,
45
+ _keyframes: kf.map(k => ({ ...k, value: snapshotValue(k.value) })),
46
+ _root: options?.root,
47
+ };
48
+ }
49
+ /** @internal alias so the AnimationBuilder class method can call the standalone function */
50
+ const trackFn = track;
51
+ // ============================================================
52
+ // AnimationBuilder
53
+ // ============================================================
54
+ /**
55
+ * A fluent builder for creating `AnimationClip` instances from code.
56
+ *
57
+ * Use {@link AnimationBuilder.create} to start a new builder, chain `.track()` calls
58
+ * to add animation tracks, and call `.build()` to produce the clip.
59
+ *
60
+ * @example Single track
61
+ * ```ts
62
+ * const clip = AnimationBuilder.create()
63
+ * .track(door, "position", { from: [0,0,0], to: [2,0,0], duration: 1 })
64
+ * .build();
65
+ * ```
66
+ *
67
+ * @example Multiple tracks
68
+ * ```ts
69
+ * const clip = AnimationBuilder.create("DoorOpen")
70
+ * .track(door, "position", { from: [0,0,0], to: [2,0,0], duration: 1 })
71
+ * .track(light, "intensity", { from: 0, to: 5, duration: 1 })
72
+ * .build(room);
73
+ * ```
74
+ *
75
+ * @category Animation and Sequencing
76
+ * @group Utilities
77
+ */
78
+ export class AnimationBuilder {
79
+ _name;
80
+ _tracks = [];
81
+ /** Creates a new AnimationBuilder instance */
82
+ static create(name) {
83
+ return new AnimationBuilder(name);
84
+ }
85
+ constructor(name) {
86
+ this._name = name;
87
+ }
88
+ track(target, property, keyframes, options) {
89
+ this._tracks.push(trackFn(target, property, keyframes, options));
90
+ return this;
91
+ }
92
+ /**
93
+ * Builds and returns the `AnimationClip`.
94
+ * @param root - Optional root Object3D for resolving track paths.
95
+ * When provided, tracks targeting a different object use `target.name` for named resolution.
96
+ */
97
+ build(root) {
98
+ return resolveToClip(this._tracks, root, this._name);
99
+ }
100
+ }
101
+ export function createAnimation(...args) {
102
+ let options;
103
+ let descriptors;
104
+ if (args.length > 0 && !isTrackDescriptor(args[0])) {
105
+ options = args[0];
106
+ descriptors = args.slice(1);
107
+ }
108
+ else {
109
+ descriptors = args;
110
+ }
111
+ return resolveToClip(descriptors, options?.root, options?.name);
112
+ }
113
+ // ============================================================
114
+ // Resolution helpers (exported for use by AnimatorControllerBuilder / TimelineBuilder)
115
+ // ============================================================
116
+ /**
117
+ * Resolves a clip source (AnimationClip, TrackDescriptor, or TrackDescriptor[]) into an AnimationClip.
118
+ * Used internally by AnimatorControllerBuilder and TimelineBuilder.
119
+ * @internal
120
+ */
121
+ export function resolveClipSource(clip, root) {
122
+ if (clip instanceof AnimationClip)
123
+ return clip;
124
+ if (Array.isArray(clip))
125
+ return resolveToClip(clip, root);
126
+ if (isTrackDescriptor(clip))
127
+ return resolveToClip([clip], root);
128
+ return clip; // should not reach
129
+ }
130
+ /** Type guard for {@link TrackDescriptor} */
131
+ export function isTrackDescriptor(obj) {
132
+ return obj != null && typeof obj === "object" && obj.__isTrackDescriptor === true;
133
+ }
134
+ /** Resolves an array of TrackDescriptors into an AnimationClip. @internal */
135
+ export function resolveToClip(descriptors, buildRoot, name) {
136
+ const keyframeTracks = [];
137
+ for (const desc of descriptors) {
138
+ keyframeTracks.push(buildKeyframeTrack(desc, buildRoot));
139
+ }
140
+ let duration = 0;
141
+ for (const t of keyframeTracks) {
142
+ const last = t.times[t.times.length - 1];
143
+ if (last !== undefined && last > duration)
144
+ duration = last;
145
+ }
146
+ return new AnimationClip(name ?? `clip_${_clipCounter++}`, duration, keyframeTracks);
147
+ }
148
+ // ============================================================
149
+ // Internal helpers
150
+ // ============================================================
151
+ let _clipCounter = 0;
152
+ function buildKeyframeTrack(desc, buildRoot) {
153
+ const property = resolvePropertyName(desc._property);
154
+ const trackName = resolveTrackName(desc, buildRoot, property);
155
+ const times = [];
156
+ const values = [];
157
+ for (const kf of desc._keyframes) {
158
+ times.push(kf.time);
159
+ const flat = flattenValue(kf.value, desc._property);
160
+ for (let i = 0; i < flat.length; i++)
161
+ values.push(flat[i]);
162
+ }
163
+ const interpolation = resolveInterpolation(desc._keyframes[0]?.interpolation);
164
+ const TrackClass = resolveTrackClass(desc._property, desc._keyframes[0]?.value);
165
+ return new TrackClass(trackName, times, values, interpolation);
166
+ }
167
+ function resolveTrackName(desc, buildRoot, resolvedProperty) {
168
+ const root = desc._root ?? buildRoot;
169
+ const property = resolvedProperty ?? resolvePropertyName(desc._property);
170
+ // Material target → always self-targeting with .material. prefix
171
+ if (isMaterial(desc._target)) {
172
+ return `.material.${property}`;
173
+ }
174
+ // No root → self-targeting
175
+ if (!root)
176
+ return `.${property}`;
177
+ // Root === target → self-targeting
178
+ if (root === desc._target)
179
+ return `.${property}`;
180
+ // Root !== target → named targeting
181
+ const target = desc._target;
182
+ const nodeName = target.name;
183
+ if (!nodeName) {
184
+ if (isDevEnvironment()) {
185
+ console.warn(`AnimationBuilder: target has no name, falling back to self-targeting. Set target.name for named targeting.`);
186
+ }
187
+ return `.${property}`;
188
+ }
189
+ // Dev mode: validate that target is actually a descendant of root
190
+ if (isDevEnvironment() && root instanceof Object3D && target instanceof Object3D) {
191
+ let found = false;
192
+ root.traverse(child => {
193
+ if (child === target)
194
+ found = true;
195
+ });
196
+ if (!found) {
197
+ console.warn(`AnimationBuilder: target "${nodeName}" is not a descendant of the provided root "${root.name}". The track may not resolve at play time.`);
198
+ }
199
+ }
200
+ return `${nodeName}.${property}`;
201
+ }
202
+ function resolvePropertyName(property) {
203
+ if (property === "rotation")
204
+ return "quaternion";
205
+ return property;
206
+ }
207
+ function resolveTrackClass(property, sampleValue) {
208
+ // Check property name first (most reliable)
209
+ if (property === "quaternion" || property === "rotation")
210
+ return QuaternionKeyframeTrack;
211
+ if (property === "visible")
212
+ return BooleanKeyframeTrack;
213
+ if (property === "position" || property === "scale")
214
+ return VectorKeyframeTrack;
215
+ if (property === "color" || property === "emissive")
216
+ return ColorKeyframeTrack;
217
+ // Check value type
218
+ if (sampleValue instanceof Vector3)
219
+ return VectorKeyframeTrack;
220
+ if (sampleValue instanceof Quaternion)
221
+ return QuaternionKeyframeTrack;
222
+ if (sampleValue instanceof Color)
223
+ return ColorKeyframeTrack;
224
+ if (sampleValue instanceof Euler)
225
+ return QuaternionKeyframeTrack;
226
+ if (typeof sampleValue === "boolean")
227
+ return BooleanKeyframeTrack;
228
+ if (typeof sampleValue === "number")
229
+ return NumberKeyframeTrack;
230
+ // Array → infer from length + property context
231
+ if (Array.isArray(sampleValue)) {
232
+ if (sampleValue.length === 4)
233
+ return QuaternionKeyframeTrack;
234
+ if (sampleValue.length === 3)
235
+ return VectorKeyframeTrack;
236
+ if (sampleValue.length === 2)
237
+ return VectorKeyframeTrack;
238
+ return NumberKeyframeTrack;
239
+ }
240
+ return NumberKeyframeTrack;
241
+ }
242
+ function flattenValue(value, property) {
243
+ // Tuple arrays — already flat
244
+ if (Array.isArray(value)) {
245
+ // Special case: Euler array [x,y,z] for "rotation" → convert to quaternion
246
+ if (property === "rotation" && value.length === 3) {
247
+ const q = new Quaternion().setFromEuler(new Euler(value[0], value[1], value[2]));
248
+ return [q.x, q.y, q.z, q.w];
249
+ }
250
+ return value;
251
+ }
252
+ if (typeof value === "number")
253
+ return [value];
254
+ if (typeof value === "boolean")
255
+ return [value ? 1 : 0];
256
+ if (value instanceof Vector3)
257
+ return [value.x, value.y, value.z];
258
+ if (value instanceof Quaternion)
259
+ return [value.x, value.y, value.z, value.w];
260
+ if (value instanceof Color)
261
+ return [value.r, value.g, value.b];
262
+ if (value instanceof Euler) {
263
+ const q = new Quaternion().setFromEuler(value);
264
+ return [q.x, q.y, q.z, q.w];
265
+ }
266
+ // duck-type Vector2/Vector3-like
267
+ if (typeof value === "object" && value !== null && "x" in value && "y" in value) {
268
+ if ("w" in value)
269
+ return [value.x, value.y, value.z, value.w];
270
+ if ("z" in value)
271
+ return [value.x, value.y, value.z];
272
+ return [value.x, value.y];
273
+ }
274
+ return [Number(value)];
275
+ }
276
+ function resolveInterpolation(mode) {
277
+ switch (mode) {
278
+ case "smooth": return InterpolateSmooth;
279
+ case "step": return InterpolateDiscrete;
280
+ default: return InterpolateLinear;
281
+ }
282
+ }
283
+ function isTween(kf) {
284
+ return kf != null && !Array.isArray(kf) && typeof kf === "object" && "from" in kf && "to" in kf;
285
+ }
286
+ function tweenToKeyframes(tween) {
287
+ return [
288
+ { time: 0, value: tween.from, interpolation: tween.interpolation },
289
+ { time: tween.duration ?? 1, value: tween.to, interpolation: tween.interpolation },
290
+ ];
291
+ }
292
+ /** Snapshot a keyframe value so live references (e.g. `obj.position`) are captured at definition time */
293
+ function snapshotValue(value) {
294
+ if (value == null || typeof value !== "object")
295
+ return value; // primitives are fine
296
+ if (typeof value.clone === "function")
297
+ return value.clone(); // Vector3, Quaternion, Color, Euler, etc.
298
+ if (Array.isArray(value))
299
+ return value.slice(); // tuple arrays
300
+ return value;
301
+ }
302
+ function isMaterial(obj) {
303
+ return obj != null && typeof obj === "object" && obj.isMaterial === true;
304
+ }
305
+ //# sourceMappingURL=AnimationBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationBuilder.js","sourceRoot":"","sources":["../../src/engine-components/AnimationBuilder.ts"],"names":[],"mappings":"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"}
@@ -91,6 +91,10 @@ export class Animator extends Behaviour {
91
91
  if (this._animatorController && this._animatorController.model === val) {
92
92
  return;
93
93
  }
94
+ // Dispose the previous controller to stop its mixer and unregister it
95
+ if (this._animatorController) {
96
+ this._animatorController.dispose();
97
+ }
94
98
  if (val) {
95
99
  if (!(val instanceof AnimatorController)) {
96
100
  if (debug)
@@ -108,7 +112,8 @@ export class Animator extends Behaviour {
108
112
  val = new AnimatorController(val.model);
109
113
  }
110
114
  this._animatorController = val;
111
- this._animatorController.bind(this);
115
+ if (this.__didAwake)
116
+ this._animatorController.bind(this);
112
117
  }
113
118
  }
114
119
  else
@@ -1 +1 @@
1
- {"version":3,"file":"Animator.js","sourceRoot":"","sources":["../../src/engine-components/Animator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Animator.js","sourceRoot":"","sources":["../../src/engine-components/Animator.ts"],"names":[],"mappings":"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"}