@aura3d/engine 1.0.3 → 1.0.6

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 (210) hide show
  1. package/README.md +338 -14
  2. package/dist/animation/AnimationClipEvents.d.ts +57 -0
  3. package/dist/animation/AnimationClipEvents.d.ts.map +1 -0
  4. package/dist/animation/AnimationClipEvents.js +171 -0
  5. package/dist/animation/AnimationClipEvents.js.map +1 -0
  6. package/dist/animation/AnimationClipRegistry.d.ts +76 -0
  7. package/dist/animation/AnimationClipRegistry.d.ts.map +1 -0
  8. package/dist/animation/AnimationClipRegistry.js +130 -0
  9. package/dist/animation/AnimationClipRegistry.js.map +1 -0
  10. package/dist/animation/AnimationController.d.ts +168 -0
  11. package/dist/animation/AnimationController.d.ts.map +1 -0
  12. package/dist/animation/AnimationController.js +619 -0
  13. package/dist/animation/AnimationController.js.map +1 -0
  14. package/dist/animation/AnimationStateGraph.d.ts +2 -0
  15. package/dist/animation/AnimationStateGraph.d.ts.map +1 -0
  16. package/dist/animation/AnimationStateGraph.js +2 -0
  17. package/dist/animation/AnimationStateGraph.js.map +1 -0
  18. package/dist/animation/AnimationStateMachine.d.ts +16 -0
  19. package/dist/animation/AnimationStateMachine.d.ts.map +1 -1
  20. package/dist/animation/AnimationStateMachine.js +69 -7
  21. package/dist/animation/AnimationStateMachine.js.map +1 -1
  22. package/dist/animation/HumanoidRetargeting.d.ts +76 -0
  23. package/dist/animation/HumanoidRetargeting.d.ts.map +1 -0
  24. package/dist/animation/HumanoidRetargeting.js +331 -0
  25. package/dist/animation/HumanoidRetargeting.js.map +1 -0
  26. package/dist/animation/browser-index.d.ts +18 -0
  27. package/dist/animation/browser-index.d.ts.map +1 -1
  28. package/dist/animation/browser-index.js +13 -0
  29. package/dist/animation/browser-index.js.map +1 -1
  30. package/dist/animation/index.d.ts +17 -1
  31. package/dist/animation/index.d.ts.map +1 -1
  32. package/dist/animation/index.js +12 -1
  33. package/dist/animation/index.js.map +1 -1
  34. package/dist/animation/threejs-compatibility/AnimationDiagnostics.d.ts.map +1 -1
  35. package/dist/animation/threejs-compatibility/AnimationDiagnostics.js +3 -5
  36. package/dist/animation/threejs-compatibility/AnimationDiagnostics.js.map +1 -1
  37. package/dist/assets/GLTFAnimationRuntime.js +1 -1
  38. package/dist/assets/GLTFLoader.js +1 -1
  39. package/dist/aura3d-cli/cli.js +225 -8
  40. package/dist/aura3d-cli/cli.js.map +1 -1
  41. package/dist/aura3d-cli/index.d.ts +283 -3
  42. package/dist/aura3d-cli/index.d.ts.map +1 -1
  43. package/dist/aura3d-cli/index.js +1028 -4
  44. package/dist/aura3d-cli/index.js.map +1 -1
  45. package/dist/aura3d-cli/pull-bridge.d.ts +108 -0
  46. package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -0
  47. package/dist/aura3d-cli/pull-bridge.js +333 -0
  48. package/dist/aura3d-cli/pull-bridge.js.map +1 -0
  49. package/dist/create-aura3d/index.d.ts +1 -1
  50. package/dist/create-aura3d/index.d.ts.map +1 -1
  51. package/dist/create-aura3d/index.js +9 -2
  52. package/dist/create-aura3d/index.js.map +1 -1
  53. package/dist/editor-runtime/ProjectSerializer.d.ts +74 -1
  54. package/dist/editor-runtime/ProjectSerializer.d.ts.map +1 -1
  55. package/dist/editor-runtime/ProjectSerializer.js +123 -6
  56. package/dist/editor-runtime/ProjectSerializer.js.map +1 -1
  57. package/dist/editor-runtime/TimelineModel.d.ts +18 -0
  58. package/dist/editor-runtime/TimelineModel.d.ts.map +1 -1
  59. package/dist/editor-runtime/TimelineModel.js +67 -3
  60. package/dist/editor-runtime/TimelineModel.js.map +1 -1
  61. package/dist/editor-runtime/TimelineRuntimeBridge.d.ts +98 -0
  62. package/dist/editor-runtime/TimelineRuntimeBridge.d.ts.map +1 -0
  63. package/dist/editor-runtime/TimelineRuntimeBridge.js +186 -0
  64. package/dist/editor-runtime/TimelineRuntimeBridge.js.map +1 -0
  65. package/dist/editor-runtime/index.d.ts +3 -1
  66. package/dist/editor-runtime/index.d.ts.map +1 -1
  67. package/dist/editor-runtime/index.js +1 -0
  68. package/dist/editor-runtime/index.js.map +1 -1
  69. package/dist/engine/agent-api/AnimationController.d.ts +607 -0
  70. package/dist/engine/agent-api/AnimationController.d.ts.map +1 -0
  71. package/dist/engine/agent-api/AnimationController.js +2192 -0
  72. package/dist/engine/agent-api/AnimationController.js.map +1 -0
  73. package/dist/engine/agent-api/AssetEvidence.d.ts +88 -0
  74. package/dist/engine/agent-api/AssetEvidence.d.ts.map +1 -0
  75. package/dist/engine/agent-api/AssetEvidence.js +157 -0
  76. package/dist/engine/agent-api/AssetEvidence.js.map +1 -0
  77. package/dist/engine/agent-api/AuraAppHandle.d.ts +55 -0
  78. package/dist/engine/agent-api/AuraAppHandle.d.ts.map +1 -0
  79. package/dist/engine/agent-api/AuraAppHandle.js +15 -0
  80. package/dist/engine/agent-api/AuraAppHandle.js.map +1 -0
  81. package/dist/engine/agent-api/AuraVoiceBridge.d.ts +96 -0
  82. package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -0
  83. package/dist/engine/agent-api/AuraVoiceBridge.js +370 -0
  84. package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -0
  85. package/dist/engine/agent-api/CartoonDirector.d.ts +95 -0
  86. package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
  87. package/dist/engine/agent-api/CartoonDirector.js +342 -0
  88. package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
  89. package/dist/engine/agent-api/CartoonPerformance.d.ts +149 -0
  90. package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
  91. package/dist/engine/agent-api/CartoonPerformance.js +317 -0
  92. package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
  93. package/dist/engine/agent-api/CartoonRenderQueue.d.ts +132 -0
  94. package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
  95. package/dist/engine/agent-api/CartoonRenderQueue.js +385 -0
  96. package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
  97. package/dist/engine/agent-api/CharacterAssembly.d.ts +126 -0
  98. package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -0
  99. package/dist/engine/agent-api/CharacterAssembly.js +280 -0
  100. package/dist/engine/agent-api/CharacterAssembly.js.map +1 -0
  101. package/dist/engine/agent-api/DialoguePerformance.d.ts +150 -0
  102. package/dist/engine/agent-api/DialoguePerformance.d.ts.map +1 -0
  103. package/dist/engine/agent-api/DialoguePerformance.js +335 -0
  104. package/dist/engine/agent-api/DialoguePerformance.js.map +1 -0
  105. package/dist/engine/agent-api/FrameLoop.d.ts +70 -0
  106. package/dist/engine/agent-api/FrameLoop.d.ts.map +1 -0
  107. package/dist/engine/agent-api/FrameLoop.js +165 -0
  108. package/dist/engine/agent-api/FrameLoop.js.map +1 -0
  109. package/dist/engine/agent-api/GameAppRuntime.d.ts +62 -0
  110. package/dist/engine/agent-api/GameAppRuntime.d.ts.map +1 -0
  111. package/dist/engine/agent-api/GameAppRuntime.js +189 -0
  112. package/dist/engine/agent-api/GameAppRuntime.js.map +1 -0
  113. package/dist/engine/agent-api/GameAssetValidation.d.ts +279 -0
  114. package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -0
  115. package/dist/engine/agent-api/GameAssetValidation.js +719 -0
  116. package/dist/engine/agent-api/GameAssetValidation.js.map +1 -0
  117. package/dist/engine/agent-api/GameEvidence.d.ts +148 -0
  118. package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -0
  119. package/dist/engine/agent-api/GameEvidence.js +269 -0
  120. package/dist/engine/agent-api/GameEvidence.js.map +1 -0
  121. package/dist/engine/agent-api/GameRuntime.d.ts +931 -0
  122. package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -0
  123. package/dist/engine/agent-api/GameRuntime.js +2229 -0
  124. package/dist/engine/agent-api/GameRuntime.js.map +1 -0
  125. package/dist/engine/agent-api/GameSceneBridge.d.ts +54 -0
  126. package/dist/engine/agent-api/GameSceneBridge.d.ts.map +1 -0
  127. package/dist/engine/agent-api/GameSceneBridge.js +110 -0
  128. package/dist/engine/agent-api/GameSceneBridge.js.map +1 -0
  129. package/dist/engine/agent-api/PromptAnimationContract.d.ts +278 -0
  130. package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -0
  131. package/dist/engine/agent-api/PromptAnimationContract.js +238 -0
  132. package/dist/engine/agent-api/PromptAnimationContract.js.map +1 -0
  133. package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +183 -0
  134. package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -0
  135. package/dist/engine/agent-api/PromptAnimationEvidence.js +454 -0
  136. package/dist/engine/agent-api/PromptAnimationEvidence.js.map +1 -0
  137. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +100 -0
  138. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -0
  139. package/dist/engine/agent-api/RuntimeNodeHandle.js +36 -0
  140. package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -0
  141. package/dist/engine/agent-api/ShotTimeline.d.ts +179 -0
  142. package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -0
  143. package/dist/engine/agent-api/ShotTimeline.js +264 -0
  144. package/dist/engine/agent-api/ShotTimeline.js.map +1 -0
  145. package/dist/engine/agent-api/VisemeController.d.ts +89 -0
  146. package/dist/engine/agent-api/VisemeController.d.ts.map +1 -0
  147. package/dist/engine/agent-api/VisemeController.js +207 -0
  148. package/dist/engine/agent-api/VisemeController.js.map +1 -0
  149. package/dist/engine/agent-api/game-kits/fighting.d.ts +123 -0
  150. package/dist/engine/agent-api/game-kits/fighting.d.ts.map +1 -0
  151. package/dist/engine/agent-api/game-kits/fighting.js +483 -0
  152. package/dist/engine/agent-api/game-kits/fighting.js.map +1 -0
  153. package/dist/engine/agent-api/game-kits/index.d.ts +15 -0
  154. package/dist/engine/agent-api/game-kits/index.d.ts.map +1 -0
  155. package/dist/engine/agent-api/game-kits/index.js +6 -0
  156. package/dist/engine/agent-api/game-kits/index.js.map +1 -0
  157. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -0
  158. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts.map +1 -1
  159. package/dist/engine/agent-api/index.d.ts +495 -1
  160. package/dist/engine/agent-api/index.d.ts.map +1 -1
  161. package/dist/engine/agent-api/index.js +752 -6
  162. package/dist/engine/agent-api/index.js.map +1 -1
  163. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  164. package/dist/index.d.ts +1 -0
  165. package/dist/index.js +1 -0
  166. package/dist/physics/CollisionVolumes.d.ts +57 -0
  167. package/dist/physics/CollisionVolumes.d.ts.map +1 -0
  168. package/dist/physics/CollisionVolumes.js +159 -0
  169. package/dist/physics/CollisionVolumes.js.map +1 -0
  170. package/dist/physics/HitboxWorld.d.ts +250 -0
  171. package/dist/physics/HitboxWorld.d.ts.map +1 -0
  172. package/dist/physics/HitboxWorld.js +771 -0
  173. package/dist/physics/HitboxWorld.js.map +1 -0
  174. package/dist/physics/KinematicBody.d.ts +157 -0
  175. package/dist/physics/KinematicBody.d.ts.map +1 -0
  176. package/dist/physics/KinematicBody.js +405 -0
  177. package/dist/physics/KinematicBody.js.map +1 -0
  178. package/dist/physics/KinematicWorld.d.ts +58 -0
  179. package/dist/physics/KinematicWorld.d.ts.map +1 -0
  180. package/dist/physics/KinematicWorld.js +246 -0
  181. package/dist/physics/KinematicWorld.js.map +1 -0
  182. package/dist/physics/index.d.ts +4 -0
  183. package/dist/physics/index.d.ts.map +1 -1
  184. package/dist/physics/index.js +4 -0
  185. package/dist/physics/index.js.map +1 -1
  186. package/dist/rendering/ForwardPass.js +2 -2
  187. package/dist/rendering/ShaderLibrary.js +2 -2
  188. package/dist/rendering/SkinnedLitMaterial.js +3 -3
  189. package/dist/rendering/SkinnedUnlitMaterial.js +3 -3
  190. package/dist/scene/Renderable.js +2 -2
  191. package/dist/scripting/VisualGraph.d.ts +2 -1
  192. package/dist/scripting/VisualGraph.d.ts.map +1 -1
  193. package/dist/scripting/VisualGraph.js +118 -1
  194. package/dist/scripting/VisualGraph.js.map +1 -1
  195. package/dist/scripting/VisualGraphContext.d.ts +123 -0
  196. package/dist/scripting/VisualGraphContext.d.ts.map +1 -0
  197. package/dist/scripting/VisualGraphContext.js +2 -0
  198. package/dist/scripting/VisualGraphContext.js.map +1 -0
  199. package/dist/scripting/VisualGraphExecutor.d.ts +6 -1
  200. package/dist/scripting/VisualGraphExecutor.d.ts.map +1 -1
  201. package/dist/scripting/VisualGraphExecutor.js +364 -7
  202. package/dist/scripting/VisualGraphExecutor.js.map +1 -1
  203. package/dist/scripting/VisualNodeCatalog.d.ts +1 -1
  204. package/dist/scripting/VisualNodeCatalog.d.ts.map +1 -1
  205. package/dist/scripting/VisualNodeCatalog.js +61 -1
  206. package/dist/scripting/VisualNodeCatalog.js.map +1 -1
  207. package/dist/scripting/index.d.ts +1 -0
  208. package/dist/scripting/index.d.ts.map +1 -1
  209. package/dist/scripting/index.js.map +1 -1
  210. package/package.json +203 -118
@@ -0,0 +1,619 @@
1
+ import { animationClipEventKey, AnimationEventDispatcher, sampleClipEvents } from "./AnimationClipEvents.js";
2
+ import { AnimationClipRegistry } from "./AnimationClipRegistry.js";
3
+ export class AnimationController {
4
+ registry;
5
+ dispatcher = new AnimationEventDispatcher();
6
+ states = new Map();
7
+ clockTime = 0;
8
+ nextPlaybackIndex = 0;
9
+ pendingCrossfade;
10
+ constructor(registry = new AnimationClipRegistry()) {
11
+ this.registry = registry;
12
+ }
13
+ on(type, listener) {
14
+ return this.dispatcher.on(type, listener);
15
+ }
16
+ once(type, listener) {
17
+ return this.dispatcher.once(type, listener);
18
+ }
19
+ registerClip(definition) {
20
+ return this.registry.register(definition);
21
+ }
22
+ play(clipId, options = {}) {
23
+ const resolvedClipId = this.registry.has(clipId) ? clipId : options.fallbackClipId;
24
+ if (!resolvedClipId) {
25
+ throw new Error(`Animation clip "${clipId}" is not registered.`);
26
+ }
27
+ const existing = this.findStateByClip(resolvedClipId);
28
+ if (existing && !options.restart) {
29
+ existing.status = options.paused ? "paused" : "playing";
30
+ existing.speed = sanitizeSpeed(options.speed ?? existing.speed);
31
+ existing.targetWeight = sanitizeWeight(options.weight ?? existing.targetWeight);
32
+ existing.inputDirection = options.direction ?? existing.inputDirection;
33
+ this.emitStateChanged();
34
+ return cloneState(existing);
35
+ }
36
+ if (options.exclusive ?? true) {
37
+ this.states.clear();
38
+ }
39
+ const clip = this.registry.require(resolvedClipId);
40
+ const playback = this.createPlaybackState(clip, options);
41
+ this.states.set(playback.id, playback);
42
+ this.dispatcher.emit("start", cloneState(playback));
43
+ this.emitStateChanged();
44
+ return cloneState(playback);
45
+ }
46
+ pause(clipId) {
47
+ for (const state of this.selectStates(clipId)) {
48
+ if (state.status === "playing") {
49
+ state.status = "paused";
50
+ }
51
+ }
52
+ this.emitStateChanged();
53
+ }
54
+ resume(clipId) {
55
+ for (const state of this.selectStates(clipId)) {
56
+ if (state.status === "paused") {
57
+ state.status = "playing";
58
+ }
59
+ }
60
+ this.emitStateChanged();
61
+ }
62
+ restart(clipId, options = {}) {
63
+ const resolvedClipId = clipId ?? this.activeClipId();
64
+ if (!resolvedClipId) {
65
+ throw new Error("Cannot restart animation without an active clip or clipId.");
66
+ }
67
+ return this.play(resolvedClipId, {
68
+ ...options,
69
+ restart: true
70
+ });
71
+ }
72
+ stop(clipId, options = {}) {
73
+ const targets = this.selectStates(clipId);
74
+ const fadeOut = sanitizeDuration(options.fadeOut ?? 0);
75
+ for (const state of targets) {
76
+ if (fadeOut > 0) {
77
+ state.fade = {
78
+ kind: "out",
79
+ elapsed: 0,
80
+ duration: fadeOut,
81
+ fromWeight: state.weight,
82
+ toWeight: 0
83
+ };
84
+ state.targetWeight = 0;
85
+ }
86
+ else {
87
+ this.states.delete(state.id);
88
+ state.status = "stopped";
89
+ this.dispatcher.emit("end", cloneState(state));
90
+ }
91
+ }
92
+ this.emitStateChanged();
93
+ }
94
+ crossFade(toClipId, duration, options = {}) {
95
+ return this.crossfade(toClipId, duration, options);
96
+ }
97
+ crossfade(toClipId, duration, options = {}) {
98
+ const fadeDuration = sanitizeDuration(duration);
99
+ const fromStates = options.fromClipId ? this.selectStates(options.fromClipId) : this.getInternalStates();
100
+ const fromClipIds = fromStates.map((state) => state.clipId);
101
+ const event = {
102
+ fromClipIds,
103
+ toClipId,
104
+ duration: fadeDuration
105
+ };
106
+ this.dispatcher.emit("crossFadeStart", event);
107
+ this.dispatcher.emit("crossfadeStart", event);
108
+ this.pendingCrossfade = event;
109
+ for (const state of fromStates) {
110
+ state.fade = {
111
+ kind: "out",
112
+ elapsed: 0,
113
+ duration: fadeDuration,
114
+ fromWeight: state.weight,
115
+ toWeight: 0
116
+ };
117
+ state.targetWeight = 0;
118
+ }
119
+ const next = this.play(toClipId, {
120
+ ...options,
121
+ exclusive: false,
122
+ restart: true,
123
+ fadeIn: fadeDuration,
124
+ weight: options.weight ?? 1
125
+ });
126
+ if (fadeDuration === 0) {
127
+ this.finishCrossfade();
128
+ }
129
+ return next;
130
+ }
131
+ update(dt) {
132
+ if (!Number.isFinite(dt) || dt === 0) {
133
+ return this.snapshot();
134
+ }
135
+ this.clockTime += dt;
136
+ const endedStates = [];
137
+ for (const state of this.getInternalStates()) {
138
+ this.updateFade(state, Math.abs(dt));
139
+ if (state.status !== "playing") {
140
+ continue;
141
+ }
142
+ const advance = advanceState(state, dt);
143
+ this.emitSampledEvents(state);
144
+ if (advance.loopsPassed > 0) {
145
+ this.dispatcher.emit("loop", {
146
+ clipId: state.clipId,
147
+ playbackId: state.id,
148
+ loopCount: state.loopCount,
149
+ loopsPassed: advance.loopsPassed
150
+ });
151
+ }
152
+ if (advance.completed) {
153
+ state.status = "completed";
154
+ state.completed = true;
155
+ endedStates.push(state);
156
+ }
157
+ }
158
+ for (const state of endedStates) {
159
+ this.dispatcher.emit("end", cloneState(state));
160
+ }
161
+ this.removeFinishedFadeOuts();
162
+ this.finishCrossfadeIfReady();
163
+ this.emitStateChanged();
164
+ return this.snapshot();
165
+ }
166
+ scrub(clipOrTime, timeOrOptions = {}, maybeOptions = {}) {
167
+ const hasClipId = typeof clipOrTime === "string";
168
+ const time = hasClipId ? Number(timeOrOptions) : clipOrTime;
169
+ const options = hasClipId ? maybeOptions : timeOrOptions;
170
+ const clipId = hasClipId ? clipOrTime : options.clipId ?? this.activeClipId();
171
+ if (!clipId) {
172
+ throw new Error("Cannot scrub without an active clip or clipId.");
173
+ }
174
+ let state = this.findStateByClip(clipId);
175
+ if (!state) {
176
+ if (options.createIfMissing === false) {
177
+ throw new Error(`Cannot scrub inactive animation clip "${clipId}".`);
178
+ }
179
+ this.play(clipId, {
180
+ startTime: time,
181
+ paused: true,
182
+ restart: true
183
+ });
184
+ state = this.findStateByClip(clipId);
185
+ }
186
+ if (!state) {
187
+ throw new Error(`Cannot scrub animation clip "${clipId}".`);
188
+ }
189
+ const previousTime = state.localTime;
190
+ state.previousLocalTime = previousTime;
191
+ state.localTime = normalizeStateTime(time, state.duration, state.loopMode);
192
+ state.playhead = state.localTime;
193
+ state.normalizedTime = state.duration > 0 ? state.localTime / state.duration : 0;
194
+ state.completed = false;
195
+ state.status = options.play ? "playing" : "paused";
196
+ if (options.emitEvents) {
197
+ this.emitSampledEvents(state);
198
+ }
199
+ this.dispatcher.emit("scrub", {
200
+ clipId,
201
+ playbackId: state.id,
202
+ fromTime: previousTime,
203
+ toTime: state.localTime
204
+ });
205
+ this.emitStateChanged();
206
+ return this.capturePose({ emitEvent: false });
207
+ }
208
+ capturePose(options = {}) {
209
+ const states = options.clipId
210
+ ? this.selectStates(options.clipId)
211
+ : this.getInternalStates().filter((state) => state.weight > 0);
212
+ const pose = options.time !== undefined && options.clipId
213
+ ? this.sampleSinglePose(this.registry.require(options.clipId), options.time)
214
+ : this.blendStates(states);
215
+ const snapshot = {
216
+ time: this.clockTime,
217
+ pose,
218
+ clips: states.map(cloneState)
219
+ };
220
+ if (options.emitEvent ?? true) {
221
+ this.dispatcher.emit("poseCaptured", snapshot);
222
+ }
223
+ return snapshot;
224
+ }
225
+ state(clipId) {
226
+ const state = clipId ? this.findStateByClip(clipId) : this.primaryState();
227
+ return state ? cloneState(state) : undefined;
228
+ }
229
+ snapshot() {
230
+ return {
231
+ time: this.clockTime,
232
+ activeClipId: this.activeClipId(),
233
+ clips: this.getInternalStates().map(cloneState)
234
+ };
235
+ }
236
+ dispose() {
237
+ this.states.clear();
238
+ this.dispatcher.clear();
239
+ this.pendingCrossfade = undefined;
240
+ }
241
+ createPlaybackState(clip, options) {
242
+ const targetWeight = sanitizeWeight(options.weight ?? 1);
243
+ const fadeIn = sanitizeDuration(options.fadeIn ?? 0);
244
+ const localTime = normalizeStateTime(options.startTime ?? 0, clip.duration, normalizeLoopMode(options.loop, clip.loop));
245
+ const id = options.id ?? `${clip.id}:${this.nextPlaybackIndex}`;
246
+ this.nextPlaybackIndex += 1;
247
+ return {
248
+ id,
249
+ clip,
250
+ clipId: clip.id,
251
+ metadata: options.metadata,
252
+ status: options.paused ? "paused" : "playing",
253
+ localTime,
254
+ previousLocalTime: localTime,
255
+ normalizedTime: clip.duration > 0 ? localTime / clip.duration : 0,
256
+ duration: clip.duration,
257
+ speed: sanitizeSpeed(options.speed ?? 1),
258
+ weight: fadeIn > 0 ? 0 : targetWeight,
259
+ targetWeight,
260
+ loopMode: normalizeLoopMode(options.loop, clip.loop),
261
+ loopCount: 0,
262
+ direction: options.direction ?? 1,
263
+ inputDirection: options.direction ?? 1,
264
+ completed: false,
265
+ playhead: localTime,
266
+ onceEvents: new Set(),
267
+ fade: fadeIn > 0
268
+ ? {
269
+ kind: "in",
270
+ elapsed: 0,
271
+ duration: fadeIn,
272
+ fromWeight: 0,
273
+ toWeight: targetWeight
274
+ }
275
+ : undefined
276
+ };
277
+ }
278
+ emitSampledEvents(state) {
279
+ const invocations = sampleClipEvents({
280
+ id: state.clipId,
281
+ duration: state.duration,
282
+ events: state.clip.events
283
+ }, {
284
+ from: state.previousLocalTime,
285
+ to: state.localTime,
286
+ duration: state.duration,
287
+ loop: state.loopMode !== "once",
288
+ direction: state.direction,
289
+ loopCount: state.loopCount,
290
+ playbackTime: this.clockTime
291
+ });
292
+ for (const invocation of invocations) {
293
+ if (invocation.event.once) {
294
+ const key = animationClipEventKey(invocation.clipId, invocation.event);
295
+ if (state.onceEvents.has(key))
296
+ continue;
297
+ state.onceEvents.add(key);
298
+ }
299
+ this.dispatcher.emit("event", invocation);
300
+ }
301
+ }
302
+ updateFade(state, dt) {
303
+ if (!state.fade)
304
+ return;
305
+ if (state.fade.duration === 0) {
306
+ state.weight = state.fade.toWeight;
307
+ state.fade = undefined;
308
+ return;
309
+ }
310
+ const elapsed = Math.min(state.fade.duration, state.fade.elapsed + dt);
311
+ const alpha = elapsed / state.fade.duration;
312
+ state.weight = lerp(state.fade.fromWeight, state.fade.toWeight, alpha);
313
+ state.fade = elapsed >= state.fade.duration
314
+ ? undefined
315
+ : {
316
+ ...state.fade,
317
+ elapsed
318
+ };
319
+ }
320
+ removeFinishedFadeOuts() {
321
+ for (const state of this.getInternalStates()) {
322
+ if (state.fade || state.weight > 0 || state.targetWeight > 0)
323
+ continue;
324
+ this.states.delete(state.id);
325
+ state.status = "stopped";
326
+ this.dispatcher.emit("end", cloneState(state));
327
+ }
328
+ }
329
+ finishCrossfadeIfReady() {
330
+ if (!this.pendingCrossfade)
331
+ return;
332
+ const hasActiveFade = this.getInternalStates().some((state) => state.fade);
333
+ if (!hasActiveFade) {
334
+ this.finishCrossfade();
335
+ }
336
+ }
337
+ finishCrossfade() {
338
+ if (!this.pendingCrossfade)
339
+ return;
340
+ this.dispatcher.emit("crossFadeEnd", this.pendingCrossfade);
341
+ this.dispatcher.emit("crossfadeEnd", this.pendingCrossfade);
342
+ this.pendingCrossfade = undefined;
343
+ }
344
+ blendStates(states) {
345
+ const weightedStates = states.filter((state) => state.weight > 0);
346
+ if (weightedStates.length === 0) {
347
+ return emptyPose();
348
+ }
349
+ const accumulators = new Map();
350
+ const morphTargets = {};
351
+ let totalWeight = 0;
352
+ for (const state of weightedStates) {
353
+ const pose = this.sampleSinglePose(state.clip, state.localTime, state);
354
+ const weight = state.weight;
355
+ totalWeight += weight;
356
+ for (const [boneName, transform] of Object.entries(pose.bones)) {
357
+ const accumulator = accumulators.get(boneName) ?? createBoneAccumulator();
358
+ accumulateTransform(accumulator, transform, weight);
359
+ accumulators.set(boneName, accumulator);
360
+ }
361
+ for (const [name, value] of Object.entries(pose.morphTargets ?? {})) {
362
+ morphTargets[name] = (morphTargets[name] ?? 0) + value * weight;
363
+ }
364
+ }
365
+ const bones = {};
366
+ for (const [boneName, accumulator] of accumulators) {
367
+ bones[boneName] = resolveAccumulator(accumulator);
368
+ }
369
+ if (totalWeight > 0) {
370
+ for (const name of Object.keys(morphTargets)) {
371
+ morphTargets[name] /= totalWeight;
372
+ }
373
+ }
374
+ return {
375
+ bones,
376
+ morphTargets
377
+ };
378
+ }
379
+ sampleSinglePose(clip, time, state) {
380
+ if (!clip.sample) {
381
+ return emptyPose();
382
+ }
383
+ const localTime = normalizeStateTime(time, clip.duration, clip.loop ? "loop" : "once");
384
+ const pose = clip.sample({
385
+ clip,
386
+ time: localTime,
387
+ normalizedTime: clip.duration > 0 ? localTime / clip.duration : 0,
388
+ playbackState: state ? cloneState(state) : undefined
389
+ });
390
+ return isAnimationPose(pose) ? pose : emptyPose();
391
+ }
392
+ selectStates(clipId) {
393
+ const states = this.getInternalStates();
394
+ if (!clipId)
395
+ return states;
396
+ return states.filter((state) => state.clipId === clipId);
397
+ }
398
+ getInternalStates() {
399
+ return [...this.states.values()];
400
+ }
401
+ findStateByClip(clipId) {
402
+ return this.getInternalStates().find((state) => state.clipId === clipId);
403
+ }
404
+ primaryState() {
405
+ return this.getInternalStates().sort((a, b) => b.weight - a.weight)[0];
406
+ }
407
+ activeClipId() {
408
+ return this.primaryState()?.clipId;
409
+ }
410
+ emitStateChanged() {
411
+ this.dispatcher.emit("stateChanged", this.snapshot());
412
+ }
413
+ }
414
+ function advanceState(state, dt) {
415
+ const previousPlayhead = state.playhead;
416
+ const delta = dt * state.speed * state.inputDirection;
417
+ state.previousLocalTime = state.localTime;
418
+ state.playhead += delta;
419
+ if (state.duration === 0) {
420
+ state.localTime = 0;
421
+ state.normalizedTime = 0;
422
+ state.direction = state.inputDirection;
423
+ return {
424
+ completed: state.loopMode === "once",
425
+ loopsPassed: 0
426
+ };
427
+ }
428
+ const loopsPassed = state.loopMode === "once"
429
+ ? 0
430
+ : countBoundariesBetween(previousPlayhead, state.playhead, state.duration);
431
+ if (state.loopMode === "once") {
432
+ state.localTime = clamp(state.playhead, 0, state.duration);
433
+ state.direction = state.inputDirection;
434
+ state.normalizedTime = state.localTime / state.duration;
435
+ return {
436
+ completed: state.playhead <= 0 || state.playhead >= state.duration,
437
+ loopsPassed: 0
438
+ };
439
+ }
440
+ if (state.loopMode === "loop") {
441
+ state.localTime = positiveModulo(state.playhead, state.duration);
442
+ state.direction = state.inputDirection;
443
+ }
444
+ else {
445
+ const previousLocalTime = state.localTime;
446
+ state.localTime = pingPongTime(state.playhead, state.duration);
447
+ state.direction = state.localTime >= previousLocalTime ? 1 : -1;
448
+ }
449
+ state.loopCount += loopsPassed;
450
+ state.normalizedTime = state.localTime / state.duration;
451
+ return {
452
+ completed: false,
453
+ loopsPassed
454
+ };
455
+ }
456
+ function normalizeLoopMode(loop, clipLoops) {
457
+ if (loop === true)
458
+ return "loop";
459
+ if (loop === false)
460
+ return "once";
461
+ if (loop)
462
+ return loop;
463
+ return clipLoops ? "loop" : "once";
464
+ }
465
+ function normalizeStateTime(time, duration, loopMode) {
466
+ if (!Number.isFinite(time) || duration <= 0)
467
+ return 0;
468
+ if (loopMode === "once")
469
+ return clamp(time, 0, duration);
470
+ if (loopMode === "pingpong")
471
+ return pingPongTime(time, duration);
472
+ return positiveModulo(time, duration);
473
+ }
474
+ function cloneState(state) {
475
+ return {
476
+ id: state.id,
477
+ clipId: state.clipId,
478
+ status: state.status,
479
+ localTime: state.localTime,
480
+ previousLocalTime: state.previousLocalTime,
481
+ normalizedTime: state.normalizedTime,
482
+ duration: state.duration,
483
+ speed: state.speed,
484
+ weight: state.weight,
485
+ targetWeight: state.targetWeight,
486
+ loopMode: state.loopMode,
487
+ loopCount: state.loopCount,
488
+ direction: state.direction,
489
+ completed: state.completed,
490
+ fade: state.fade
491
+ ? {
492
+ ...state.fade
493
+ }
494
+ : undefined
495
+ };
496
+ }
497
+ function emptyPose() {
498
+ return {
499
+ bones: {}
500
+ };
501
+ }
502
+ function isAnimationPose(value) {
503
+ if (!value || typeof value !== "object")
504
+ return false;
505
+ return "bones" in value && typeof value.bones === "object";
506
+ }
507
+ function createBoneAccumulator() {
508
+ return {
509
+ weight: 0
510
+ };
511
+ }
512
+ function accumulateTransform(accumulator, transform, weight) {
513
+ accumulator.weight += weight;
514
+ if (transform.position) {
515
+ accumulator.position = addWeightedVector(accumulator.position, transform.position, weight);
516
+ }
517
+ if (transform.rotation) {
518
+ accumulator.rotation = addWeightedQuaternion(accumulator.rotation, transform.rotation, weight);
519
+ }
520
+ if (transform.scale) {
521
+ accumulator.scale = addWeightedVector(accumulator.scale, transform.scale, weight);
522
+ }
523
+ }
524
+ function resolveAccumulator(accumulator) {
525
+ const divisor = accumulator.weight > 0 ? accumulator.weight : 1;
526
+ return {
527
+ position: accumulator.position ? divideVector(accumulator.position, divisor) : undefined,
528
+ rotation: accumulator.rotation ? normalizeQuaternion(divideQuaternion(accumulator.rotation, divisor)) : undefined,
529
+ scale: accumulator.scale ? divideVector(accumulator.scale, divisor) : undefined
530
+ };
531
+ }
532
+ function addWeightedVector(current, value, weight) {
533
+ return {
534
+ x: (current?.x ?? 0) + value.x * weight,
535
+ y: (current?.y ?? 0) + value.y * weight,
536
+ z: (current?.z ?? 0) + value.z * weight
537
+ };
538
+ }
539
+ function addWeightedQuaternion(current, value, weight) {
540
+ return {
541
+ x: (current?.x ?? 0) + value.x * weight,
542
+ y: (current?.y ?? 0) + value.y * weight,
543
+ z: (current?.z ?? 0) + value.z * weight,
544
+ w: (current?.w ?? 0) + value.w * weight
545
+ };
546
+ }
547
+ function divideVector(value, divisor) {
548
+ return {
549
+ x: value.x / divisor,
550
+ y: value.y / divisor,
551
+ z: value.z / divisor
552
+ };
553
+ }
554
+ function divideQuaternion(value, divisor) {
555
+ return {
556
+ x: value.x / divisor,
557
+ y: value.y / divisor,
558
+ z: value.z / divisor,
559
+ w: value.w / divisor
560
+ };
561
+ }
562
+ function normalizeQuaternion(value) {
563
+ const length = Math.hypot(value.x, value.y, value.z, value.w);
564
+ if (length === 0) {
565
+ return {
566
+ x: 0,
567
+ y: 0,
568
+ z: 0,
569
+ w: 1
570
+ };
571
+ }
572
+ return {
573
+ x: value.x / length,
574
+ y: value.y / length,
575
+ z: value.z / length,
576
+ w: value.w / length
577
+ };
578
+ }
579
+ function countBoundariesBetween(from, to, interval) {
580
+ if (interval <= 0 || from === to)
581
+ return 0;
582
+ const low = Math.min(from, to);
583
+ const high = Math.max(from, to);
584
+ const first = Math.floor(low / interval) + 1;
585
+ const last = Math.floor(high / interval);
586
+ return Math.max(0, last - first + 1);
587
+ }
588
+ function pingPongTime(time, duration) {
589
+ if (duration <= 0)
590
+ return 0;
591
+ const period = duration * 2;
592
+ const wrapped = positiveModulo(time, period);
593
+ return wrapped <= duration ? wrapped : period - wrapped;
594
+ }
595
+ function sanitizeSpeed(speed) {
596
+ return Number.isFinite(speed) ? speed : 1;
597
+ }
598
+ function sanitizeWeight(weight) {
599
+ if (!Number.isFinite(weight))
600
+ return 1;
601
+ return Math.max(0, weight);
602
+ }
603
+ function sanitizeDuration(duration) {
604
+ if (!Number.isFinite(duration) || duration < 0)
605
+ return 0;
606
+ return duration;
607
+ }
608
+ function lerp(from, to, alpha) {
609
+ return from + (to - from) * clamp(alpha, 0, 1);
610
+ }
611
+ function positiveModulo(value, divisor) {
612
+ if (divisor <= 0)
613
+ return 0;
614
+ return ((value % divisor) + divisor) % divisor;
615
+ }
616
+ function clamp(value, min, max) {
617
+ return Math.min(max, Math.max(min, value));
618
+ }
619
+ //# sourceMappingURL=AnimationController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationController.js","sourceRoot":"","sources":["../../../../packages/animation/src/AnimationController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { AnimationStateMachine as AnimationStateGraph, type AnimationState, type AnimationStateMachineGraphSnapshot, type AnimationStateMachineGraphState, type AnimationStateMachineGraphTransition, type StateTransition } from "./AnimationStateMachine.js";
2
+ //# sourceMappingURL=AnimationStateGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationStateGraph.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/AnimationStateGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,IAAI,mBAAmB,EAC5C,KAAK,cAAc,EACnB,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AnimationStateMachine as AnimationStateGraph } from "./AnimationStateMachine.js";
2
+ //# sourceMappingURL=AnimationStateGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationStateGraph.js","sourceRoot":"","sources":["../../../../packages/animation/src/AnimationStateGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,IAAI,mBAAmB,EAM7C,MAAM,4BAA4B,CAAC"}