@certe/atmos-animation 0.1.0

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 @@
1
+ {"version":3,"file":"animation-mixer.js","sourceRoot":"","sources":["../src/animation-mixer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { createSkeleton, getInverseBindMatrix } from './skeleton.js';
2
+ export type { Joint, Skeleton } from './skeleton.js';
3
+ export { createAnimationClip } from './animation-clip.js';
4
+ export type { KeyframeTrack, AnimationClip, AnimationChannel, Interpolation } from './animation-clip.js';
5
+ export { sampleTrack } from './keyframe-sampler.js';
6
+ export { computeBoneMatrices } from './pose.js';
7
+ export { AnimationMixer } from './animation-mixer.js';
8
+ export type { AnimationLayer } from './animation-mixer.js';
9
+ export { AnimationHandler } from './animation-handler.js';
10
+ export { registerAnimationBuiltins } from './register-builtins.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { createSkeleton, getInverseBindMatrix } from './skeleton.js';
2
+ export { createAnimationClip } from './animation-clip.js';
3
+ export { sampleTrack } from './keyframe-sampler.js';
4
+ export { computeBoneMatrices } from './pose.js';
5
+ export { AnimationMixer } from './animation-mixer.js';
6
+ export { AnimationHandler } from './animation-handler.js';
7
+ export { registerAnimationBuiltins } from './register-builtins.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Keyframe sampling with binary search + interpolation.
3
+ * Hot-path code – zero heap allocations via module-level scratch arrays.
4
+ */
5
+ import type { KeyframeTrack } from './animation-clip.js';
6
+ /**
7
+ * Sample a keyframe track at the given time, writing the result into `out`.
8
+ * For translation/scale: out must be Float32Array(3).
9
+ * For rotation: out must be Float32Array(4).
10
+ *
11
+ * @returns The `out` array.
12
+ */
13
+ export declare function sampleTrack(out: Float32Array, track: KeyframeTrack, time: number): Float32Array;
14
+ //# sourceMappingURL=keyframe-sampler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyframe-sampler.d.ts","sourceRoot":"","sources":["../src/keyframe-sampler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,GACX,YAAY,CA8Cd"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Keyframe sampling with binary search + interpolation.
3
+ * Hot-path code – zero heap allocations via module-level scratch arrays.
4
+ */
5
+ import { Vec3, Quat } from '@certe/atmos-math';
6
+ // Scratch arrays for interpolation (never exposed)
7
+ const _scratchA = new Float32Array(4);
8
+ const _scratchB = new Float32Array(4);
9
+ /**
10
+ * Sample a keyframe track at the given time, writing the result into `out`.
11
+ * For translation/scale: out must be Float32Array(3).
12
+ * For rotation: out must be Float32Array(4).
13
+ *
14
+ * @returns The `out` array.
15
+ */
16
+ export function sampleTrack(out, track, time) {
17
+ const { times, values, interpolation, channel } = track;
18
+ const keyCount = times.length;
19
+ if (keyCount === 0)
20
+ return out;
21
+ // Clamp to range
22
+ if (time <= times[0]) {
23
+ return copyValues(out, values, 0, channel);
24
+ }
25
+ if (time >= times[keyCount - 1]) {
26
+ return copyValues(out, values, keyCount - 1, channel);
27
+ }
28
+ // Binary search for the keyframe pair
29
+ const i = findKeyframe(times, time);
30
+ const t0 = times[i];
31
+ const t1 = times[i + 1];
32
+ if (interpolation === 'STEP') {
33
+ return copyValues(out, values, i, channel);
34
+ }
35
+ // LINEAR interpolation
36
+ const alpha = (time - t0) / (t1 - t0);
37
+ const stride = channel === 'rotation' ? 4 : 3;
38
+ const off0 = i * stride;
39
+ const off1 = (i + 1) * stride;
40
+ if (channel === 'rotation') {
41
+ // Quaternion slerp
42
+ for (let j = 0; j < 4; j++) {
43
+ _scratchA[j] = values[off0 + j];
44
+ _scratchB[j] = values[off1 + j];
45
+ }
46
+ Quat.slerp(out, _scratchA, _scratchB, alpha);
47
+ }
48
+ else {
49
+ // Vec3 lerp for translation / scale
50
+ for (let j = 0; j < 3; j++) {
51
+ _scratchA[j] = values[off0 + j];
52
+ _scratchB[j] = values[off1 + j];
53
+ }
54
+ Vec3.lerp(out, _scratchA.subarray(0, 3), _scratchB.subarray(0, 3), alpha);
55
+ }
56
+ return out;
57
+ }
58
+ /** Copy values for the given keyframe index into `out`. */
59
+ function copyValues(out, values, index, channel) {
60
+ const stride = channel === 'rotation' ? 4 : 3;
61
+ const offset = index * stride;
62
+ for (let i = 0; i < stride; i++) {
63
+ out[i] = values[offset + i];
64
+ }
65
+ return out;
66
+ }
67
+ /**
68
+ * Binary search: find index i such that times[i] <= time < times[i+1].
69
+ * Assumes time is within [times[0], times[last]].
70
+ */
71
+ function findKeyframe(times, time) {
72
+ let lo = 0;
73
+ let hi = times.length - 1;
74
+ while (lo < hi - 1) {
75
+ const mid = (lo + hi) >> 1;
76
+ if (times[mid] <= time) {
77
+ lo = mid;
78
+ }
79
+ else {
80
+ hi = mid;
81
+ }
82
+ }
83
+ return lo;
84
+ }
85
+ //# sourceMappingURL=keyframe-sampler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyframe-sampler.js","sourceRoot":"","sources":["../src/keyframe-sampler.ts"],"names":[],"mappings":"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"}
package/dist/pose.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Bone matrix computation: compose local TRS → walk parent chain → apply inverse bind matrix.
3
+ * Pre-allocated scratch arrays at module level for zero heap allocs on hot path.
4
+ */
5
+ import type { Skeleton } from './skeleton.js';
6
+ /**
7
+ * Compute final bone matrices (joint matrix = parentWorldMatrix * localTRS * inverseBindMatrix).
8
+ *
9
+ * @param out Output buffer: jointCount * 16 floats. Each 16-float block is one mat4.
10
+ * @param skeleton The skeleton hierarchy
11
+ * @param localT Per-joint local translations: jointCount * 3 floats
12
+ * @param localR Per-joint local rotations (quaternions): jointCount * 4 floats
13
+ * @param localS Per-joint local scales: jointCount * 3 floats
14
+ */
15
+ export declare function computeBoneMatrices(out: Float32Array, skeleton: Skeleton, localT: Float32Array, localR: Float32Array, localS: Float32Array): void;
16
+ //# sourceMappingURL=pose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pose.d.ts","sourceRoot":"","sources":["../src/pose.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM9C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,GACnB,IAAI,CAkDN"}
package/dist/pose.js ADDED
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Bone matrix computation: compose local TRS → walk parent chain → apply inverse bind matrix.
3
+ * Pre-allocated scratch arrays at module level for zero heap allocs on hot path.
4
+ */
5
+ import { Mat4 } from '@certe/atmos-math';
6
+ // Module-level scratch matrices (reused every frame)
7
+ const _localMat = Mat4.create();
8
+ const _ibm = Mat4.create();
9
+ /**
10
+ * Compute final bone matrices (joint matrix = parentWorldMatrix * localTRS * inverseBindMatrix).
11
+ *
12
+ * @param out Output buffer: jointCount * 16 floats. Each 16-float block is one mat4.
13
+ * @param skeleton The skeleton hierarchy
14
+ * @param localT Per-joint local translations: jointCount * 3 floats
15
+ * @param localR Per-joint local rotations (quaternions): jointCount * 4 floats
16
+ * @param localS Per-joint local scales: jointCount * 3 floats
17
+ */
18
+ export function computeBoneMatrices(out, skeleton, localT, localR, localS) {
19
+ const { joints, jointCount, inverseBindMatrices } = skeleton;
20
+ // Pass 1: Compute world matrices in-place in `out`.
21
+ // We rely on parent indices always being < current index (topological order).
22
+ for (let i = 0; i < jointCount; i++) {
23
+ const tOff = i * 3;
24
+ const rOff = i * 4;
25
+ const sOff = i * 3;
26
+ const outOff = i * 16;
27
+ // Compose local TRS matrix
28
+ Mat4.fromRotationTranslationScale(_localMat, localR.subarray(rOff, rOff + 4), localT.subarray(tOff, tOff + 3), localS.subarray(sOff, sOff + 3));
29
+ const parentIdx = joints[i].parentIndex;
30
+ if (parentIdx < 0) {
31
+ // Root joint: world = local
32
+ copyMat4ToBuffer(out, outOff, _localMat);
33
+ }
34
+ else {
35
+ // world = parentWorld * local
36
+ // Parent is already computed (topological order guarantee)
37
+ multiplyFromBuffer(out, outOff, out, parentIdx * 16, _localMat);
38
+ }
39
+ }
40
+ // Pass 2: Multiply each world matrix by its inverse bind matrix.
41
+ // finalBoneMatrix = worldMatrix * inverseBindMatrix
42
+ for (let i = 0; i < jointCount; i++) {
43
+ const outOff = i * 16;
44
+ const ibmOff = i * 16;
45
+ // Read IBM
46
+ for (let j = 0; j < 16; j++) {
47
+ _ibm[j] = inverseBindMatrices[ibmOff + j];
48
+ }
49
+ // Read world matrix into _localMat (reuse scratch)
50
+ for (let j = 0; j < 16; j++) {
51
+ _localMat[j] = out[outOff + j];
52
+ }
53
+ // result = worldMatrix * IBM
54
+ // Write directly back into out
55
+ mulMat4InPlace(out, outOff, _localMat, _ibm);
56
+ }
57
+ }
58
+ /** Copy a Mat4 into a Float32Array at the given offset. */
59
+ function copyMat4ToBuffer(buf, offset, m) {
60
+ for (let i = 0; i < 16; i++) {
61
+ buf[offset + i] = m[i];
62
+ }
63
+ }
64
+ /** Multiply two mat4s where `a` is read from a buffer at aOffset, result written to buf[outOffset]. */
65
+ function multiplyFromBuffer(buf, outOffset, aBuf, aOffset, b) {
66
+ // a * b, column-major
67
+ for (let col = 0; col < 4; col++) {
68
+ for (let row = 0; row < 4; row++) {
69
+ let sum = 0;
70
+ for (let k = 0; k < 4; k++) {
71
+ sum += aBuf[aOffset + k * 4 + row] * b[col * 4 + k];
72
+ }
73
+ buf[outOffset + col * 4 + row] = sum;
74
+ }
75
+ }
76
+ }
77
+ /** Multiply a * b and write result into buf at offset. */
78
+ function mulMat4InPlace(buf, offset, a, b) {
79
+ for (let col = 0; col < 4; col++) {
80
+ for (let row = 0; row < 4; row++) {
81
+ let sum = 0;
82
+ for (let k = 0; k < 4; k++) {
83
+ sum += a[k * 4 + row] * b[col * 4 + k];
84
+ }
85
+ buf[offset + col * 4 + row] = sum;
86
+ }
87
+ }
88
+ }
89
+ //# sourceMappingURL=pose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pose.js","sourceRoot":"","sources":["../src/pose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Register animation components (AnimationHandler). */
2
+ export declare function registerAnimationBuiltins(): void;
3
+ //# sourceMappingURL=register-builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-builtins.d.ts","sourceRoot":"","sources":["../src/register-builtins.ts"],"names":[],"mappings":"AAGA,wDAAwD;AACxD,wBAAgB,yBAAyB,IAAI,IAAI,CAahD"}
@@ -0,0 +1,18 @@
1
+ import { registerComponent } from '@certe/atmos-core';
2
+ import { AnimationHandler } from './animation-handler.js';
3
+ /** Register animation components (AnimationHandler). */
4
+ export function registerAnimationBuiltins() {
5
+ registerComponent(AnimationHandler, {
6
+ name: 'AnimationHandler',
7
+ properties: [
8
+ {
9
+ key: 'initialClip', type: 'enum', options: [],
10
+ optionsFrom: (t) => t.clipNames,
11
+ },
12
+ { key: 'speed', type: 'number', min: 0, max: 10, step: 0.1 },
13
+ { key: 'loop', type: 'boolean' },
14
+ { key: 'autoplay', type: 'boolean' },
15
+ ],
16
+ });
17
+ }
18
+ //# sourceMappingURL=register-builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-builtins.js","sourceRoot":"","sources":["../src/register-builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,wDAAwD;AACxD,MAAM,UAAU,yBAAyB;IACvC,iBAAiB,CAAC,gBAAgB,EAAE;QAClC,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE;YACV;gBACE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;gBAC7C,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,SAAS;aACtD;YACD,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;YAC5D,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAChC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;SACrC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { Mat4Type } from '@certe/atmos-math';
2
+ /** A single joint in a skeleton. */
3
+ export interface Joint {
4
+ name: string;
5
+ /** Index into the skeleton's joints array. -1 = root (no parent). */
6
+ parentIndex: number;
7
+ }
8
+ /** Skeleton data: joint hierarchy + inverse bind matrices + rest pose. */
9
+ export interface Skeleton {
10
+ joints: readonly Joint[];
11
+ /** One 4x4 matrix per joint (flattened: jointCount * 16 floats). */
12
+ inverseBindMatrices: Float32Array;
13
+ jointCount: number;
14
+ /** Rest-pose local translations: jointCount * 3 floats. */
15
+ restT: Float32Array;
16
+ /** Rest-pose local rotations (quaternions): jointCount * 4 floats. */
17
+ restR: Float32Array;
18
+ /** Rest-pose local scales: jointCount * 3 floats. */
19
+ restS: Float32Array;
20
+ }
21
+ /**
22
+ * Create a skeleton from joint definitions and inverse bind matrices.
23
+ * @param joints Joint hierarchy (parent indices must reference earlier joints or -1)
24
+ * @param inverseBindMatrices Flat Float32Array of jointCount * 16 floats
25
+ * @param restT Optional rest-pose translations (jointCount * 3). Defaults to zeros.
26
+ * @param restR Optional rest-pose rotations (jointCount * 4). Defaults to identity quaternions.
27
+ * @param restS Optional rest-pose scales (jointCount * 3). Defaults to (1,1,1).
28
+ */
29
+ export declare function createSkeleton(joints: Joint[], inverseBindMatrices: Float32Array, restT?: Float32Array, restR?: Float32Array, restS?: Float32Array): Skeleton;
30
+ /** Read one inverse bind matrix from a skeleton. */
31
+ export declare function getInverseBindMatrix(out: Mat4Type, skeleton: Skeleton, jointIndex: number): Mat4Type;
32
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../src/skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,oCAAoC;AACpC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,oEAAoE;IACpE,mBAAmB,EAAE,YAAY,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,EAAE,YAAY,CAAC;IACpB,sEAAsE;IACtE,KAAK,EAAE,YAAY,CAAC;IACpB,qDAAqD;IACrD,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,KAAK,EAAE,EACf,mBAAmB,EAAE,YAAY,EACjC,KAAK,CAAC,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,YAAY,GACnB,QAAQ,CA4BV;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,GACjB,QAAQ,CAMV"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Create a skeleton from joint definitions and inverse bind matrices.
3
+ * @param joints Joint hierarchy (parent indices must reference earlier joints or -1)
4
+ * @param inverseBindMatrices Flat Float32Array of jointCount * 16 floats
5
+ * @param restT Optional rest-pose translations (jointCount * 3). Defaults to zeros.
6
+ * @param restR Optional rest-pose rotations (jointCount * 4). Defaults to identity quaternions.
7
+ * @param restS Optional rest-pose scales (jointCount * 3). Defaults to (1,1,1).
8
+ */
9
+ export function createSkeleton(joints, inverseBindMatrices, restT, restR, restS) {
10
+ if (inverseBindMatrices.length !== joints.length * 16) {
11
+ throw new Error(`Expected ${joints.length * 16} floats for inverseBindMatrices, got ${inverseBindMatrices.length}`);
12
+ }
13
+ const jc = joints.length;
14
+ const defaultT = restT ?? new Float32Array(jc * 3);
15
+ const defaultR = restR ?? (() => {
16
+ const r = new Float32Array(jc * 4);
17
+ for (let i = 0; i < jc; i++)
18
+ r[i * 4 + 3] = 1; // identity quaternions
19
+ return r;
20
+ })();
21
+ const defaultS = restS ?? (() => {
22
+ const s = new Float32Array(jc * 3);
23
+ for (let i = 0; i < jc; i++) {
24
+ s[i * 3] = 1;
25
+ s[i * 3 + 1] = 1;
26
+ s[i * 3 + 2] = 1;
27
+ }
28
+ return s;
29
+ })();
30
+ return {
31
+ joints,
32
+ inverseBindMatrices,
33
+ jointCount: jc,
34
+ restT: defaultT,
35
+ restR: defaultR,
36
+ restS: defaultS,
37
+ };
38
+ }
39
+ /** Read one inverse bind matrix from a skeleton. */
40
+ export function getInverseBindMatrix(out, skeleton, jointIndex) {
41
+ const offset = jointIndex * 16;
42
+ for (let i = 0; i < 16; i++) {
43
+ out[i] = skeleton.inverseBindMatrices[offset + i];
44
+ }
45
+ return out;
46
+ }
47
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../src/skeleton.ts"],"names":[],"mappings":"AAuBA;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAe,EACf,mBAAiC,EACjC,KAAoB,EACpB,KAAoB,EACpB,KAAoB;IAEpB,IAAI,mBAAmB,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,YAAY,MAAM,CAAC,MAAM,GAAG,EAAE,wCAAwC,mBAAmB,CAAC,MAAM,EAAE,CACnG,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAEzB,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB;QACtE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,MAAM;QACN,mBAAmB;QACnB,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;KAChB,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAClC,GAAa,EACb,QAAkB,EAClB,UAAkB;IAElB,MAAM,MAAM,GAAG,UAAU,GAAG,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@certe/atmos-animation",
3
+ "description": "Skeletal animation system for the Atmos Engine — keyframes, blending, cross-fade",
4
+ "version": "0.1.0",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/certesolutions-cyber/atmos.git",
8
+ "directory": "packages/animation"
9
+ },
10
+ "homepage": "https://github.com/certesolutions-cyber/atmos",
11
+ "license": "GPL-3.0-or-later",
12
+ "keywords": ["animation", "skeletal", "game-engine", "keyframe", "skinning", "atmos"],
13
+ "type": "module",
14
+ "main": "src/index.ts",
15
+ "types": "src/index.ts",
16
+ "publishConfig": {
17
+ "main": "dist/index.js",
18
+ "types": "dist/index.d.ts"
19
+ },
20
+ "files": ["dist", "!dist/__tests__", "package.json", "README.md", "LICENCE"],
21
+ "dependencies": {
22
+ "@certe/atmos-core": "^0.1.0",
23
+ "@certe/atmos-math": "^0.1.0"
24
+ },
25
+ "scripts": {
26
+ "test": "vitest run"
27
+ }
28
+ }
package/src/index.ts ADDED
@@ -0,0 +1,15 @@
1
+ export { createSkeleton, getInverseBindMatrix } from './skeleton.js';
2
+ export type { Joint, Skeleton } from './skeleton.js';
3
+
4
+ export { createAnimationClip } from './animation-clip.js';
5
+ export type { KeyframeTrack, AnimationClip, AnimationChannel, Interpolation } from './animation-clip.js';
6
+
7
+ export { sampleTrack } from './keyframe-sampler.js';
8
+ export { computeBoneMatrices } from './pose.js';
9
+
10
+ export { AnimationMixer } from './animation-mixer.js';
11
+ export type { AnimationLayer } from './animation-mixer.js';
12
+
13
+ export { AnimationHandler } from './animation-handler.js';
14
+
15
+ export { registerAnimationBuiltins } from './register-builtins.js';