@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.
- package/README.md +338 -14
- package/dist/animation/AnimationClipEvents.d.ts +57 -0
- package/dist/animation/AnimationClipEvents.d.ts.map +1 -0
- package/dist/animation/AnimationClipEvents.js +171 -0
- package/dist/animation/AnimationClipEvents.js.map +1 -0
- package/dist/animation/AnimationClipRegistry.d.ts +76 -0
- package/dist/animation/AnimationClipRegistry.d.ts.map +1 -0
- package/dist/animation/AnimationClipRegistry.js +130 -0
- package/dist/animation/AnimationClipRegistry.js.map +1 -0
- package/dist/animation/AnimationController.d.ts +168 -0
- package/dist/animation/AnimationController.d.ts.map +1 -0
- package/dist/animation/AnimationController.js +619 -0
- package/dist/animation/AnimationController.js.map +1 -0
- package/dist/animation/AnimationStateGraph.d.ts +2 -0
- package/dist/animation/AnimationStateGraph.d.ts.map +1 -0
- package/dist/animation/AnimationStateGraph.js +2 -0
- package/dist/animation/AnimationStateGraph.js.map +1 -0
- package/dist/animation/AnimationStateMachine.d.ts +16 -0
- package/dist/animation/AnimationStateMachine.d.ts.map +1 -1
- package/dist/animation/AnimationStateMachine.js +69 -7
- package/dist/animation/AnimationStateMachine.js.map +1 -1
- package/dist/animation/HumanoidRetargeting.d.ts +76 -0
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -0
- package/dist/animation/HumanoidRetargeting.js +331 -0
- package/dist/animation/HumanoidRetargeting.js.map +1 -0
- package/dist/animation/browser-index.d.ts +18 -0
- package/dist/animation/browser-index.d.ts.map +1 -1
- package/dist/animation/browser-index.js +13 -0
- package/dist/animation/browser-index.js.map +1 -1
- package/dist/animation/index.d.ts +17 -1
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/index.js +12 -1
- package/dist/animation/index.js.map +1 -1
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.d.ts.map +1 -1
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.js +3 -5
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +1 -1
- package/dist/assets/GLTFLoader.js +1 -1
- package/dist/aura3d-cli/cli.js +225 -8
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +283 -3
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +1028 -4
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.d.ts +108 -0
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge.js +333 -0
- package/dist/aura3d-cli/pull-bridge.js.map +1 -0
- package/dist/create-aura3d/index.d.ts +1 -1
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +9 -2
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/editor-runtime/ProjectSerializer.d.ts +74 -1
- package/dist/editor-runtime/ProjectSerializer.d.ts.map +1 -1
- package/dist/editor-runtime/ProjectSerializer.js +123 -6
- package/dist/editor-runtime/ProjectSerializer.js.map +1 -1
- package/dist/editor-runtime/TimelineModel.d.ts +18 -0
- package/dist/editor-runtime/TimelineModel.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineModel.js +67 -3
- package/dist/editor-runtime/TimelineModel.js.map +1 -1
- package/dist/editor-runtime/TimelineRuntimeBridge.d.ts +98 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.d.ts.map +1 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.js +186 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +3 -1
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +1 -0
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/AnimationController.d.ts +607 -0
- package/dist/engine/agent-api/AnimationController.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationController.js +2192 -0
- package/dist/engine/agent-api/AnimationController.js.map +1 -0
- package/dist/engine/agent-api/AssetEvidence.d.ts +88 -0
- package/dist/engine/agent-api/AssetEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/AssetEvidence.js +157 -0
- package/dist/engine/agent-api/AssetEvidence.js.map +1 -0
- package/dist/engine/agent-api/AuraAppHandle.d.ts +55 -0
- package/dist/engine/agent-api/AuraAppHandle.d.ts.map +1 -0
- package/dist/engine/agent-api/AuraAppHandle.js +15 -0
- package/dist/engine/agent-api/AuraAppHandle.js.map +1 -0
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts +96 -0
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -0
- package/dist/engine/agent-api/AuraVoiceBridge.js +370 -0
- package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts +95 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.js +342 -0
- package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts +149 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.js +317 -0
- package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts +132 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js +385 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
- package/dist/engine/agent-api/CharacterAssembly.d.ts +126 -0
- package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -0
- package/dist/engine/agent-api/CharacterAssembly.js +280 -0
- package/dist/engine/agent-api/CharacterAssembly.js.map +1 -0
- package/dist/engine/agent-api/DialoguePerformance.d.ts +150 -0
- package/dist/engine/agent-api/DialoguePerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/DialoguePerformance.js +335 -0
- package/dist/engine/agent-api/DialoguePerformance.js.map +1 -0
- package/dist/engine/agent-api/FrameLoop.d.ts +70 -0
- package/dist/engine/agent-api/FrameLoop.d.ts.map +1 -0
- package/dist/engine/agent-api/FrameLoop.js +165 -0
- package/dist/engine/agent-api/FrameLoop.js.map +1 -0
- package/dist/engine/agent-api/GameAppRuntime.d.ts +62 -0
- package/dist/engine/agent-api/GameAppRuntime.d.ts.map +1 -0
- package/dist/engine/agent-api/GameAppRuntime.js +189 -0
- package/dist/engine/agent-api/GameAppRuntime.js.map +1 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts +279 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -0
- package/dist/engine/agent-api/GameAssetValidation.js +719 -0
- package/dist/engine/agent-api/GameAssetValidation.js.map +1 -0
- package/dist/engine/agent-api/GameEvidence.d.ts +148 -0
- package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/GameEvidence.js +269 -0
- package/dist/engine/agent-api/GameEvidence.js.map +1 -0
- package/dist/engine/agent-api/GameRuntime.d.ts +931 -0
- package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -0
- package/dist/engine/agent-api/GameRuntime.js +2229 -0
- package/dist/engine/agent-api/GameRuntime.js.map +1 -0
- package/dist/engine/agent-api/GameSceneBridge.d.ts +54 -0
- package/dist/engine/agent-api/GameSceneBridge.d.ts.map +1 -0
- package/dist/engine/agent-api/GameSceneBridge.js +110 -0
- package/dist/engine/agent-api/GameSceneBridge.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts +278 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.js +238 -0
- package/dist/engine/agent-api/PromptAnimationContract.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +183 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.js +454 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.js.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +100 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js +36 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -0
- package/dist/engine/agent-api/ShotTimeline.d.ts +179 -0
- package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -0
- package/dist/engine/agent-api/ShotTimeline.js +264 -0
- package/dist/engine/agent-api/ShotTimeline.js.map +1 -0
- package/dist/engine/agent-api/VisemeController.d.ts +89 -0
- package/dist/engine/agent-api/VisemeController.d.ts.map +1 -0
- package/dist/engine/agent-api/VisemeController.js +207 -0
- package/dist/engine/agent-api/VisemeController.js.map +1 -0
- package/dist/engine/agent-api/game-kits/fighting.d.ts +123 -0
- package/dist/engine/agent-api/game-kits/fighting.d.ts.map +1 -0
- package/dist/engine/agent-api/game-kits/fighting.js +483 -0
- package/dist/engine/agent-api/game-kits/fighting.js.map +1 -0
- package/dist/engine/agent-api/game-kits/index.d.ts +15 -0
- package/dist/engine/agent-api/game-kits/index.d.ts.map +1 -0
- package/dist/engine/agent-api/game-kits/index.js +6 -0
- package/dist/engine/agent-api/game-kits/index.js.map +1 -0
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -0
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/index.d.ts +495 -1
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +752 -6
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/physics/CollisionVolumes.d.ts +57 -0
- package/dist/physics/CollisionVolumes.d.ts.map +1 -0
- package/dist/physics/CollisionVolumes.js +159 -0
- package/dist/physics/CollisionVolumes.js.map +1 -0
- package/dist/physics/HitboxWorld.d.ts +250 -0
- package/dist/physics/HitboxWorld.d.ts.map +1 -0
- package/dist/physics/HitboxWorld.js +771 -0
- package/dist/physics/HitboxWorld.js.map +1 -0
- package/dist/physics/KinematicBody.d.ts +157 -0
- package/dist/physics/KinematicBody.d.ts.map +1 -0
- package/dist/physics/KinematicBody.js +405 -0
- package/dist/physics/KinematicBody.js.map +1 -0
- package/dist/physics/KinematicWorld.d.ts +58 -0
- package/dist/physics/KinematicWorld.d.ts.map +1 -0
- package/dist/physics/KinematicWorld.js +246 -0
- package/dist/physics/KinematicWorld.js.map +1 -0
- package/dist/physics/index.d.ts +4 -0
- package/dist/physics/index.d.ts.map +1 -1
- package/dist/physics/index.js +4 -0
- package/dist/physics/index.js.map +1 -1
- package/dist/rendering/ForwardPass.js +2 -2
- package/dist/rendering/ShaderLibrary.js +2 -2
- package/dist/rendering/SkinnedLitMaterial.js +3 -3
- package/dist/rendering/SkinnedUnlitMaterial.js +3 -3
- package/dist/scene/Renderable.js +2 -2
- package/dist/scripting/VisualGraph.d.ts +2 -1
- package/dist/scripting/VisualGraph.d.ts.map +1 -1
- package/dist/scripting/VisualGraph.js +118 -1
- package/dist/scripting/VisualGraph.js.map +1 -1
- package/dist/scripting/VisualGraphContext.d.ts +123 -0
- package/dist/scripting/VisualGraphContext.d.ts.map +1 -0
- package/dist/scripting/VisualGraphContext.js +2 -0
- package/dist/scripting/VisualGraphContext.js.map +1 -0
- package/dist/scripting/VisualGraphExecutor.d.ts +6 -1
- package/dist/scripting/VisualGraphExecutor.d.ts.map +1 -1
- package/dist/scripting/VisualGraphExecutor.js +364 -7
- package/dist/scripting/VisualGraphExecutor.js.map +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts.map +1 -1
- package/dist/scripting/VisualNodeCatalog.js +61 -1
- package/dist/scripting/VisualNodeCatalog.js.map +1 -1
- package/dist/scripting/index.d.ts +1 -0
- package/dist/scripting/index.d.ts.map +1 -1
- package/dist/scripting/index.js.map +1 -1
- package/package.json +203 -118
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type AnimationClipEvent } from "./AnimationClipEvents.js";
|
|
2
|
+
export type AnimationClipId = string;
|
|
3
|
+
export type AnimationTrackTarget = "translation" | "rotation" | "scale" | "morph" | "material" | "visibility" | (string & {});
|
|
4
|
+
export interface AnimationKeyframe<TValue = unknown> {
|
|
5
|
+
readonly time: number;
|
|
6
|
+
readonly value: TValue;
|
|
7
|
+
readonly easing?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface AnimationTrack<TValue = unknown> {
|
|
10
|
+
readonly id?: string;
|
|
11
|
+
readonly target: string;
|
|
12
|
+
readonly property?: AnimationTrackTarget;
|
|
13
|
+
readonly keyframes?: readonly AnimationKeyframe<TValue>[];
|
|
14
|
+
readonly metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface AnimationClipSampleContext<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent> {
|
|
17
|
+
readonly clip: RegisteredAnimationClip<TClipId, TEvent>;
|
|
18
|
+
readonly time: number;
|
|
19
|
+
readonly normalizedTime: number;
|
|
20
|
+
readonly playbackState?: unknown;
|
|
21
|
+
}
|
|
22
|
+
export type AnimationClipSampler<TPose = unknown, TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent> = (context: AnimationClipSampleContext<TClipId, TEvent>) => TPose;
|
|
23
|
+
export interface AnimationClipDefinition<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent, TPose = unknown> {
|
|
24
|
+
readonly id: TClipId;
|
|
25
|
+
readonly name?: string;
|
|
26
|
+
readonly duration: number;
|
|
27
|
+
readonly frameRate?: number;
|
|
28
|
+
readonly loop?: boolean;
|
|
29
|
+
readonly tags?: readonly string[];
|
|
30
|
+
readonly tracks?: readonly AnimationTrack[];
|
|
31
|
+
readonly events?: readonly TEvent[];
|
|
32
|
+
readonly sample?: AnimationClipSampler<TPose, TClipId, TEvent>;
|
|
33
|
+
readonly source?: string;
|
|
34
|
+
readonly metadata?: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export interface RegisteredAnimationClip<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent, TPose = unknown> extends AnimationClipDefinition<TClipId, TEvent, TPose> {
|
|
37
|
+
readonly duration: number;
|
|
38
|
+
readonly loop: boolean;
|
|
39
|
+
readonly tags: readonly string[];
|
|
40
|
+
readonly tracks: readonly AnimationTrack[];
|
|
41
|
+
readonly events: readonly TEvent[];
|
|
42
|
+
readonly registryIndex: number;
|
|
43
|
+
}
|
|
44
|
+
export interface AnimationClipRegistryOptions {
|
|
45
|
+
readonly replace?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export type AnimationClipRegistryDiagnosticSeverity = "info" | "warning" | "error";
|
|
48
|
+
export interface AnimationClipRegistryDiagnostic<TClipId extends string = string> {
|
|
49
|
+
readonly severity: AnimationClipRegistryDiagnosticSeverity;
|
|
50
|
+
readonly code: string;
|
|
51
|
+
readonly message: string;
|
|
52
|
+
readonly clipId?: TClipId;
|
|
53
|
+
}
|
|
54
|
+
export interface AnimationClipManifest<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent, TPose = unknown> {
|
|
55
|
+
readonly clips: readonly AnimationClipDefinition<TClipId, TEvent, TPose>[];
|
|
56
|
+
}
|
|
57
|
+
export declare class AnimationClipRegistry<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent, TPose = unknown> {
|
|
58
|
+
private readonly clips;
|
|
59
|
+
private nextRegistryIndex;
|
|
60
|
+
constructor(clips?: readonly AnimationClipDefinition<TClipId, TEvent, TPose>[], options?: AnimationClipRegistryOptions);
|
|
61
|
+
static fromManifest<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent, TPose = unknown>(manifest: AnimationClipManifest<TClipId, TEvent, TPose>, options?: AnimationClipRegistryOptions): AnimationClipRegistry<TClipId, TEvent, TPose>;
|
|
62
|
+
register(definition: AnimationClipDefinition<TClipId, TEvent, TPose>, options?: AnimationClipRegistryOptions): RegisteredAnimationClip<TClipId, TEvent, TPose>;
|
|
63
|
+
registerMany(definitions: readonly AnimationClipDefinition<TClipId, TEvent, TPose>[], options?: AnimationClipRegistryOptions): readonly RegisteredAnimationClip<TClipId, TEvent, TPose>[];
|
|
64
|
+
get(id: TClipId): RegisteredAnimationClip<TClipId, TEvent, TPose> | undefined;
|
|
65
|
+
require(id: TClipId): RegisteredAnimationClip<TClipId, TEvent, TPose>;
|
|
66
|
+
has(id: TClipId): boolean;
|
|
67
|
+
remove(id: TClipId): boolean;
|
|
68
|
+
clear(): void;
|
|
69
|
+
ids(): readonly TClipId[];
|
|
70
|
+
list(): readonly RegisteredAnimationClip<TClipId, TEvent, TPose>[];
|
|
71
|
+
findByTag(tag: string): readonly RegisteredAnimationClip<TClipId, TEvent, TPose>[];
|
|
72
|
+
toManifest(): AnimationClipManifest<TClipId, TEvent, TPose>;
|
|
73
|
+
diagnose(): readonly AnimationClipRegistryDiagnostic<TClipId>[];
|
|
74
|
+
}
|
|
75
|
+
export declare function createAnimationClipRegistry<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent, TPose = unknown>(clips?: readonly AnimationClipDefinition<TClipId, TEvent, TPose>[], options?: AnimationClipRegistryOptions): AnimationClipRegistry<TClipId, TEvent, TPose>;
|
|
76
|
+
//# sourceMappingURL=AnimationClipRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationClipRegistry.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/AnimationClipRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { normalizeClipEvents } from "./AnimationClipEvents.js";
|
|
2
|
+
export class AnimationClipRegistry {
|
|
3
|
+
clips = new Map();
|
|
4
|
+
nextRegistryIndex = 0;
|
|
5
|
+
constructor(clips = [], options = {}) {
|
|
6
|
+
this.registerMany(clips, options);
|
|
7
|
+
}
|
|
8
|
+
static fromManifest(manifest, options = {}) {
|
|
9
|
+
return new AnimationClipRegistry(manifest.clips, options);
|
|
10
|
+
}
|
|
11
|
+
register(definition, options = {}) {
|
|
12
|
+
validateClipDefinition(definition);
|
|
13
|
+
if (!options.replace && this.clips.has(definition.id)) {
|
|
14
|
+
throw new Error(`Animation clip "${definition.id}" is already registered.`);
|
|
15
|
+
}
|
|
16
|
+
const registered = {
|
|
17
|
+
...definition,
|
|
18
|
+
duration: sanitizeDuration(definition.duration),
|
|
19
|
+
loop: definition.loop ?? true,
|
|
20
|
+
tags: [...(definition.tags ?? [])],
|
|
21
|
+
tracks: [...(definition.tracks ?? [])],
|
|
22
|
+
events: normalizeClipEvents(definition.events),
|
|
23
|
+
registryIndex: this.nextRegistryIndex
|
|
24
|
+
};
|
|
25
|
+
this.nextRegistryIndex += 1;
|
|
26
|
+
this.clips.set(registered.id, registered);
|
|
27
|
+
return registered;
|
|
28
|
+
}
|
|
29
|
+
registerMany(definitions, options = {}) {
|
|
30
|
+
return definitions.map((definition) => this.register(definition, options));
|
|
31
|
+
}
|
|
32
|
+
get(id) {
|
|
33
|
+
return this.clips.get(id);
|
|
34
|
+
}
|
|
35
|
+
require(id) {
|
|
36
|
+
const clip = this.get(id);
|
|
37
|
+
if (!clip) {
|
|
38
|
+
throw new Error(`Animation clip "${id}" is not registered.`);
|
|
39
|
+
}
|
|
40
|
+
return clip;
|
|
41
|
+
}
|
|
42
|
+
has(id) {
|
|
43
|
+
return this.clips.has(id);
|
|
44
|
+
}
|
|
45
|
+
remove(id) {
|
|
46
|
+
return this.clips.delete(id);
|
|
47
|
+
}
|
|
48
|
+
clear() {
|
|
49
|
+
this.clips.clear();
|
|
50
|
+
}
|
|
51
|
+
ids() {
|
|
52
|
+
return [...this.clips.keys()];
|
|
53
|
+
}
|
|
54
|
+
list() {
|
|
55
|
+
return [...this.clips.values()].sort((a, b) => a.registryIndex - b.registryIndex);
|
|
56
|
+
}
|
|
57
|
+
findByTag(tag) {
|
|
58
|
+
return this.list().filter((clip) => clip.tags.includes(tag));
|
|
59
|
+
}
|
|
60
|
+
toManifest() {
|
|
61
|
+
return {
|
|
62
|
+
clips: this.list()
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
diagnose() {
|
|
66
|
+
const diagnostics = [];
|
|
67
|
+
if (this.clips.size === 0) {
|
|
68
|
+
diagnostics.push({
|
|
69
|
+
severity: "warning",
|
|
70
|
+
code: "ANIMATION_REGISTRY_EMPTY",
|
|
71
|
+
message: "No animation clips are registered."
|
|
72
|
+
});
|
|
73
|
+
return diagnostics;
|
|
74
|
+
}
|
|
75
|
+
for (const clip of this.list()) {
|
|
76
|
+
if (clip.duration <= 0) {
|
|
77
|
+
diagnostics.push({
|
|
78
|
+
severity: "error",
|
|
79
|
+
code: "ANIMATION_CLIP_DURATION_INVALID",
|
|
80
|
+
message: `Animation clip "${clip.id}" must have a positive duration.`,
|
|
81
|
+
clipId: clip.id
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
if (clip.frameRate !== undefined && (!Number.isFinite(clip.frameRate) || clip.frameRate <= 0)) {
|
|
85
|
+
diagnostics.push({
|
|
86
|
+
severity: "warning",
|
|
87
|
+
code: "ANIMATION_CLIP_FRAME_RATE_INVALID",
|
|
88
|
+
message: `Animation clip "${clip.id}" has an invalid frame rate.`,
|
|
89
|
+
clipId: clip.id
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (clip.tracks.length === 0 && !clip.sample) {
|
|
93
|
+
diagnostics.push({
|
|
94
|
+
severity: "info",
|
|
95
|
+
code: "ANIMATION_CLIP_NO_SAMPLE_SOURCE",
|
|
96
|
+
message: `Animation clip "${clip.id}" has no tracks or sampler. capturePose() will return an empty pose for it.`,
|
|
97
|
+
clipId: clip.id
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
for (const event of clip.events) {
|
|
101
|
+
if (!Number.isFinite(event.time) || event.time < 0 || event.time > clip.duration) {
|
|
102
|
+
diagnostics.push({
|
|
103
|
+
severity: "warning",
|
|
104
|
+
code: "ANIMATION_CLIP_EVENT_TIME_OUT_OF_RANGE",
|
|
105
|
+
message: `Animation event "${event.name}" is outside the duration of clip "${clip.id}".`,
|
|
106
|
+
clipId: clip.id
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return diagnostics;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export function createAnimationClipRegistry(clips = [], options = {}) {
|
|
115
|
+
return new AnimationClipRegistry(clips, options);
|
|
116
|
+
}
|
|
117
|
+
function validateClipDefinition(definition) {
|
|
118
|
+
if (!definition.id) {
|
|
119
|
+
throw new Error("Animation clips must have a stable id.");
|
|
120
|
+
}
|
|
121
|
+
if (!Number.isFinite(definition.duration) || definition.duration < 0) {
|
|
122
|
+
throw new Error(`Animation clip "${definition.id}" has an invalid duration.`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function sanitizeDuration(duration) {
|
|
126
|
+
if (!Number.isFinite(duration) || duration < 0)
|
|
127
|
+
return 0;
|
|
128
|
+
return duration;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=AnimationClipRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationClipRegistry.js","sourceRoot":"","sources":["../../../../packages/animation/src/AnimationClipRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { type AnimationClipEvent, type AnimationClipEventInvocation, type AnimationClipEventUnsubscribe, type AnimationPlaybackDirection } from "./AnimationClipEvents.js";
|
|
2
|
+
import { AnimationClipRegistry, type AnimationClipDefinition, type RegisteredAnimationClip } from "./AnimationClipRegistry.js";
|
|
3
|
+
export type AnimationLoopMode = "once" | "loop" | "pingpong";
|
|
4
|
+
export type AnimationPlaybackStatus = "idle" | "playing" | "paused" | "stopped" | "completed";
|
|
5
|
+
export interface AnimationVector3 {
|
|
6
|
+
readonly x: number;
|
|
7
|
+
readonly y: number;
|
|
8
|
+
readonly z: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AnimationQuaternion {
|
|
11
|
+
readonly x: number;
|
|
12
|
+
readonly y: number;
|
|
13
|
+
readonly z: number;
|
|
14
|
+
readonly w: number;
|
|
15
|
+
}
|
|
16
|
+
export interface AnimationPoseTransform {
|
|
17
|
+
readonly position?: AnimationVector3;
|
|
18
|
+
readonly rotation?: AnimationQuaternion;
|
|
19
|
+
readonly scale?: AnimationVector3;
|
|
20
|
+
}
|
|
21
|
+
export interface AnimationRootMotion {
|
|
22
|
+
readonly translation?: AnimationVector3;
|
|
23
|
+
readonly rotation?: AnimationQuaternion;
|
|
24
|
+
}
|
|
25
|
+
export interface AnimationPose {
|
|
26
|
+
readonly bones: Record<string, AnimationPoseTransform>;
|
|
27
|
+
readonly morphTargets?: Record<string, number>;
|
|
28
|
+
readonly rootMotion?: AnimationRootMotion;
|
|
29
|
+
readonly metadata?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
export interface AnimationClipPlaybackState<TClipId extends string = string> {
|
|
32
|
+
readonly id: string;
|
|
33
|
+
readonly clipId: TClipId;
|
|
34
|
+
readonly status: AnimationPlaybackStatus;
|
|
35
|
+
readonly localTime: number;
|
|
36
|
+
readonly previousLocalTime: number;
|
|
37
|
+
readonly normalizedTime: number;
|
|
38
|
+
readonly duration: number;
|
|
39
|
+
readonly speed: number;
|
|
40
|
+
readonly weight: number;
|
|
41
|
+
readonly targetWeight: number;
|
|
42
|
+
readonly loopMode: AnimationLoopMode;
|
|
43
|
+
readonly loopCount: number;
|
|
44
|
+
readonly direction: AnimationPlaybackDirection;
|
|
45
|
+
readonly completed: boolean;
|
|
46
|
+
readonly fade?: AnimationFadeState;
|
|
47
|
+
}
|
|
48
|
+
export interface AnimationFadeState {
|
|
49
|
+
readonly kind: "in" | "out";
|
|
50
|
+
readonly elapsed: number;
|
|
51
|
+
readonly duration: number;
|
|
52
|
+
readonly fromWeight: number;
|
|
53
|
+
readonly toWeight: number;
|
|
54
|
+
}
|
|
55
|
+
export interface AnimationPlayOptions<TClipId extends string = string> {
|
|
56
|
+
readonly id?: string;
|
|
57
|
+
readonly restart?: boolean;
|
|
58
|
+
readonly exclusive?: boolean;
|
|
59
|
+
readonly loop?: AnimationLoopMode | boolean;
|
|
60
|
+
readonly speed?: number;
|
|
61
|
+
readonly weight?: number;
|
|
62
|
+
readonly startTime?: number;
|
|
63
|
+
readonly fadeIn?: number;
|
|
64
|
+
readonly paused?: boolean;
|
|
65
|
+
readonly direction?: AnimationPlaybackDirection;
|
|
66
|
+
readonly metadata?: Record<string, unknown>;
|
|
67
|
+
readonly fallbackClipId?: TClipId;
|
|
68
|
+
}
|
|
69
|
+
export interface AnimationStopOptions {
|
|
70
|
+
readonly fadeOut?: number;
|
|
71
|
+
}
|
|
72
|
+
export interface AnimationCrossfadeOptions<TClipId extends string = string> extends AnimationPlayOptions<TClipId> {
|
|
73
|
+
readonly fromClipId?: TClipId;
|
|
74
|
+
}
|
|
75
|
+
export type AnimationCrossFadeOptions<TClipId extends string = string> = AnimationCrossfadeOptions<TClipId>;
|
|
76
|
+
export interface AnimationScrubOptions<TClipId extends string = string> {
|
|
77
|
+
readonly clipId?: TClipId;
|
|
78
|
+
readonly emitEvents?: boolean;
|
|
79
|
+
readonly play?: boolean;
|
|
80
|
+
readonly createIfMissing?: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface AnimationPoseCaptureOptions<TClipId extends string = string> {
|
|
83
|
+
readonly clipId?: TClipId;
|
|
84
|
+
readonly time?: number;
|
|
85
|
+
readonly emitEvent?: boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface AnimationPoseSnapshot<TClipId extends string = string> {
|
|
88
|
+
readonly time: number;
|
|
89
|
+
readonly pose: AnimationPose;
|
|
90
|
+
readonly clips: readonly AnimationClipPlaybackState<TClipId>[];
|
|
91
|
+
}
|
|
92
|
+
export interface AnimationControllerSnapshot<TClipId extends string = string> {
|
|
93
|
+
readonly time: number;
|
|
94
|
+
readonly activeClipId?: TClipId;
|
|
95
|
+
readonly clips: readonly AnimationClipPlaybackState<TClipId>[];
|
|
96
|
+
}
|
|
97
|
+
export interface AnimationClipLoopEvent<TClipId extends string = string> {
|
|
98
|
+
readonly clipId: TClipId;
|
|
99
|
+
readonly playbackId: string;
|
|
100
|
+
readonly loopCount: number;
|
|
101
|
+
readonly loopsPassed: number;
|
|
102
|
+
}
|
|
103
|
+
export interface AnimationCrossfadeEvent<TClipId extends string = string> {
|
|
104
|
+
readonly fromClipIds: readonly TClipId[];
|
|
105
|
+
readonly toClipId: TClipId;
|
|
106
|
+
readonly duration: number;
|
|
107
|
+
}
|
|
108
|
+
export type AnimationCrossFadeEvent<TClipId extends string = string> = AnimationCrossfadeEvent<TClipId>;
|
|
109
|
+
export interface AnimationScrubEvent<TClipId extends string = string> {
|
|
110
|
+
readonly clipId: TClipId;
|
|
111
|
+
readonly playbackId: string;
|
|
112
|
+
readonly fromTime: number;
|
|
113
|
+
readonly toTime: number;
|
|
114
|
+
}
|
|
115
|
+
export interface AnimationControllerEventMap<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent> {
|
|
116
|
+
readonly start: AnimationClipPlaybackState<TClipId>;
|
|
117
|
+
readonly end: AnimationClipPlaybackState<TClipId>;
|
|
118
|
+
readonly loop: AnimationClipLoopEvent<TClipId>;
|
|
119
|
+
readonly event: AnimationClipEventInvocation<TEvent, TClipId>;
|
|
120
|
+
readonly crossFadeStart: AnimationCrossFadeEvent<TClipId>;
|
|
121
|
+
readonly crossFadeEnd: AnimationCrossFadeEvent<TClipId>;
|
|
122
|
+
readonly crossfadeStart: AnimationCrossfadeEvent<TClipId>;
|
|
123
|
+
readonly crossfadeEnd: AnimationCrossfadeEvent<TClipId>;
|
|
124
|
+
readonly scrub: AnimationScrubEvent<TClipId>;
|
|
125
|
+
readonly poseCaptured: AnimationPoseSnapshot<TClipId>;
|
|
126
|
+
readonly stateChanged: AnimationControllerSnapshot<TClipId>;
|
|
127
|
+
}
|
|
128
|
+
export declare class AnimationController<TClipId extends string = string, TEvent extends AnimationClipEvent = AnimationClipEvent> {
|
|
129
|
+
readonly registry: AnimationClipRegistry<TClipId, TEvent, AnimationPose>;
|
|
130
|
+
private readonly dispatcher;
|
|
131
|
+
private readonly states;
|
|
132
|
+
private clockTime;
|
|
133
|
+
private nextPlaybackIndex;
|
|
134
|
+
private pendingCrossfade?;
|
|
135
|
+
constructor(registry?: AnimationClipRegistry<TClipId, TEvent, AnimationPose>);
|
|
136
|
+
on<K extends Extract<keyof AnimationControllerEventMap<TClipId, TEvent>, string>>(type: K, listener: (payload: AnimationControllerEventMap<TClipId, TEvent>[K]) => void): AnimationClipEventUnsubscribe;
|
|
137
|
+
once<K extends Extract<keyof AnimationControllerEventMap<TClipId, TEvent>, string>>(type: K, listener: (payload: AnimationControllerEventMap<TClipId, TEvent>[K]) => void): AnimationClipEventUnsubscribe;
|
|
138
|
+
registerClip(definition: AnimationClipDefinition<TClipId, TEvent, AnimationPose>): RegisteredAnimationClip<TClipId, TEvent, AnimationPose>;
|
|
139
|
+
play(clipId: TClipId, options?: AnimationPlayOptions<TClipId>): AnimationClipPlaybackState<TClipId>;
|
|
140
|
+
pause(clipId?: TClipId): void;
|
|
141
|
+
resume(clipId?: TClipId): void;
|
|
142
|
+
restart(clipId?: TClipId, options?: AnimationPlayOptions<TClipId>): AnimationClipPlaybackState<TClipId>;
|
|
143
|
+
stop(clipId?: TClipId, options?: AnimationStopOptions): void;
|
|
144
|
+
crossFade(toClipId: TClipId, duration: number, options?: AnimationCrossFadeOptions<TClipId>): AnimationClipPlaybackState<TClipId>;
|
|
145
|
+
crossfade(toClipId: TClipId, duration: number, options?: AnimationCrossfadeOptions<TClipId>): AnimationClipPlaybackState<TClipId>;
|
|
146
|
+
update(dt: number): AnimationControllerSnapshot<TClipId>;
|
|
147
|
+
scrub(time: number, options?: AnimationScrubOptions<TClipId>): AnimationPoseSnapshot<TClipId>;
|
|
148
|
+
scrub(clipId: TClipId, time: number, options?: AnimationScrubOptions<TClipId>): AnimationPoseSnapshot<TClipId>;
|
|
149
|
+
capturePose(options?: AnimationPoseCaptureOptions<TClipId>): AnimationPoseSnapshot<TClipId>;
|
|
150
|
+
state(clipId?: TClipId): AnimationClipPlaybackState<TClipId> | undefined;
|
|
151
|
+
snapshot(): AnimationControllerSnapshot<TClipId>;
|
|
152
|
+
dispose(): void;
|
|
153
|
+
private createPlaybackState;
|
|
154
|
+
private emitSampledEvents;
|
|
155
|
+
private updateFade;
|
|
156
|
+
private removeFinishedFadeOuts;
|
|
157
|
+
private finishCrossfadeIfReady;
|
|
158
|
+
private finishCrossfade;
|
|
159
|
+
private blendStates;
|
|
160
|
+
private sampleSinglePose;
|
|
161
|
+
private selectStates;
|
|
162
|
+
private getInternalStates;
|
|
163
|
+
private findStateByClip;
|
|
164
|
+
private primaryState;
|
|
165
|
+
private activeClipId;
|
|
166
|
+
private emitStateChanged;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=AnimationController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationController.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/AnimationController.ts"],"names":[],"mappings":"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"}
|