@aura3d/animation 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 +19 -0
- package/dist/AnimationAction.d.ts +40 -0
- package/dist/AnimationAction.d.ts.map +1 -0
- package/dist/AnimationAction.js +143 -0
- package/dist/AnimationAction.js.map +1 -0
- package/dist/AnimationClip.d.ts +24 -0
- package/dist/AnimationClip.d.ts.map +1 -0
- package/dist/AnimationClip.js +45 -0
- package/dist/AnimationClip.js.map +1 -0
- package/dist/AnimationClipEvents.d.ts +57 -0
- package/dist/AnimationClipEvents.d.ts.map +1 -0
- package/dist/AnimationClipEvents.js +171 -0
- package/dist/AnimationClipEvents.js.map +1 -0
- package/dist/AnimationClipRegistry.d.ts +76 -0
- package/dist/AnimationClipRegistry.d.ts.map +1 -0
- package/dist/AnimationClipRegistry.js +130 -0
- package/dist/AnimationClipRegistry.js.map +1 -0
- package/dist/AnimationController.d.ts +168 -0
- package/dist/AnimationController.d.ts.map +1 -0
- package/dist/AnimationController.js +619 -0
- package/dist/AnimationController.js.map +1 -0
- package/dist/AnimationEvents.d.ts +10 -0
- package/dist/AnimationEvents.d.ts.map +1 -0
- package/dist/AnimationEvents.js +26 -0
- package/dist/AnimationEvents.js.map +1 -0
- package/dist/AnimationLayer.d.ts +27 -0
- package/dist/AnimationLayer.d.ts.map +1 -0
- package/dist/AnimationLayer.js +53 -0
- package/dist/AnimationLayer.js.map +1 -0
- package/dist/AnimationMixer.d.ts +54 -0
- package/dist/AnimationMixer.d.ts.map +1 -0
- package/dist/AnimationMixer.js +319 -0
- package/dist/AnimationMixer.js.map +1 -0
- package/dist/AnimationStateGraph.d.ts +2 -0
- package/dist/AnimationStateGraph.d.ts.map +1 -0
- package/dist/AnimationStateGraph.js +2 -0
- package/dist/AnimationStateGraph.js.map +1 -0
- package/dist/AnimationStateMachine.d.ts +59 -0
- package/dist/AnimationStateMachine.d.ts.map +1 -0
- package/dist/AnimationStateMachine.js +154 -0
- package/dist/AnimationStateMachine.js.map +1 -0
- package/dist/AnimationTrack.d.ts +23 -0
- package/dist/AnimationTrack.d.ts.map +1 -0
- package/dist/AnimationTrack.js +124 -0
- package/dist/AnimationTrack.js.map +1 -0
- package/dist/BlendTree.d.ts +23 -0
- package/dist/BlendTree.d.ts.map +1 -0
- package/dist/BlendTree.js +68 -0
- package/dist/BlendTree.js.map +1 -0
- package/dist/Bone.d.ts +20 -0
- package/dist/Bone.d.ts.map +1 -0
- package/dist/Bone.js +24 -0
- package/dist/Bone.js.map +1 -0
- package/dist/CrowdAnimation.d.ts +13 -0
- package/dist/CrowdAnimation.d.ts.map +1 -0
- package/dist/CrowdAnimation.js +14 -0
- package/dist/CrowdAnimation.js.map +1 -0
- package/dist/ECSAnimationBridge.d.ts +9 -0
- package/dist/ECSAnimationBridge.d.ts.map +1 -0
- package/dist/ECSAnimationBridge.js +24 -0
- package/dist/ECSAnimationBridge.js.map +1 -0
- package/dist/HumanoidRetargeting.d.ts +76 -0
- package/dist/HumanoidRetargeting.d.ts.map +1 -0
- package/dist/HumanoidRetargeting.js +331 -0
- package/dist/HumanoidRetargeting.js.map +1 -0
- package/dist/IK.d.ts +24 -0
- package/dist/IK.d.ts.map +1 -0
- package/dist/IK.js +76 -0
- package/dist/IK.js.map +1 -0
- package/dist/Keyframe.d.ts +50 -0
- package/dist/Keyframe.d.ts.map +1 -0
- package/dist/Keyframe.js +118 -0
- package/dist/Keyframe.js.map +1 -0
- package/dist/LocomotionController.d.ts +47 -0
- package/dist/LocomotionController.d.ts.map +1 -0
- package/dist/LocomotionController.js +106 -0
- package/dist/LocomotionController.js.map +1 -0
- package/dist/MotionMatchingFixtures.d.ts +58 -0
- package/dist/MotionMatchingFixtures.d.ts.map +1 -0
- package/dist/MotionMatchingFixtures.js +175 -0
- package/dist/MotionMatchingFixtures.js.map +1 -0
- package/dist/MotionQuality.d.ts +36 -0
- package/dist/MotionQuality.d.ts.map +1 -0
- package/dist/MotionQuality.js +117 -0
- package/dist/MotionQuality.js.map +1 -0
- package/dist/Retargeting.d.ts +12 -0
- package/dist/Retargeting.d.ts.map +1 -0
- package/dist/Retargeting.js +19 -0
- package/dist/Retargeting.js.map +1 -0
- package/dist/RootMotion.d.ts +21 -0
- package/dist/RootMotion.d.ts.map +1 -0
- package/dist/RootMotion.js +84 -0
- package/dist/RootMotion.js.map +1 -0
- package/dist/SceneAnimationBridge.d.ts +18 -0
- package/dist/SceneAnimationBridge.d.ts.map +1 -0
- package/dist/SceneAnimationBridge.js +69 -0
- package/dist/SceneAnimationBridge.js.map +1 -0
- package/dist/SecondaryAnimationFixtures.d.ts +55 -0
- package/dist/SecondaryAnimationFixtures.d.ts.map +1 -0
- package/dist/SecondaryAnimationFixtures.js +147 -0
- package/dist/SecondaryAnimationFixtures.js.map +1 -0
- package/dist/Skeleton.d.ts +9 -0
- package/dist/Skeleton.d.ts.map +1 -0
- package/dist/Skeleton.js +31 -0
- package/dist/Skeleton.js.map +1 -0
- package/dist/Skinning.d.ts +7 -0
- package/dist/Skinning.d.ts.map +1 -0
- package/dist/Skinning.js +12 -0
- package/dist/Skinning.js.map +1 -0
- package/dist/browser-index.d.ts +39 -0
- package/dist/browser-index.d.ts.map +1 -0
- package/dist/browser-index.js +34 -0
- package/dist/browser-index.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/threejs-compatibility/AnimationAction.d.ts +16 -0
- package/dist/threejs-compatibility/AnimationAction.d.ts.map +1 -0
- package/dist/threejs-compatibility/AnimationAction.js +25 -0
- package/dist/threejs-compatibility/AnimationAction.js.map +1 -0
- package/dist/threejs-compatibility/AnimationClip.d.ts +14 -0
- package/dist/threejs-compatibility/AnimationClip.d.ts.map +1 -0
- package/dist/threejs-compatibility/AnimationClip.js +11 -0
- package/dist/threejs-compatibility/AnimationClip.js.map +1 -0
- package/dist/threejs-compatibility/AnimationDiagnostics.d.ts +44 -0
- package/dist/threejs-compatibility/AnimationDiagnostics.d.ts.map +1 -0
- package/dist/threejs-compatibility/AnimationDiagnostics.js +29 -0
- package/dist/threejs-compatibility/AnimationDiagnostics.js.map +1 -0
- package/dist/threejs-compatibility/AnimationMixer.d.ts +9 -0
- package/dist/threejs-compatibility/AnimationMixer.d.ts.map +1 -0
- package/dist/threejs-compatibility/AnimationMixer.js +24 -0
- package/dist/threejs-compatibility/AnimationMixer.js.map +1 -0
- package/dist/threejs-compatibility/MorphTargetMixer.d.ts +10 -0
- package/dist/threejs-compatibility/MorphTargetMixer.d.ts.map +1 -0
- package/dist/threejs-compatibility/MorphTargetMixer.js +10 -0
- package/dist/threejs-compatibility/MorphTargetMixer.js.map +1 -0
- package/dist/threejs-compatibility/Skeleton.d.ts +10 -0
- package/dist/threejs-compatibility/Skeleton.d.ts.map +1 -0
- package/dist/threejs-compatibility/Skeleton.js +8 -0
- package/dist/threejs-compatibility/Skeleton.js.map +1 -0
- package/dist/threejs-compatibility/SkinnedMesh.d.ts +11 -0
- package/dist/threejs-compatibility/SkinnedMesh.d.ts.map +1 -0
- package/dist/threejs-compatibility/SkinnedMesh.js +16 -0
- package/dist/threejs-compatibility/SkinnedMesh.js.map +1 -0
- package/dist/threejs-compatibility/index.d.ts +12 -0
- package/dist/threejs-compatibility/index.d.ts.map +1 -0
- package/dist/threejs-compatibility/index.js +8 -0
- package/dist/threejs-compatibility/index.js.map +1 -0
- package/package.json +17 -0
- package/src/AnimationAction.ts +166 -0
- package/src/AnimationClip.ts +63 -0
- package/src/AnimationClipEvents.ts +320 -0
- package/src/AnimationClipRegistry.ts +280 -0
- package/src/AnimationController.ts +967 -0
- package/src/AnimationEvents.ts +34 -0
- package/src/AnimationLayer.ts +73 -0
- package/src/AnimationMixer.ts +366 -0
- package/src/AnimationStateGraph.ts +8 -0
- package/src/AnimationStateMachine.ts +217 -0
- package/src/AnimationTrack.ts +176 -0
- package/src/BlendTree.ts +89 -0
- package/src/Bone.ts +35 -0
- package/src/CrowdAnimation.ts +25 -0
- package/src/ECSAnimationBridge.ts +30 -0
- package/src/HumanoidRetargeting.ts +476 -0
- package/src/IK.ts +107 -0
- package/src/Keyframe.ts +159 -0
- package/src/LocomotionController.ts +149 -0
- package/src/MotionMatchingFixtures.ts +254 -0
- package/src/MotionQuality.ts +156 -0
- package/src/Retargeting.ts +29 -0
- package/src/RootMotion.ts +124 -0
- package/src/SceneAnimationBridge.ts +80 -0
- package/src/SecondaryAnimationFixtures.ts +212 -0
- package/src/Skeleton.ts +34 -0
- package/src/Skinning.ts +18 -0
- package/src/browser-index.ts +55 -0
- package/src/index.ts +56 -0
- package/src/threejs-compatibility/AnimationAction.ts +27 -0
- package/src/threejs-compatibility/AnimationClip.ts +16 -0
- package/src/threejs-compatibility/AnimationDiagnostics.ts +42 -0
- package/src/threejs-compatibility/AnimationMixer.ts +24 -0
- package/src/threejs-compatibility/MorphTargetMixer.ts +16 -0
- package/src/threejs-compatibility/Skeleton.ts +9 -0
- package/src/threejs-compatibility/SkinnedMesh.ts +12 -0
- package/src/threejs-compatibility/index.ts +11 -0
|
@@ -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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"}
|