@flighthq/animation 0.2.1-next.451.d9a4a4e → 0.2.1-next.530.a223ca9

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.
@@ -0,0 +1,8 @@
1
+ import type { AnimationSampleAccumulator } from '@flighthq/types';
2
+ export declare function accumulateAnimationSample(accumulator: AnimationSampleAccumulator, sample: ArrayLike<number>, weight: number): void;
3
+ export declare function addAnimationSample(out: number[] | Float32Array, base: ArrayLike<number>, delta: ArrayLike<number>, weight: number, quaternion?: boolean): void;
4
+ export declare function blendAnimationSamples(out: number[] | Float32Array, a: ArrayLike<number>, b: ArrayLike<number>, alpha: number, quaternion?: boolean): void;
5
+ export declare function createAnimationSampleAccumulator(components: number, quaternion?: boolean): AnimationSampleAccumulator;
6
+ export declare function finishAnimationSample(out: number[] | Float32Array, accumulator: Readonly<AnimationSampleAccumulator>): boolean;
7
+ export declare function resetAnimationSampleAccumulator(accumulator: AnimationSampleAccumulator): void;
8
+ //# sourceMappingURL=animationBlend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animationBlend.d.ts","sourceRoot":"","sources":["../src/animationBlend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAKlE,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,0BAA0B,EACvC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EACzB,MAAM,EAAE,MAAM,GACb,IAAI,CAaN;AAMD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,UAAQ,GACjB,IAAI,CAyBN;AAID,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EACpB,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,UAAQ,GACjB,IAAI,CAUN;AAID,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,0BAA0B,CAGnH;AAID,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,WAAW,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAChD,OAAO,CAaT;AAGD,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,0BAA0B,GAAG,IAAI,CAG7F"}
@@ -0,0 +1,124 @@
1
+ import { createEntity } from '@flighthq/entity';
2
+ // Adds a non-negative weighted sample into caller-owned accumulation state. Quaternion samples are
3
+ // sign-aligned with the current sum so equivalent q/-q inputs do not cancel. No target or clip state
4
+ // is hidden here; callers decide which samples belong in one accumulator.
5
+ export function accumulateAnimationSample(accumulator, sample, weight) {
6
+ if (!(weight > 0))
7
+ return;
8
+ const components = Math.min(accumulator.components, accumulator.values.length, sample.length);
9
+ let sign = 1;
10
+ if (accumulator.quaternion && components >= 4 && accumulator.weight > 0) {
11
+ const values = accumulator.values;
12
+ const dot = values[0] * sample[0] + values[1] * sample[1] + values[2] * sample[2] + values[3] * sample[3];
13
+ if (dot < 0)
14
+ sign = -1;
15
+ }
16
+ for (let component = 0; component < components; component++) {
17
+ accumulator.values[component] += sample[component] * weight * sign;
18
+ }
19
+ accumulator.weight += weight;
20
+ }
21
+ // Adds an additive animation delta to a base sample. Scalar/vector components use
22
+ // `base + delta * weight`. Quaternion deltas are weighted from identity, multiplied onto base, and
23
+ // normalized; this keeps additive rotation compositional rather than treating quaternion components
24
+ // as a vector. `out` may alias either input.
25
+ export function addAnimationSample(out, base, delta, weight, quaternion = false) {
26
+ if (quaternion && out.length >= 4 && base.length >= 4 && delta.length >= 4) {
27
+ writeWeightedQuaternion(_quaternion, delta, weight);
28
+ const ax = base[0], ay = base[1], az = base[2], aw = base[3];
29
+ const bx = _quaternion[0], by = _quaternion[1], bz = _quaternion[2], bw = _quaternion[3];
30
+ writeNormalizedQuaternion(out, aw * bx + ax * bw + ay * bz - az * by, aw * by - ax * bz + ay * bw + az * bx, aw * bz + ax * by - ay * bx + az * bw, aw * bw - ax * bx - ay * by - az * bz);
31
+ return;
32
+ }
33
+ const components = Math.min(out.length, base.length, delta.length);
34
+ for (let component = 0; component < components; component++) {
35
+ out[component] = base[component] + delta[component] * weight;
36
+ }
37
+ }
38
+ // Blends two samples by `alpha` (clamped to [0,1]). Scalar/vector components lerp; quaternion inputs
39
+ // slerp over the shortest arc and normalize. `out` may alias either input.
40
+ export function blendAnimationSamples(out, a, b, alpha, quaternion = false) {
41
+ const t = alpha < 0 ? 0 : alpha > 1 ? 1 : alpha;
42
+ if (quaternion && out.length >= 4 && a.length >= 4 && b.length >= 4) {
43
+ slerpQuaternion(out, a, b, t);
44
+ return;
45
+ }
46
+ const components = Math.min(out.length, a.length, b.length);
47
+ for (let component = 0; component < components; component++) {
48
+ out[component] = a[component] + (b[component] - a[component]) * t;
49
+ }
50
+ }
51
+ // Allocates reusable target-free accumulation state. The result is an Entity, matching every Flight
52
+ // `create*` product; a bare scalar/vector accumulator pays only its component buffer.
53
+ export function createAnimationSampleAccumulator(components, quaternion = false) {
54
+ const width = Math.max(0, components | 0);
55
+ return createEntity({ components: width, quaternion, values: new Float32Array(width), weight: 0 });
56
+ }
57
+ // Writes a normalized weighted result. Returns false without changing `out` for an empty
58
+ // accumulator. Scalar/vector sums divide by total weight; quaternion sums normalize geometrically.
59
+ export function finishAnimationSample(out, accumulator) {
60
+ if (!(accumulator.weight > 0))
61
+ return false;
62
+ const components = Math.min(out.length, accumulator.components, accumulator.values.length);
63
+ if (accumulator.quaternion && components >= 4) {
64
+ const values = accumulator.values;
65
+ writeNormalizedQuaternion(out, values[0], values[1], values[2], values[3]);
66
+ return true;
67
+ }
68
+ const inverseWeight = 1 / accumulator.weight;
69
+ for (let component = 0; component < components; component++) {
70
+ out[component] = accumulator.values[component] * inverseWeight;
71
+ }
72
+ return true;
73
+ }
74
+ // Clears weighted state in place for reuse without reallocating the component buffer.
75
+ export function resetAnimationSampleAccumulator(accumulator) {
76
+ accumulator.values.fill(0);
77
+ accumulator.weight = 0;
78
+ }
79
+ function slerpQuaternion(out, a, b, alpha) {
80
+ const ax = a[0], ay = a[1], az = a[2], aw = a[3];
81
+ let bx = b[0], by = b[1], bz = b[2], bw = b[3];
82
+ let dot = ax * bx + ay * by + az * bz + aw * bw;
83
+ if (dot < 0) {
84
+ dot = -dot;
85
+ bx = -bx;
86
+ by = -by;
87
+ bz = -bz;
88
+ bw = -bw;
89
+ }
90
+ let scaleA;
91
+ let scaleB;
92
+ if (1 - dot > 1e-6) {
93
+ const angle = Math.acos(Math.min(1, dot));
94
+ const inverseSin = 1 / Math.sin(angle);
95
+ scaleA = Math.sin((1 - alpha) * angle) * inverseSin;
96
+ scaleB = Math.sin(alpha * angle) * inverseSin;
97
+ }
98
+ else {
99
+ scaleA = 1 - alpha;
100
+ scaleB = alpha;
101
+ }
102
+ writeNormalizedQuaternion(out, scaleA * ax + scaleB * bx, scaleA * ay + scaleB * by, scaleA * az + scaleB * bz, scaleA * aw + scaleB * bw);
103
+ }
104
+ function writeNormalizedQuaternion(out, x, y, z, w) {
105
+ const length = Math.hypot(x, y, z, w);
106
+ if (length === 0) {
107
+ out[0] = 0;
108
+ out[1] = 0;
109
+ out[2] = 0;
110
+ out[3] = 1;
111
+ return;
112
+ }
113
+ const inverseLength = 1 / length;
114
+ out[0] = x * inverseLength;
115
+ out[1] = y * inverseLength;
116
+ out[2] = z * inverseLength;
117
+ out[3] = w * inverseLength;
118
+ }
119
+ function writeWeightedQuaternion(out, delta, weight) {
120
+ slerpQuaternion(out, IDENTITY_QUATERNION, delta, weight);
121
+ }
122
+ const IDENTITY_QUATERNION = new Float32Array([0, 0, 0, 1]);
123
+ const _quaternion = new Float32Array(4);
124
+ //# sourceMappingURL=animationBlend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animationBlend.js","sourceRoot":"","sources":["../src/animationBlend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"animationClip.d.ts","sourceRoot":"","sources":["../src/animationClip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMvF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,CAM/E;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,GAAG,gBAAgB,CAElG;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAElG;AAGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,MAAM,CAE9E;AAOD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAC9G,IAAI,CAON"}
1
+ {"version":3,"file":"animationClip.d.ts","sourceRoot":"","sources":["../src/animationClip.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMvF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,CAM/E;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,GAAG,gBAAgB,CAElG;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAElG;AAGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,MAAM,CAE9E;AAOD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAC9G,IAAI,CAON"}
@@ -1,3 +1,4 @@
1
+ import { createEntity } from '@flighthq/entity';
1
2
  import { cloneAnimationTrack, sampleAnimationTrack } from './animationTrack';
2
3
  // Deep-copies a clip: each channel gets a freshly cloned track (buffers deep-copied) while its opaque
3
4
  // `targetRef` is carried by reference (the clip core never interprets it, so it cannot deep-copy it).
@@ -6,15 +7,15 @@ export function cloneAnimationClip(clip) {
6
7
  for (const channel of clip.channels) {
7
8
  channels.push(createAnimationChannel(cloneAnimationTrack(channel.track), channel.targetRef));
8
9
  }
9
- return { channels, duration: clip.duration };
10
+ return createEntity({ channels, duration: clip.duration });
10
11
  }
11
12
  // Pairs a track with an opaque target reference (interpreted only by the domain binding layer).
12
13
  export function createAnimationChannel(track, targetRef) {
13
- return { targetRef, track };
14
+ return createEntity({ targetRef, track });
14
15
  }
15
16
  // Bundles channels into a clip. `duration` defaults to the latest keyframe time across all channels.
16
17
  export function createAnimationClip(channels, duration) {
17
- return { channels, duration: duration ?? computeChannelsDuration(channels) };
18
+ return createEntity({ channels, duration: duration ?? computeChannelsDuration(channels) });
18
19
  }
19
20
  // Returns the clip's total duration in seconds.
20
21
  export function getAnimationClipDuration(clip) {
@@ -1 +1 @@
1
- {"version":3,"file":"animationClip.js","sourceRoot":"","sources":["../src/animationClip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,sGAAsG;AACtG,sGAAsG;AACtG,MAAM,UAAU,kBAAkB,CAAC,IAA6B;IAC9D,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,sBAAsB,CAAC,KAAqB,EAAE,SAAkB;IAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,mBAAmB,CAAC,QAA4B,EAAE,QAAiB;IACjF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,wBAAwB,CAAC,IAA6B;IACpE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,uGAAuG;AACvG,qGAAqG;AACrG,oGAAoG;AACpG,+FAA+F;AAC/F,wGAAwG;AACxG,MAAM,UAAU,mBAAmB,CACjC,GAA4B,EAC5B,IAA6B,EAC7B,IAAY,EACZ,KAA+G;IAE/G,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAA+C;IAC9E,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG;YAAE,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"animationClip.js","sourceRoot":"","sources":["../src/animationClip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,sGAAsG;AACtG,sGAAsG;AACtG,MAAM,UAAU,kBAAkB,CAAC,IAA6B;IAC9D,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,sBAAsB,CAAC,KAAqB,EAAE,SAAkB;IAC9E,OAAO,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,mBAAmB,CAAC,QAA4B,EAAE,QAAiB;IACjF,OAAO,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,wBAAwB,CAAC,IAA6B;IACpE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,uGAAuG;AACvG,qGAAqG;AACrG,oGAAoG;AACpG,+FAA+F;AAC/F,wGAAwG;AACxG,MAAM,UAAU,mBAAmB,CACjC,GAA4B,EAC5B,IAA6B,EAC7B,IAAY,EACZ,KAA+G;IAE/G,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAA+C;IAC9E,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG;YAAE,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"animationPlayer.d.ts","sourceRoot":"","sources":["../src/animationPlayer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAUzF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAsEhF;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAYvF;AAID,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,aAAa,EACnB,IAAI,CAAC,EAAE,QAAQ,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,GACD,eAAe,CAYjB;AAID,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAG1E;AAID,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,MAAM,CAK1F;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAEjE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAG/E;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAGjE"}
1
+ {"version":3,"file":"animationPlayer.d.ts","sourceRoot":"","sources":["../src/animationPlayer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAUzF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAsEhF;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAYvF;AAID,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,aAAa,EACnB,IAAI,CAAC,EAAE,QAAQ,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,GACD,eAAe,CAYjB;AAID,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAG1E;AAID,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,MAAM,CAK1F;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAEjE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAG/E;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAGjE"}
@@ -1,3 +1,4 @@
1
+ import { createEntity } from '@flighthq/entity';
1
2
  import { createSignal, emitSignal } from '@flighthq/signals';
2
3
  import { AnimationLoopModePingPong, AnimationLoopModeRepeat } from '@flighthq/types';
3
4
  // Advances the playhead by `dt` seconds (scaled by `speed`; negative plays backward). When `loop`,
@@ -86,7 +87,7 @@ export function advanceAnimationPlayer(player, dt) {
86
87
  // by reference — players are lightweight drivers over a clip; clone the clip separately for independent
87
88
  // buffers. The clone starts signal-free (onFinished/onLooped null) so listeners are never shared.
88
89
  export function cloneAnimationPlayer(player) {
89
- return {
90
+ return createEntity({
90
91
  clip: player.clip,
91
92
  loop: player.loop,
92
93
  loopMode: player.loopMode,
@@ -96,12 +97,12 @@ export function cloneAnimationPlayer(player) {
96
97
  repeatCount: player.repeatCount,
97
98
  speed: player.speed,
98
99
  time: player.time,
99
- };
100
+ });
100
101
  }
101
102
  // Allocates a player over `clip`. Defaults: looping, 'Repeat' loop mode, infinite repeats, playing,
102
103
  // speed 1, time 0, and signal-free (onFinished/onLooped null until enableAnimationPlayerSignals).
103
104
  export function createAnimationPlayer(clip, opts) {
104
- return {
105
+ return createEntity({
105
106
  clip,
106
107
  loop: opts?.loop ?? true,
107
108
  loopMode: opts?.loopMode ?? AnimationLoopModeRepeat,
@@ -111,7 +112,7 @@ export function createAnimationPlayer(clip, opts) {
111
112
  repeatCount: opts?.repeatCount ?? -1,
112
113
  speed: opts?.speed ?? 1,
113
114
  time: opts?.time ?? 0,
114
- };
115
+ });
115
116
  }
116
117
  // Allocates and attaches the opt-in player signals (onFinished, onLooped) to a player created before
117
118
  // they were needed. Idempotent — calling twice does not create duplicate signals.
@@ -1 +1 @@
1
- {"version":3,"file":"animationPlayer.js","sourceRoot":"","sources":["../src/animationPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animationPlayer.js","sourceRoot":"","sources":["../src/animationPlayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAErF,mGAAmG;AACnG,qGAAqG;AACrG,sGAAsG;AACtG,sGAAsG;AACtG,sGAAsG;AACtG,wGAAwG;AACxG,uCAAuC;AACvC,MAAM,UAAU,sBAAsB,CAAC,MAAuB,EAAE,EAAU;IACxE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IACD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAE3C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAChB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,CAAC,QAAQ,KAAK,yBAAyB,EAAE,CAAC;QAClD,gGAAgG;QAChG,mDAAmD;QACnD,SAAS,CAAC;YACR,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACpB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC1C,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC;gBAC3B,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7B,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACnC,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7B,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,IAAI,IAAI,QAAQ,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,IAAI,IAAI,QAAQ,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,IAAI,MAAM;QAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,wGAAwG;AACxG,wGAAwG;AACxG,kGAAkG;AAClG,MAAM,UAAU,oBAAoB,CAAC,MAAiC;IACpE,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAED,oGAAoG;AACpG,kGAAkG;AAClG,MAAM,UAAU,qBAAqB,CACnC,IAAmB,EACnB,IAOE;IAEF,OAAO,YAAY,CAAC;QAClB,IAAI;QACJ,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI;QACxB,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,uBAAuB;QACnD,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;QAC9B,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC;QACpC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;QACvB,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;KACtB,CAAC,CAAC;AACL,CAAC;AAED,qGAAqG;AACrG,kFAAkF;AAClF,MAAM,UAAU,4BAA4B,CAAC,MAAuB;IAClE,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE,CAAC;IAClE,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;QAAE,MAAM,CAAC,QAAQ,GAAG,YAAY,EAAE,CAAC;AAChE,CAAC;AAED,gGAAgG;AAChG,sCAAsC;AACtC,MAAM,UAAU,gCAAgC,CAAC,MAAiC;IAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,kGAAkG;AAClG,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,MAAuB;IACzD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,CAAC,MAAuB,EAAE,IAAY;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED,+FAA+F;AAC/F,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,MAAuB;IACzD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,iGAAiG;AACjG,kGAAkG;AAClG,uBAAuB;AACvB,SAAS,0BAA0B,CAAC,MAAuB;IACzD,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAC9B,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAiC;IACpE,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI;QAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAiC;IAClE,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;QAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,qGAAqG;AACrG,gFAAgF;AAChF,SAAS,uBAAuB,CAAC,MAAuB,EAAE,IAAY;IACpE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"animationTrack.d.ts","sourceRoot":"","sources":["../src/animationTrack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAMlH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,cAAc,CASnF;AAKD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACnC,GAAG,cAAc,CASjB;AAOD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAmDnH;AAOD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,cAAc,CAqBhB;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,kCAAkC,EAAE,GAAG,IAAI,CAsBnH"}
1
+ {"version":3,"file":"animationTrack.d.ts","sourceRoot":"","sources":["../src/animationTrack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAMlH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,cAAc,CASnF;AAKD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACnC,GAAG,cAAc,CASjB;AAOD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAmDnH;AAOD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,cAAc,CAqBhB;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,kCAAkC,EAAE,GAAG,IAAI,CAsBnH"}
@@ -1,29 +1,30 @@
1
+ import { createEntity } from '@flighthq/entity';
1
2
  import { AnimationInterpolationLinear } from '@flighthq/types';
2
3
  // Deep-copies an AnimationTrack, allocating fresh `times` and `values` buffers (preserving Float32Array
3
4
  // vs number[] backing) so the clone shares no mutable state with the source. `easing` is a pure
4
5
  // function and is carried by reference; all scalar fields are copied.
5
6
  export function cloneAnimationTrack(track) {
6
- return {
7
+ return createEntity({
7
8
  components: track.components,
8
9
  easing: track.easing,
9
10
  interpolation: track.interpolation,
10
11
  quaternion: track.quaternion,
11
12
  times: cloneNumberBuffer(track.times),
12
13
  values: cloneNumberBuffer(track.values),
13
- };
14
+ });
14
15
  }
15
16
  // Allocates an AnimationTrack. `times` must be ascending; `values` is the flat keyframe buffer
16
17
  // (`components` numbers per keyframe for step/linear, 3 * `components` for cubic). Defaults:
17
18
  // linear interpolation, 1 component, non-quaternion, no easing.
18
19
  export function createAnimationTrack(opts) {
19
- return {
20
+ return createEntity({
20
21
  components: opts.components ?? 1,
21
22
  easing: opts.easing ?? null,
22
23
  interpolation: opts.interpolation ?? AnimationInterpolationLinear,
23
24
  quaternion: opts.quaternion ?? false,
24
25
  times: opts.times,
25
26
  values: opts.values,
26
- };
27
+ });
27
28
  }
28
29
  // Samples `track` at time `t`, writing `track.components` numbers into `out`. `t` is clamped to the
29
30
  // track's time range (before the first keyframe yields the first value; after the last yields the
@@ -103,14 +104,14 @@ export function trimAnimationTrack(track, startTime, endTime) {
103
104
  for (let c = 0; c < stride; c++)
104
105
  outValues.push(track.values[off + c]);
105
106
  }
106
- return {
107
+ return createEntity({
107
108
  components,
108
109
  easing: track.easing,
109
110
  interpolation: track.interpolation,
110
111
  quaternion: track.quaternion,
111
112
  times: outTimes,
112
113
  values: outValues,
113
- };
114
+ });
114
115
  }
115
116
  // Structurally validates a track, returning null when it is well-formed or an array of diagnostics
116
117
  // otherwise. Checks that `times` is strictly ascending and that `values.length` equals
@@ -1 +1 @@
1
- {"version":3,"file":"animationTrack.js","sourceRoot":"","sources":["../src/animationTrack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animationTrack.js","sourceRoot":"","sources":["../src/animationTrack.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './animationClip';
2
+ export * from './animationBlend';
2
3
  export * from './animationPlayer';
3
4
  export * from './animationTrack';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './animationClip';
2
+ export * from './animationBlend';
2
3
  export * from './animationPlayer';
3
4
  export * from './animationTrack';
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/animation",
3
- "version": "0.2.1-next.451.d9a4a4e",
3
+ "version": "0.2.1-next.530.a223ca9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -32,8 +32,9 @@
32
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
33
  },
34
34
  "dependencies": {
35
- "@flighthq/signals": "0.2.1-next.451.d9a4a4e",
36
- "@flighthq/types": "0.2.1-next.451.d9a4a4e"
35
+ "@flighthq/entity": "0.2.1-next.530.a223ca9",
36
+ "@flighthq/signals": "0.2.1-next.530.a223ca9",
37
+ "@flighthq/types": "0.2.1-next.530.a223ca9"
37
38
  },
38
39
  "devDependencies": {
39
40
  "typescript": "^5.3.0"
@@ -0,0 +1,102 @@
1
+ import { EntityRuntimeKey } from '@flighthq/types';
2
+
3
+ import {
4
+ addAnimationSample,
5
+ accumulateAnimationSample,
6
+ blendAnimationSamples,
7
+ createAnimationSampleAccumulator,
8
+ finishAnimationSample,
9
+ resetAnimationSampleAccumulator,
10
+ } from './animationBlend';
11
+
12
+ describe('accumulateAnimationSample', () => {
13
+ it('adds positive weighted samples and ignores zero/negative weights', () => {
14
+ const accumulator = createAnimationSampleAccumulator(2);
15
+ accumulateAnimationSample(accumulator, [2, 4], 2);
16
+ accumulateAnimationSample(accumulator, [100, 100], 0);
17
+ expect(Array.from(accumulator.values)).toEqual([4, 8]);
18
+ expect(accumulator.weight).toBe(2);
19
+ });
20
+
21
+ it('aligns equivalent quaternion hemispheres instead of cancelling q and -q', () => {
22
+ const accumulator = createAnimationSampleAccumulator(4, true);
23
+ accumulateAnimationSample(accumulator, [0, 0, Math.SQRT1_2, Math.SQRT1_2], 1);
24
+ accumulateAnimationSample(accumulator, [0, 0, -Math.SQRT1_2, -Math.SQRT1_2], 1);
25
+ const out = [0, 0, 0, 0];
26
+ expect(finishAnimationSample(out, accumulator)).toBe(true);
27
+ expect(out[2]).toBeCloseTo(Math.SQRT1_2);
28
+ expect(out[3]).toBeCloseTo(Math.SQRT1_2);
29
+ });
30
+ });
31
+
32
+ describe('addAnimationSample', () => {
33
+ it('adds weighted scalar/vector deltas and supports output aliasing', () => {
34
+ const out = [1, 2, 3];
35
+ addAnimationSample(out, out, [2, -2, 4], 0.5);
36
+ expect(out).toEqual([2, 1, 5]);
37
+ });
38
+
39
+ it('multiplies a weighted quaternion delta onto the base', () => {
40
+ const halfTurnZ = [0, 0, 1, 0];
41
+ const out = [0, 0, 0, 0];
42
+ addAnimationSample(out, [0, 0, 0, 1], halfTurnZ, 0.5, true);
43
+ expect(out[2]).toBeCloseTo(Math.SQRT1_2);
44
+ expect(out[3]).toBeCloseTo(Math.SQRT1_2);
45
+ });
46
+ });
47
+
48
+ describe('blendAnimationSamples', () => {
49
+ it('linearly blends components and clamps alpha', () => {
50
+ const out = [0, 0];
51
+ blendAnimationSamples(out, [0, 10], [10, 20], 0.25);
52
+ expect(out).toEqual([2.5, 12.5]);
53
+ blendAnimationSamples(out, [0, 10], [10, 20], 2);
54
+ expect(out).toEqual([10, 20]);
55
+ });
56
+
57
+ it('slerps quaternions over the shortest arc', () => {
58
+ const out = [0, 0, 0, 0];
59
+ blendAnimationSamples(out, [0, 0, 0, 1], [0, 0, -1, 0], 0.5, true);
60
+ expect(Math.abs(out[2])).toBeCloseTo(Math.SQRT1_2);
61
+ expect(Math.abs(out[3])).toBeCloseTo(Math.SQRT1_2);
62
+ });
63
+ });
64
+
65
+ describe('createAnimationSampleAccumulator', () => {
66
+ it('creates an Entity with an owned zeroed component buffer', () => {
67
+ const accumulator = createAnimationSampleAccumulator(3);
68
+ expect(EntityRuntimeKey in accumulator).toBe(true);
69
+ expect(accumulator.components).toBe(3);
70
+ expect(Array.from(accumulator.values)).toEqual([0, 0, 0]);
71
+ expect(accumulator.weight).toBe(0);
72
+ });
73
+ });
74
+
75
+ describe('finishAnimationSample', () => {
76
+ it('normalizes scalar/vector sums by total weight', () => {
77
+ const accumulator = createAnimationSampleAccumulator(2);
78
+ accumulateAnimationSample(accumulator, [0, 10], 1);
79
+ accumulateAnimationSample(accumulator, [10, 20], 3);
80
+ const out = [0, 0];
81
+ expect(finishAnimationSample(out, accumulator)).toBe(true);
82
+ expect(out).toEqual([7.5, 17.5]);
83
+ });
84
+
85
+ it('returns false and preserves output for an empty accumulator', () => {
86
+ const out = [7];
87
+ expect(finishAnimationSample(out, createAnimationSampleAccumulator(1))).toBe(false);
88
+ expect(out).toEqual([7]);
89
+ });
90
+ });
91
+
92
+ describe('resetAnimationSampleAccumulator', () => {
93
+ it('clears state while retaining the owned buffer', () => {
94
+ const accumulator = createAnimationSampleAccumulator(2);
95
+ const values = accumulator.values;
96
+ accumulateAnimationSample(accumulator, [2, 4], 1);
97
+ resetAnimationSampleAccumulator(accumulator);
98
+ expect(accumulator.values).toBe(values);
99
+ expect(Array.from(values)).toEqual([0, 0]);
100
+ expect(accumulator.weight).toBe(0);
101
+ });
102
+ });
@@ -22,6 +22,7 @@ describe('cloneAnimationClip', () => {
22
22
  expect(clone.channels[0].track.times).not.toBe(clip.channels[0].track.times);
23
23
  expect(clone.channels[0].targetRef).toBe(target);
24
24
  expect(clone.duration).toBe(clip.duration);
25
+ expect(EntityRuntimeKey in clone).toBe(true);
25
26
  });
26
27
  });
27
28
 
@@ -32,6 +33,7 @@ describe('createAnimationChannel', () => {
32
33
  const channel = createAnimationChannel(t, target);
33
34
  expect(channel.track).toBe(t);
34
35
  expect(channel.targetRef).toBe(target);
36
+ expect(EntityRuntimeKey in channel).toBe(true);
35
37
  });
36
38
  });
37
39
 
@@ -42,6 +44,7 @@ describe('createAnimationClip', () => {
42
44
  createAnimationChannel(track([0, 2.5]), null),
43
45
  ]);
44
46
  expect(clip.duration).toBe(2.5);
47
+ expect(EntityRuntimeKey in clip).toBe(true);
45
48
  });
46
49
 
47
50
  it('honors an explicit duration override', () => {
@@ -84,3 +87,4 @@ describe('sampleAnimationClip', () => {
84
87
  expect(calls).toBe(0);
85
88
  });
86
89
  });
90
+ import { EntityRuntimeKey } from '@flighthq/types';
@@ -1,4 +1,5 @@
1
1
  import { connectSignal } from '@flighthq/signals';
2
+ import { EntityRuntimeKey } from '@flighthq/types';
2
3
 
3
4
  import { createAnimationClip } from './animationClip';
4
5
  import {
@@ -135,6 +136,7 @@ describe('cloneAnimationPlayer', () => {
135
136
  expect(clone.time).toBe(4);
136
137
  expect(clone.onFinished).toBeNull();
137
138
  expect(clone.onLooped).toBeNull();
139
+ expect(EntityRuntimeKey in clone).toBe(true);
138
140
  });
139
141
  });
140
142
 
@@ -145,6 +147,7 @@ describe('createAnimationPlayer', () => {
145
147
  expect(p.playing).toBe(true);
146
148
  expect(p.speed).toBe(1);
147
149
  expect(p.time).toBe(0);
150
+ expect(EntityRuntimeKey in p).toBe(true);
148
151
  });
149
152
 
150
153
  it('defaults to Repeat loop mode, infinite repeats, and no signals', () => {
@@ -1,4 +1,9 @@
1
- import { AnimationInterpolationCubic, AnimationInterpolationLinear, AnimationInterpolationStep } from '@flighthq/types';
1
+ import {
2
+ AnimationInterpolationCubic,
3
+ AnimationInterpolationLinear,
4
+ AnimationInterpolationStep,
5
+ EntityRuntimeKey,
6
+ } from '@flighthq/types';
2
7
 
3
8
  import {
4
9
  cloneAnimationTrack,
@@ -18,6 +23,7 @@ describe('cloneAnimationTrack', () => {
18
23
  expect(Array.from(clone.values)).toEqual([0, 0, 2, 4]);
19
24
  (clone.values as number[])[0] = 99;
20
25
  expect((track.values as number[])[0]).toBe(0);
26
+ expect(EntityRuntimeKey in clone).toBe(true);
21
27
  });
22
28
 
23
29
  it('preserves a Float32Array backing', () => {
@@ -51,6 +57,7 @@ describe('createAnimationTrack', () => {
51
57
  expect(track.components).toBe(1);
52
58
  expect(track.quaternion).toBe(false);
53
59
  expect(track.easing).toBeNull();
60
+ expect(EntityRuntimeKey in track).toBe(true);
54
61
  });
55
62
  });
56
63
 
@@ -170,6 +177,7 @@ describe('trimAnimationTrack', () => {
170
177
  it('keeps in-range keyframes and rebases times to start at 0', () => {
171
178
  const track = createAnimationTrack({ times: [0, 1, 2, 3, 4], values: [0, 10, 20, 30, 40] });
172
179
  const sub = trimAnimationTrack(track, 1, 3);
180
+ expect(EntityRuntimeKey in sub).toBe(true);
173
181
  expect(Array.from(sub.times)).toEqual([0, 1, 2]);
174
182
  expect(Array.from(sub.values)).toEqual([10, 20, 30]);
175
183
  });