@flighthq/skeleton2d 0.5.1-next.815.cc08b93 → 0.5.1-next.903.f434bc2
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 +2 -2
- package/dist/contract.d.ts +3 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +3 -0
- package/dist/contract.js.map +1 -1
- package/dist/pathConstraint2D.d.ts.map +1 -1
- package/dist/pathConstraint2D.js +8 -2
- package/dist/pathConstraint2D.js.map +1 -1
- package/dist/skeleton2d.d.ts +2 -1
- package/dist/skeleton2d.d.ts.map +1 -1
- package/dist/skeleton2d.js +15 -16
- package/dist/skeleton2d.js.map +1 -1
- package/dist/skeleton2dAnimationTarget.d.ts +3 -1
- package/dist/skeleton2dAnimationTarget.d.ts.map +1 -1
- package/dist/skeleton2dAnimationTarget.js +22 -7
- package/dist/skeleton2dAnimationTarget.js.map +1 -1
- package/dist/skeleton2dDrawOrderTarget.d.ts +10 -9
- package/dist/skeleton2dDrawOrderTarget.d.ts.map +1 -1
- package/dist/skeleton2dDrawOrderTarget.js +17 -10
- package/dist/skeleton2dDrawOrderTarget.js.map +1 -1
- package/dist/skin2D.d.ts +2 -1
- package/dist/skin2D.d.ts.map +1 -1
- package/dist/skin2D.js +9 -3
- package/dist/skin2D.js.map +1 -1
- package/package.json +10 -10
- package/src/boundingBoxAttachment2D.test.ts +7 -1
- package/src/clippingAttachment2D.test.ts +8 -7
- package/src/deformAnimationTarget2D.test.ts +9 -8
- package/src/deformMeshAttachment2D.test.ts +29 -24
- package/src/deformPathAttachment2D.test.ts +26 -17
- package/src/ikConstraint2D.test.ts +11 -10
- package/src/pathConstraint2D.test.ts +63 -49
- package/src/pointAttachment2D.test.ts +7 -1
- package/src/regionAttachment2D.test.ts +12 -11
- package/src/skeleton2d.test.ts +12 -1
- package/src/skeleton2dConstraint.test.ts +12 -2
- package/src/slotDeform2D.test.ts +13 -12
- package/src/transformConstraint2D.test.ts +20 -19
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/skeleton2d`. The `@f
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/skeleton2d@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/skeleton2d@0.5.1-next.903.f434bc2](https://github.com/flighthq/flight/tree/f434bc233778d75aeea61995df3a8cfaec459a85/packages/skeleton2d)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/f434bc233778d75aeea61995df3a8cfaec459a85/LICENSE.md)
|
package/dist/contract.d.ts
CHANGED
|
@@ -20,4 +20,7 @@ export * from './slotDeform2D';
|
|
|
20
20
|
export * from './deformAnimationTarget2D';
|
|
21
21
|
export * from './skeleton2dDrawOrderTarget';
|
|
22
22
|
export * from './skin2D';
|
|
23
|
+
export { initializeSkin2D } from './skin2D';
|
|
24
|
+
export { initializeSkeleton2DBoneAnimationTarget, initializeSkeleton2DSlotAnimationTarget, } from './skeleton2dAnimationTarget';
|
|
25
|
+
export { initializeSkeleton2DDrawOrderAnimationTarget } from './skeleton2dDrawOrderTarget';
|
|
23
26
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,uCAAuC,EACvC,uCAAuC,GACxC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,4CAA4C,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -20,4 +20,7 @@ export * from './slotDeform2D';
|
|
|
20
20
|
export * from './deformAnimationTarget2D';
|
|
21
21
|
export * from './skeleton2dDrawOrderTarget';
|
|
22
22
|
export * from './skin2D';
|
|
23
|
+
export { initializeSkin2D } from './skin2D';
|
|
24
|
+
export { initializeSkeleton2DBoneAnimationTarget, initializeSkeleton2DSlotAnimationTarget, } from './skeleton2dAnimationTarget';
|
|
25
|
+
export { initializeSkeleton2DDrawOrderAnimationTarget } from './skeleton2dDrawOrderTarget';
|
|
23
26
|
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,uCAAuC,EACvC,uCAAuC,GACxC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,4CAA4C,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathConstraint2D.d.ts","sourceRoot":"","sources":["../src/pathConstraint2D.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pathConstraint2D.d.ts","sourceRoot":"","sources":["../src/pathConstraint2D.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,UAAU,EACV,oBAAoB,EAErB,MAAM,0BAA0B,CAAC;AAiClC,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D;AAWD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAiFpH"}
|
package/dist/pathConstraint2D.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { RAD_TO_DEG } from '@flighthq/math/contract';
|
|
3
3
|
import { getPathLength, getPathPositionAtDistance } from '@flighthq/path/contract';
|
|
4
4
|
import { PathAttachment2DKind, Skeleton2DConstraintKind, Skeleton2DPathPositionMode, Skeleton2DPathRotateMode, Skeleton2DPathSpacingMode, } from '@flighthq/types/contract';
|
|
@@ -7,6 +7,11 @@ import { computeSkeleton2DBoneWorldTransform } from './skeleton2d';
|
|
|
7
7
|
import { registerSkeleton2DConstraintSolver } from './skeleton2dConstraint';
|
|
8
8
|
// 6 floats per bone in the flat world-transform buffer (a, b, c, d, tx, ty).
|
|
9
9
|
const MATRIX_STRIDE = 6;
|
|
10
|
+
function assignPathFields(out, commands, data, winding) {
|
|
11
|
+
out.commands = commands;
|
|
12
|
+
out.data = data;
|
|
13
|
+
out.winding = winding;
|
|
14
|
+
}
|
|
10
15
|
// Opts a bundle into path constraints. This is the only module in skeleton2d that reaches for
|
|
11
16
|
// `@flighthq/path`, and a consumer that never calls this registrar never imports it — measured, not
|
|
12
17
|
// assumed: a rig bundle importing skeleton2d and nothing path-related is byte-identical (2051 gzip bytes)
|
|
@@ -164,7 +169,8 @@ function wrapSkeleton2DAngle(degrees) {
|
|
|
164
169
|
return value;
|
|
165
170
|
}
|
|
166
171
|
const MINIMUM_DETERMINANT = 1e-9;
|
|
167
|
-
const _path =
|
|
172
|
+
const _path = allocateEntity();
|
|
173
|
+
assignPathFields(_path, [], [], 'nonZero');
|
|
168
174
|
const _point = { x: 0, y: 0 };
|
|
169
175
|
const _tangent = { x: 0, y: 0 };
|
|
170
176
|
let _positions = new Float64Array(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathConstraint2D.js","sourceRoot":"","sources":["../src/pathConstraint2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pathConstraint2D.js","sourceRoot":"","sources":["../src/pathConstraint2D.ts"],"names":[],"mappings":"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"}
|
package/dist/skeleton2d.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AttachmentSkin2D, Bone2D, MatrixLike, Skeleton2D } from '@flighthq/types/contract';
|
|
1
|
+
import type { AttachmentSkin2D, Bone2D, EntityConstruction, MatrixLike, Skeleton2D } from '@flighthq/types/contract';
|
|
2
2
|
export declare function cloneSkeleton2D(skeleton: Readonly<Skeleton2D>): Skeleton2D;
|
|
3
3
|
export declare function computeSkeleton2DBoneMatrices(skeleton: Readonly<Skeleton2D>): void;
|
|
4
4
|
export declare function computeSkeleton2DBoneWorldTransform(skeleton: Readonly<Skeleton2D>, boneIndex: number): void;
|
|
@@ -9,6 +9,7 @@ export declare function equalsSkeleton2D(a: Readonly<Skeleton2D>, b: Readonly<Sk
|
|
|
9
9
|
export declare function getSkeleton2DBoneIndexByName(skeleton: Readonly<Skeleton2D>, name: string): number;
|
|
10
10
|
export declare function getSkeleton2DBoneWorldMatrix(out: MatrixLike, skeleton: Readonly<Skeleton2D>, boneIndex: number): boolean;
|
|
11
11
|
export declare function getSkeleton2DSkin(skeleton: Readonly<Skeleton2D>, name: string): AttachmentSkin2D | null;
|
|
12
|
+
export declare function initializeSkeleton2D(out: EntityConstruction<Skeleton2D>, boneMatrices: Float32Array, bones: Bone2D[], inverseBindMatrices: Float32Array, skins: Skeleton2D['skins'], slots: Skeleton2D['slots'], worldMatrices: Float32Array): void;
|
|
12
13
|
export declare function setSkeleton2DBindPose(skeleton: Readonly<Skeleton2D>): void;
|
|
13
14
|
export declare function setSkeleton2DSkin(skeleton: Skeleton2D, skin: Readonly<AttachmentSkin2D>): void;
|
|
14
15
|
export declare function validateSkeleton2D(skeleton: Readonly<Skeleton2D>): string | null;
|
package/dist/skeleton2d.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton2d.d.ts","sourceRoot":"","sources":["../src/skeleton2d.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"skeleton2d.d.ts","sourceRoot":"","sources":["../src/skeleton2d.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAQrH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAY1E;AAMD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAYlF;AAOD,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAoF3G;AAUD,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAGrF;AAOD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,UAAU,CAAC,OAAO,CAAQ,GAAG,UAAU,CAa/F;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAG5D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,CAyB1F;AAGD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjG;AAID,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAIT;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAOvG;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,kBAAkB,CAAC,UAAU,CAAC,EACnC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EAAE,EACf,mBAAmB,EAAE,YAAY,EACjC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAC1B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAC1B,aAAa,EAAE,YAAY,GAC1B,IAAI,CAON;AAGD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAU1E;AAeD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAM9F;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,IAAI,CAiBhF"}
|
package/dist/skeleton2d.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { inverseMatrix, multiplyMatrix } from '@flighthq/geometry/contract';
|
|
3
3
|
import { DEG_TO_RAD } from '@flighthq/math/contract';
|
|
4
4
|
// 6 floats per bone in the flat 2×3 affine buffers (a, b, c, d, tx, ty), matching the Matrix field order.
|
|
@@ -7,14 +7,9 @@ const MATRIX_STRIDE = 6;
|
|
|
7
7
|
// posable skeleton. Slots and their attachments are SHARED (attachments are immutable setup data); use a
|
|
8
8
|
// skin/slot editing layer for per-instance attachment swaps.
|
|
9
9
|
export function cloneSkeleton2D(skeleton) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
inverseBindMatrices: skeleton.inverseBindMatrices.slice(),
|
|
14
|
-
skins: skeleton.skins,
|
|
15
|
-
slots: skeleton.slots === null || skeleton.slots === undefined ? skeleton.slots : skeleton.slots.map((s) => ({ ...s })),
|
|
16
|
-
worldMatrices: skeleton.worldMatrices.slice(),
|
|
17
|
-
});
|
|
10
|
+
const out = allocateEntity();
|
|
11
|
+
initializeSkeleton2D(out, skeleton.boneMatrices.slice(), skeleton.bones.map((bone) => ({ ...bone })), skeleton.inverseBindMatrices.slice(), skeleton.skins, skeleton.slots === null || skeleton.slots === undefined ? skeleton.slots : skeleton.slots.map((s) => ({ ...s })), skeleton.worldMatrices.slice());
|
|
12
|
+
return finishEntity(out);
|
|
18
13
|
}
|
|
19
14
|
// Fills the skin palette `boneMatrices[i] = worldMatrices[i] × inverseBindMatrices[i]` — the matrix that
|
|
20
15
|
// takes a bind-pose (setup) mesh vertex to its posed position. Call after `computeSkeleton2DWorldTransforms`
|
|
@@ -148,13 +143,9 @@ export function computeSkeleton2DWorldTransforms(skeleton) {
|
|
|
148
143
|
// (each bone's `parentIndex` < its own index); `validateSkeleton2D` checks this.
|
|
149
144
|
export function createSkeleton2D(bones, slots = null) {
|
|
150
145
|
const count = bones.length;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
inverseBindMatrices: new Float32Array(count * MATRIX_STRIDE),
|
|
155
|
-
slots,
|
|
156
|
-
worldMatrices: new Float32Array(count * MATRIX_STRIDE),
|
|
157
|
-
});
|
|
146
|
+
const out = allocateEntity();
|
|
147
|
+
initializeSkeleton2D(out, new Float32Array(count * MATRIX_STRIDE), bones, new Float32Array(count * MATRIX_STRIDE), null, slots, new Float32Array(count * MATRIX_STRIDE));
|
|
148
|
+
return finishEntity(out);
|
|
158
149
|
}
|
|
159
150
|
// Detaches bones/slots so the skeleton is GC-eligible. `dispose*` (not `destroy*`): a Skeleton2D owns no
|
|
160
151
|
// GPU or native resource — its buffers are plain GC memory — so this only clears references.
|
|
@@ -217,6 +208,14 @@ export function getSkeleton2DSkin(skeleton, name) {
|
|
|
217
208
|
}
|
|
218
209
|
return null;
|
|
219
210
|
}
|
|
211
|
+
export function initializeSkeleton2D(out, boneMatrices, bones, inverseBindMatrices, skins, slots, worldMatrices) {
|
|
212
|
+
out.boneMatrices = boneMatrices;
|
|
213
|
+
out.bones = bones;
|
|
214
|
+
out.inverseBindMatrices = inverseBindMatrices;
|
|
215
|
+
out.skins = skins;
|
|
216
|
+
out.slots = slots;
|
|
217
|
+
out.worldMatrices = worldMatrices;
|
|
218
|
+
}
|
|
220
219
|
// inverse-bind at identity (`inverseMatrix` returns false) rather than producing NaNs.
|
|
221
220
|
export function setSkeleton2DBindPose(skeleton) {
|
|
222
221
|
const world = skeleton.worldMatrices;
|
package/dist/skeleton2d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton2d.js","sourceRoot":"","sources":["../src/skeleton2d.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skeleton2d.js","sourceRoot":"","sources":["../src/skeleton2d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Attachment2D, Skeleton2DAnimationPath, Skeleton2DAnimationTarget, Skeleton2DAnimationTargetBinder, Skeleton2DAnimationTargetKind, Skeleton2DSlotAnimationPath, Skeleton2DSlotAnimationTarget } from '@flighthq/types/contract';
|
|
1
|
+
import type { Attachment2D, EntityConstruction, Skeleton2DAnimationPath, Skeleton2DAnimationTarget, Skeleton2DAnimationTargetBinder, Skeleton2DAnimationTargetKind, Skeleton2DSlotAnimationPath, Skeleton2DSlotAnimationTarget } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createSkeleton2DBoneAnimationTarget(boneIndex: number, path: Skeleton2DAnimationPath): Skeleton2DAnimationTarget;
|
|
3
3
|
export declare function createSkeleton2DSlotAnimationTarget(slotIndex: number, path: Skeleton2DSlotAnimationPath, attachments?: readonly (Attachment2D | null)[] | null): Skeleton2DSlotAnimationTarget;
|
|
4
4
|
/**
|
|
@@ -11,6 +11,8 @@ export declare function createSkeleton2DSlotAnimationTarget(slotIndex: number, p
|
|
|
11
11
|
export declare function findSkeleton2DStepKeyframe(times: ArrayLike<number>, time: number): number;
|
|
12
12
|
export declare function getSkeleton2DAnimationTargetBinder(kind: Skeleton2DAnimationTargetKind): Skeleton2DAnimationTargetBinder | null;
|
|
13
13
|
export declare function getSkeleton2DAnimationTargetBinderKinds(): readonly Skeleton2DAnimationTargetKind[];
|
|
14
|
+
export declare function initializeSkeleton2DBoneAnimationTarget(out: EntityConstruction<Skeleton2DAnimationTarget>, boneIndex: number, path: Skeleton2DAnimationPath): void;
|
|
15
|
+
export declare function initializeSkeleton2DSlotAnimationTarget(out: EntityConstruction<Skeleton2DSlotAnimationTarget>, slotIndex: number, path: Skeleton2DSlotAnimationPath, attachments?: readonly (Attachment2D | null)[] | null): void;
|
|
14
16
|
export declare function registerSkeleton2DAnimationTargetBinder(kind: Skeleton2DAnimationTargetKind, bind: Skeleton2DAnimationTargetBinder): void;
|
|
15
17
|
export declare function unregisterSkeleton2DAnimationTargetBinder(kind: Skeleton2DAnimationTargetKind): void;
|
|
16
18
|
//# sourceMappingURL=skeleton2dAnimationTarget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton2dAnimationTarget.d.ts","sourceRoot":"","sources":["../src/skeleton2dAnimationTarget.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,YAAY,
|
|
1
|
+
{"version":3,"file":"skeleton2dAnimationTarget.d.ts","sourceRoot":"","sources":["../src/skeleton2dAnimationTarget.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,YAAY,EACZ,kBAAkB,EAGlB,uBAAuB,EACvB,yBAAyB,EACzB,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAE9B,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,uBAAuB,GAC5B,yBAAyB,CAI3B;AAED,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,EACjC,WAAW,GAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,GAAG,IAAW,GAC1D,6BAA6B,CAI/B;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOzF;AAID,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,6BAA6B,GAClC,+BAA+B,GAAG,IAAI,CAExC;AAID,wBAAgB,uCAAuC,IAAI,SAAS,6BAA6B,EAAE,CAIlG;AAID,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,kBAAkB,CAAC,yBAAyB,CAAC,EAClD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,uBAAuB,GAC5B,IAAI,CAIN;AAID,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,kBAAkB,CAAC,6BAA6B,CAAC,EACtD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,EACjC,WAAW,GAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,GAAG,IAAW,GAC1D,IAAI,CAKN;AAMD,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,6BAA6B,EACnC,IAAI,EAAE,+BAA+B,GACpC,IAAI,CAEN;AAED,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,6BAA6B,GAAG,IAAI,CAEnG"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { sampleAnimationTrack } from '@flighthq/animation/contract';
|
|
2
|
-
import {
|
|
2
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
3
3
|
import { createKeyedTable, getRegistryTableEntry, getRegistryTableKeys, withRegistryTableEntry, withoutRegistryTableEntry, } from '@flighthq/registry/contract';
|
|
4
4
|
import { Skeleton2DAnimationPath as BonePath, Skeleton2DAnimationTargetKind as TargetKind, Skeleton2DSlotAnimationPath as SlotPath, } from '@flighthq/types/contract';
|
|
5
5
|
import { reportSkeleton2DCoercedInterpolation } from './skeleton2dGuards';
|
|
6
|
-
// The binding target for a bone transform channel. Prefer this over a literal: `kind` is what the binder
|
|
7
|
-
// dispatches on, and a target that omits it binds to nothing.
|
|
8
6
|
export function createSkeleton2DBoneAnimationTarget(boneIndex, path) {
|
|
9
|
-
|
|
7
|
+
const out = allocateEntity();
|
|
8
|
+
initializeSkeleton2DBoneAnimationTarget(out, boneIndex, path);
|
|
9
|
+
return finishEntity(out);
|
|
10
10
|
}
|
|
11
|
-
// The binding target for a slot appearance channel. `attachments` is the lookup table an Attachment
|
|
12
|
-
// channel's index track resolves through, and is left null on a colour channel.
|
|
13
11
|
export function createSkeleton2DSlotAnimationTarget(slotIndex, path, attachments = null) {
|
|
14
|
-
|
|
12
|
+
const out = allocateEntity();
|
|
13
|
+
initializeSkeleton2DSlotAnimationTarget(out, slotIndex, path, attachments);
|
|
14
|
+
return finishEntity(out);
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* The last keyframe at or before `time`, or -1 when the track holds none. Before the first keyframe the
|
|
@@ -42,6 +42,21 @@ export function getSkeleton2DAnimationTargetBinderKinds() {
|
|
|
42
42
|
getRegistryTableKeys(kinds, getSkeleton2DAnimationTargetBinderRegistry());
|
|
43
43
|
return kinds;
|
|
44
44
|
}
|
|
45
|
+
// The binding target for a bone transform channel. Prefer this over a literal: `kind` is what the binder
|
|
46
|
+
// dispatches on, and a target that omits it binds to nothing.
|
|
47
|
+
export function initializeSkeleton2DBoneAnimationTarget(out, boneIndex, path) {
|
|
48
|
+
out.boneIndex = boneIndex;
|
|
49
|
+
out.kind = TargetKind.Bone;
|
|
50
|
+
out.path = path;
|
|
51
|
+
}
|
|
52
|
+
// The binding target for a slot appearance channel. `attachments` is the lookup table an Attachment
|
|
53
|
+
// channel's index track resolves through, and is left null on a colour channel.
|
|
54
|
+
export function initializeSkeleton2DSlotAnimationTarget(out, slotIndex, path, attachments = null) {
|
|
55
|
+
out.attachments = attachments;
|
|
56
|
+
out.kind = TargetKind.Slot;
|
|
57
|
+
out.path = path;
|
|
58
|
+
out.slotIndex = slotIndex;
|
|
59
|
+
}
|
|
45
60
|
// Claims a target kind for a binder, so a family this package does not own — a constraint solver's
|
|
46
61
|
// channels, a vendor's own rig feature — poses through the same single pass as bones and slots instead of
|
|
47
62
|
// needing a second one. Last write wins, which is what lets a caller replace a built-in binding; collisions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton2dAnimationTarget.js","sourceRoot":"","sources":["../src/skeleton2dAnimationTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"skeleton2dAnimationTarget.js","sourceRoot":"","sources":["../src/skeleton2dAnimationTarget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import type { AnimationChannel, Node, NodeOrderList, NodeTraits, Skeleton2DDrawOrderAnimationTarget, Skeleton2DDrawOrderTimeline } from '@flighthq/types/contract';
|
|
2
|
-
/**
|
|
3
|
-
* The binding target for a draw-order channel. Prefer this over a literal: `kind` is what the binder
|
|
4
|
-
* dispatches on, and a target that omits it binds to nothing.
|
|
5
|
-
*
|
|
6
|
-
* `nodes` maps slot index to the display node that slot draws, `null` where it draws nothing. `orderList`
|
|
7
|
-
* is the caller's own list — ordering is never node state — and the binder fills it rather than applying
|
|
8
|
-
* it, leaving `applyNodeOrderList` an explicit step the caller takes once per frame.
|
|
9
|
-
*/
|
|
1
|
+
import type { AnimationChannel, EntityConstruction, Node, NodeOrderList, NodeTraits, Skeleton2DDrawOrderAnimationTarget, Skeleton2DDrawOrderTimeline } from '@flighthq/types/contract';
|
|
10
2
|
export declare function createSkeleton2DDrawOrderAnimationTarget<Traits extends object = NodeTraits>(nodes: readonly (Node<Traits> | null)[], orderList: NodeOrderList<Traits>): Skeleton2DDrawOrderAnimationTarget<Traits>;
|
|
11
3
|
/**
|
|
12
4
|
* Turns an import's draw-order timeline into the channel that drives it — the **scene-side step** the
|
|
@@ -26,6 +18,15 @@ export declare function createSkeleton2DDrawOrderAnimationTarget<Traits extends
|
|
|
26
18
|
* of per-keyframe orderings — a partial final ordering would silently drop the slots past its end.
|
|
27
19
|
*/
|
|
28
20
|
export declare function createSkeleton2DDrawOrderChannel<Traits extends object = NodeTraits>(timeline: Readonly<Skeleton2DDrawOrderTimeline>, nodes: readonly (Node<Traits> | null)[], orderList: NodeOrderList<Traits>): AnimationChannel | null;
|
|
21
|
+
/**
|
|
22
|
+
* The binding target for a draw-order channel. Prefer this over a literal: `kind` is what the binder
|
|
23
|
+
* dispatches on, and a target that omits it binds to nothing.
|
|
24
|
+
*
|
|
25
|
+
* `nodes` maps slot index to the display node that slot draws, `null` where it draws nothing. `orderList`
|
|
26
|
+
* is the caller's own list — ordering is never node state — and the binder fills it rather than applying
|
|
27
|
+
* it, leaving `applyNodeOrderList` an explicit step the caller takes once per frame.
|
|
28
|
+
*/
|
|
29
|
+
export declare function initializeSkeleton2DDrawOrderAnimationTarget<Traits extends object = NodeTraits>(out: EntityConstruction<Skeleton2DDrawOrderAnimationTarget<Traits>>, nodes: readonly (Node<Traits> | null)[], orderList: NodeOrderList<Traits>): void;
|
|
29
30
|
/**
|
|
30
31
|
* Claims the draw-order kind for its binder.
|
|
31
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton2dDrawOrderTarget.d.ts","sourceRoot":"","sources":["../src/skeleton2dDrawOrderTarget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,IAAI,EACJ,aAAa,EACb,UAAU,EACV,kCAAkC,EAClC,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAUlC
|
|
1
|
+
{"version":3,"file":"skeleton2dDrawOrderTarget.d.ts","sourceRoot":"","sources":["../src/skeleton2dDrawOrderTarget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,IAAI,EACJ,aAAa,EACb,UAAU,EACV,kCAAkC,EAClC,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAUlC,wBAAgB,wCAAwC,CAAC,MAAM,SAAS,MAAM,GAAG,UAAU,EACzF,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EACvC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,GAC/B,kCAAkC,CAAC,MAAM,CAAC,CAI5C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,SAAS,MAAM,GAAG,UAAU,EACjF,QAAQ,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAC/C,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EACvC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,GAC/B,gBAAgB,GAAG,IAAI,CAezB;AAED;;;;;;;GAOG;AACH,wBAAgB,4CAA4C,CAAC,MAAM,SAAS,MAAM,GAAG,UAAU,EAC7F,GAAG,EAAE,kBAAkB,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC,EACnE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EACvC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,GAC/B,IAAI,CAIN;AAED;;;;;;GAMG;AACH,wBAAgB,0CAA0C,IAAI,IAAI,CAEjE;AAED,wBAAgB,4CAA4C,IAAI,IAAI,CAEnE"}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { createAnimationChannel, createAnimationTrack } from '@flighthq/animation/contract';
|
|
2
|
-
import {
|
|
2
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
3
3
|
import { addNodeOrderListEntry, clearNodeOrderList } from '@flighthq/node/contract';
|
|
4
4
|
import { Skeleton2DAnimationTargetKind as TargetKind } from '@flighthq/types/contract';
|
|
5
5
|
import { findSkeleton2DStepKeyframe, registerSkeleton2DAnimationTargetBinder, unregisterSkeleton2DAnimationTargetBinder, } from './skeleton2dAnimationTarget';
|
|
6
6
|
import { reportSkeleton2DCoercedInterpolation } from './skeleton2dGuards';
|
|
7
|
-
/**
|
|
8
|
-
* The binding target for a draw-order channel. Prefer this over a literal: `kind` is what the binder
|
|
9
|
-
* dispatches on, and a target that omits it binds to nothing.
|
|
10
|
-
*
|
|
11
|
-
* `nodes` maps slot index to the display node that slot draws, `null` where it draws nothing. `orderList`
|
|
12
|
-
* is the caller's own list — ordering is never node state — and the binder fills it rather than applying
|
|
13
|
-
* it, leaving `applyNodeOrderList` an explicit step the caller takes once per frame.
|
|
14
|
-
*/
|
|
15
7
|
export function createSkeleton2DDrawOrderAnimationTarget(nodes, orderList) {
|
|
16
|
-
|
|
8
|
+
const out = allocateEntity();
|
|
9
|
+
initializeSkeleton2DDrawOrderAnimationTarget(out, nodes, orderList);
|
|
10
|
+
return finishEntity(out);
|
|
17
11
|
}
|
|
18
12
|
/**
|
|
19
13
|
* Turns an import's draw-order timeline into the channel that drives it — the **scene-side step** the
|
|
@@ -46,6 +40,19 @@ export function createSkeleton2DDrawOrderChannel(timeline, nodes, orderList) {
|
|
|
46
40
|
values: timeline.orderings,
|
|
47
41
|
}), createSkeleton2DDrawOrderAnimationTarget(nodes, orderList));
|
|
48
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* The binding target for a draw-order channel. Prefer this over a literal: `kind` is what the binder
|
|
45
|
+
* dispatches on, and a target that omits it binds to nothing.
|
|
46
|
+
*
|
|
47
|
+
* `nodes` maps slot index to the display node that slot draws, `null` where it draws nothing. `orderList`
|
|
48
|
+
* is the caller's own list — ordering is never node state — and the binder fills it rather than applying
|
|
49
|
+
* it, leaving `applyNodeOrderList` an explicit step the caller takes once per frame.
|
|
50
|
+
*/
|
|
51
|
+
export function initializeSkeleton2DDrawOrderAnimationTarget(out, nodes, orderList) {
|
|
52
|
+
out.kind = TargetKind.DrawOrder;
|
|
53
|
+
out.nodes = nodes;
|
|
54
|
+
out.orderList = orderList;
|
|
55
|
+
}
|
|
49
56
|
/**
|
|
50
57
|
* Claims the draw-order kind for its binder.
|
|
51
58
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton2dDrawOrderTarget.js","sourceRoot":"","sources":["../src/skeleton2dDrawOrderTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"skeleton2dDrawOrderTarget.js","sourceRoot":"","sources":["../src/skeleton2dDrawOrderTarget.ts"],"names":[],"mappings":"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"}
|
package/dist/skin2D.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type { Skin2D } from '@flighthq/types/contract';
|
|
1
|
+
import type { Skin2D, EntityConstruction } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createSkin2D(influenceCounts: Uint16Array, influences: Float32Array): Skin2D;
|
|
3
|
+
export declare function initializeSkin2D(out: EntityConstruction<Skin2D>, influenceCounts: Uint16Array, influences: Float32Array): void;
|
|
3
4
|
//# sourceMappingURL=skin2D.d.ts.map
|
package/dist/skin2D.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin2D.d.ts","sourceRoot":"","sources":["../src/skin2D.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"skin2D.d.ts","sourceRoot":"","sources":["../src/skin2D.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE3E,wBAAgB,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,GAAG,MAAM,CAI3F;AAMD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAC/B,eAAe,EAAE,WAAW,EAC5B,UAAU,EAAE,YAAY,GACvB,IAAI,CAGN"}
|
package/dist/skin2D.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
|
+
export function createSkin2D(influenceCounts, influences) {
|
|
3
|
+
const out = allocateEntity();
|
|
4
|
+
initializeSkin2D(out, influenceCounts, influences);
|
|
5
|
+
return finishEntity(out);
|
|
6
|
+
}
|
|
2
7
|
// Allocates a weight binding over the two streams a caller already owns. The arrays are adopted, not
|
|
3
8
|
// copied: an importer builds them once at their final length and hands ownership over, and a deformer
|
|
4
9
|
// reads them every frame, so a copy here would be pure waste. A caller that must keep its own copy
|
|
5
10
|
// slices before calling.
|
|
6
|
-
export function
|
|
7
|
-
|
|
11
|
+
export function initializeSkin2D(out, influenceCounts, influences) {
|
|
12
|
+
out.influenceCounts = influenceCounts;
|
|
13
|
+
out.influences = influences;
|
|
8
14
|
}
|
|
9
15
|
//# sourceMappingURL=skin2D.js.map
|
package/dist/skin2D.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin2D.js","sourceRoot":"","sources":["../src/skin2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"skin2D.js","sourceRoot":"","sources":["../src/skin2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzE,MAAM,UAAU,YAAY,CAAC,eAA4B,EAAE,UAAwB;IACjF,MAAM,GAAG,GAAG,cAAc,EAAU,CAAC;IACrC,gBAAgB,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IACnD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,qGAAqG;AACrG,sGAAsG;AACtG,mGAAmG;AACnG,yBAAyB;AACzB,MAAM,UAAU,gBAAgB,CAC9B,GAA+B,EAC/B,eAA4B,EAC5B,UAAwB;IAExB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;IACtC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/skeleton2d",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.903.f434bc2",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,15 +38,15 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/animation": "0.5.1-next.
|
|
42
|
-
"@flighthq/entity": "0.5.1-next.
|
|
43
|
-
"@flighthq/geometry": "0.5.1-next.
|
|
44
|
-
"@flighthq/log": "0.5.1-next.
|
|
45
|
-
"@flighthq/node": "0.5.1-next.
|
|
46
|
-
"@flighthq/math": "0.5.1-next.
|
|
47
|
-
"@flighthq/path": "0.5.1-next.
|
|
48
|
-
"@flighthq/registry": "0.5.1-next.
|
|
49
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/animation": "0.5.1-next.903.f434bc2",
|
|
42
|
+
"@flighthq/entity": "0.5.1-next.903.f434bc2",
|
|
43
|
+
"@flighthq/geometry": "0.5.1-next.903.f434bc2",
|
|
44
|
+
"@flighthq/log": "0.5.1-next.903.f434bc2",
|
|
45
|
+
"@flighthq/node": "0.5.1-next.903.f434bc2",
|
|
46
|
+
"@flighthq/math": "0.5.1-next.903.f434bc2",
|
|
47
|
+
"@flighthq/path": "0.5.1-next.903.f434bc2",
|
|
48
|
+
"@flighthq/registry": "0.5.1-next.903.f434bc2",
|
|
49
|
+
"@flighthq/types": "0.5.1-next.903.f434bc2"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"typescript": "^5.3.0"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, BoundingBoxAttachment2D, Skin2D } from '@flighthq/types/contract';
|
|
2
3
|
import { BoundingBoxAttachment2DKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
@@ -24,7 +25,12 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
function box(skin: Skin2D | null, vertices: Float32Array | null, pointCount: number): BoundingBoxAttachment2D {
|
|
27
|
-
|
|
28
|
+
const out = allocateEntity<BoundingBoxAttachment2D>();
|
|
29
|
+
out.kind = BoundingBoxAttachment2DKind;
|
|
30
|
+
out.pointCount = pointCount;
|
|
31
|
+
out.skin = skin;
|
|
32
|
+
out.vertices = vertices;
|
|
33
|
+
return finishEntity(out) as BoundingBoxAttachment2D;
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
describe('computeSkeleton2DBoundingBoxAttachmentVertices', () => {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, ClippingAttachment2D } from '@flighthq/types/contract';
|
|
2
3
|
import { ClippingAttachment2DKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
@@ -26,13 +27,13 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
function clip(endSlotIndex: number, vertices: Float32Array | null = null): ClippingAttachment2D {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
const out = allocateEntity<ClippingAttachment2D>();
|
|
31
|
+
out.endSlotIndex = endSlotIndex;
|
|
32
|
+
out.kind = ClippingAttachment2DKind;
|
|
33
|
+
out.pointCount = vertices === null ? 0 : vertices.length / 2;
|
|
34
|
+
out.skin = null;
|
|
35
|
+
out.vertices = vertices;
|
|
36
|
+
return finishEntity(out) as ClippingAttachment2D;
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
describe('computeSkeleton2DClippingAttachmentVertices', () => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createAnimationChannel, createAnimationClip, createAnimationTrack } from '@flighthq/animation/contract';
|
|
2
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
3
|
import type { Bone2D, MeshAttachment2D, Skin2D, Slot2D } from '@flighthq/types/contract';
|
|
3
4
|
import { MeshAttachment2DKind, Skeleton2DAnimationTargetKind, TransformMode2D } from '@flighthq/types/contract';
|
|
4
5
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
@@ -32,14 +33,14 @@ function makeBone(): Bone2D {
|
|
|
32
33
|
|
|
33
34
|
function mesh(pointCount: number): MeshAttachment2D {
|
|
34
35
|
const skin: Skin2D = createSkin2D(new Uint16Array(pointCount).fill(1), new Float32Array(pointCount * 4));
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
const out = allocateEntity<any>();
|
|
37
|
+
out.kind = MeshAttachment2DKind;
|
|
38
|
+
out.skin = skin;
|
|
39
|
+
out.triangles = new Uint16Array();
|
|
40
|
+
out.uvs = new Float32Array(pointCount * 2);
|
|
41
|
+
out.vertexCount = pointCount;
|
|
42
|
+
out.vertices = null;
|
|
43
|
+
return finishEntity(out) as MeshAttachment2D;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
function rig(attachment: MeshAttachment2D | null): {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, MeshAttachment2D, Skeleton2DDeformLengthMismatch, Skin2D } from '@flighthq/types/contract';
|
|
2
3
|
import { MeshAttachment2DKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
@@ -25,14 +26,14 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
function weightedMesh(skin: Skin2D, vertexCount: number): MeshAttachment2D {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
const out = allocateEntity<MeshAttachment2D>();
|
|
30
|
+
out.kind = MeshAttachment2DKind;
|
|
31
|
+
out.skin = skin;
|
|
32
|
+
out.triangles = new Uint16Array();
|
|
33
|
+
out.uvs = new Float32Array(vertexCount * 2);
|
|
34
|
+
out.vertexCount = vertexCount;
|
|
35
|
+
out.vertices = null;
|
|
36
|
+
return finishEntity(out) as MeshAttachment2D;
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
describe('deformSkeleton2DMeshAttachment', () => {
|
|
@@ -102,14 +103,16 @@ describe('deformSkeleton2DMeshAttachment', () => {
|
|
|
102
103
|
it('adds a rigid deform offset to the setup vertices before the bone transform', () => {
|
|
103
104
|
const s = createSkeleton2D([makeBone({ x: 5, rotation: 90 })]);
|
|
104
105
|
computeSkeleton2DWorldTransforms(s);
|
|
105
|
-
const mesh
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
const mesh = (() => {
|
|
107
|
+
const out = allocateEntity<MeshAttachment2D>();
|
|
108
|
+
out.kind = MeshAttachment2DKind;
|
|
109
|
+
out.skin = null;
|
|
110
|
+
out.triangles = new Uint16Array();
|
|
111
|
+
out.uvs = new Float32Array(2);
|
|
112
|
+
out.vertexCount = 1;
|
|
113
|
+
out.vertices = new Float32Array([2, 0]);
|
|
114
|
+
return finishEntity(out) as MeshAttachment2D;
|
|
115
|
+
})();
|
|
113
116
|
const out = new Float32Array(2);
|
|
114
117
|
|
|
115
118
|
deformSkeleton2DMeshAttachment(out, mesh, s, 0, new Float32Array([1, 0]));
|
|
@@ -137,14 +140,16 @@ describe('deformSkeleton2DMeshAttachment', () => {
|
|
|
137
140
|
const s = createSkeleton2D([makeBone({ x: 5, rotation: 90 })]);
|
|
138
141
|
computeSkeleton2DWorldTransforms(s);
|
|
139
142
|
const verts = new Float32Array([2, 0]); // one vertex, local to the bone
|
|
140
|
-
const mesh
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
const mesh = (() => {
|
|
144
|
+
const out = allocateEntity<MeshAttachment2D>();
|
|
145
|
+
out.kind = MeshAttachment2DKind;
|
|
146
|
+
out.skin = null;
|
|
147
|
+
out.triangles = new Uint16Array();
|
|
148
|
+
out.uvs = new Float32Array(2);
|
|
149
|
+
out.vertexCount = 1;
|
|
150
|
+
out.vertices = verts;
|
|
151
|
+
return finishEntity(out) as MeshAttachment2D;
|
|
152
|
+
})();
|
|
148
153
|
// Deform in place (out === vertices) to exercise alias safety.
|
|
149
154
|
deformSkeleton2DMeshAttachment(verts, mesh, s, 0);
|
|
150
155
|
// (2,0) rotated 90° = (0,2), + (5,0) → (5,2).
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, Path, PathAttachment2D, Skeleton2DDeformLengthMismatch, Skin2D } from '@flighthq/types/contract';
|
|
2
3
|
import { EntityRuntimeKey, PathAttachment2DKind, PathCommand, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
@@ -29,7 +30,14 @@ function emptyPath(): Path {
|
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
function weightedPath(skin: Skin2D, pointCount: number, commands: number[]): PathAttachment2D {
|
|
32
|
-
|
|
33
|
+
const out = allocateEntity<any>();
|
|
34
|
+
out.commands = commands;
|
|
35
|
+
out.kind = PathAttachment2DKind;
|
|
36
|
+
out.pointCount = pointCount;
|
|
37
|
+
out.skin = skin;
|
|
38
|
+
out.vertices = null;
|
|
39
|
+
out.winding = 'evenOdd';
|
|
40
|
+
return finishEntity(out) as PathAttachment2D;
|
|
33
41
|
}
|
|
34
42
|
|
|
35
43
|
describe('deformSkeleton2DPathAttachment', () => {
|
|
@@ -141,14 +149,16 @@ describe('deformSkeleton2DPathAttachment', () => {
|
|
|
141
149
|
it('transforms a rigid path by the slot bone world matrix', () => {
|
|
142
150
|
const skeleton = createSkeleton2D([makeBone({ x: 5, rotation: 90 })]);
|
|
143
151
|
computeSkeleton2DWorldTransforms(skeleton);
|
|
144
|
-
const attachment
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
+
const attachment = (() => {
|
|
153
|
+
const out = allocateEntity<any>();
|
|
154
|
+
out.commands = [PathCommand.MOVE_TO, PathCommand.LINE_TO];
|
|
155
|
+
out.kind = PathAttachment2DKind;
|
|
156
|
+
out.pointCount = 2;
|
|
157
|
+
out.skin = null;
|
|
158
|
+
out.vertices = new Float32Array([2, 0, 0, 3]);
|
|
159
|
+
out.winding = 'nonZero';
|
|
160
|
+
return finishEntity(out) as PathAttachment2D;
|
|
161
|
+
})();
|
|
152
162
|
const out = emptyPath();
|
|
153
163
|
|
|
154
164
|
deformSkeleton2DPathAttachment(out, attachment, skeleton, 0, new Float32Array([0, 0, 0, 0]));
|
|
@@ -162,14 +172,13 @@ describe('deformSkeleton2DPathAttachment', () => {
|
|
|
162
172
|
it('writes nothing for a rigid path with no setup vertices rather than throwing', () => {
|
|
163
173
|
const skeleton = createSkeleton2D([makeBone()]);
|
|
164
174
|
computeSkeleton2DWorldTransforms(skeleton);
|
|
165
|
-
const attachment
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
};
|
|
175
|
+
const attachment = allocateEntity<PathAttachment2D>();
|
|
176
|
+
attachment.commands = [];
|
|
177
|
+
attachment.kind = PathAttachment2DKind;
|
|
178
|
+
attachment.pointCount = 0;
|
|
179
|
+
attachment.skin = null;
|
|
180
|
+
attachment.vertices = null;
|
|
181
|
+
attachment.winding = 'nonZero';
|
|
173
182
|
const out = emptyPath();
|
|
174
183
|
|
|
175
184
|
expect(() => deformSkeleton2DPathAttachment(out, attachment, skeleton, 0)).not.toThrow();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, Skeleton2D, Skeleton2DIkConstraint } from '@flighthq/types/contract';
|
|
2
3
|
import { Skeleton2DConstraintKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
@@ -29,16 +30,16 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
function ik(overrides: Partial<Skeleton2DIkConstraint> = {}): Skeleton2DIkConstraint {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
const out = allocateEntity<any>();
|
|
34
|
+
out.bendPositive = true;
|
|
35
|
+
out.boneIndices = [0];
|
|
36
|
+
out.compress = false;
|
|
37
|
+
out.kind = Skeleton2DConstraintKind.Ik as 'Skeleton2D.IkConstraint';
|
|
38
|
+
out.mix = 1;
|
|
39
|
+
out.stretch = false;
|
|
40
|
+
out.targetBoneIndex = 1;
|
|
41
|
+
Object.assign(out, overrides);
|
|
42
|
+
return finishEntity(out) as Skeleton2DIkConstraint;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
// The world position of a bone's TIP — its origin plus its length along its own x axis. That is the point
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, PathAttachment2D, Skeleton2D, Skeleton2DPathConstraint, Slot2D } from '@flighthq/types/contract';
|
|
2
3
|
import {
|
|
3
4
|
PathAttachment2DKind,
|
|
@@ -38,14 +39,14 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
38
39
|
// A rigid straight path from (0,0) to (100,0) — 100 units of arc length, so a distance IS an x coordinate
|
|
39
40
|
// and every assertion below can be read off by hand.
|
|
40
41
|
function straightPath(): PathAttachment2D {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
const out = allocateEntity<PathAttachment2D>();
|
|
43
|
+
out.commands = [PathCommand.MOVE_TO, PathCommand.LINE_TO];
|
|
44
|
+
out.kind = PathAttachment2DKind;
|
|
45
|
+
out.pointCount = 2;
|
|
46
|
+
out.skin = null;
|
|
47
|
+
out.vertices = new Float32Array([0, 0, 100, 0]);
|
|
48
|
+
out.winding = 'nonZero' as const;
|
|
49
|
+
return finishEntity(out) as PathAttachment2D;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
function pathSlot(attachment: PathAttachment2D | null): Slot2D {
|
|
@@ -53,21 +54,21 @@ function pathSlot(attachment: PathAttachment2D | null): Slot2D {
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
function constraint(overrides: Partial<Skeleton2DPathConstraint> = {}): Skeleton2DPathConstraint {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
const out = allocateEntity<any>();
|
|
58
|
+
out.boneIndices = [1];
|
|
59
|
+
out.kind = Skeleton2DConstraintKind.Path as 'Skeleton2D.PathConstraint';
|
|
60
|
+
out.mix = 1;
|
|
61
|
+
out.mixRotate = 0;
|
|
62
|
+
out.mixX = 1;
|
|
63
|
+
out.mixY = 1;
|
|
64
|
+
out.position = 0;
|
|
65
|
+
out.positionMode = Skeleton2DPathPositionMode.Fixed;
|
|
66
|
+
out.rotateMode = Skeleton2DPathRotateMode.Tangent;
|
|
67
|
+
out.spacing = 0;
|
|
68
|
+
out.spacingMode = Skeleton2DPathSpacingMode.Fixed;
|
|
69
|
+
out.targetSlotIndex = 0;
|
|
70
|
+
Object.assign(out, overrides);
|
|
71
|
+
return finishEntity(out) as Skeleton2DPathConstraint;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
// Bone 0 carries the path slot; bones 1..n are the chain laid along it.
|
|
@@ -200,14 +201,19 @@ describe('solveSkeleton2DPathConstraint', () => {
|
|
|
200
201
|
// world position and writes it straight back, so forcing the branch on leaves this green. What it saves
|
|
201
202
|
// is an inverse-basis solve and a matrix rebuild per bone per frame for every rotate-only chain.
|
|
202
203
|
it('turns a bone to the path without moving it when both translate mixes are zero', () => {
|
|
203
|
-
const skeleton = rig(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
204
|
+
const skeleton = rig(
|
|
205
|
+
1,
|
|
206
|
+
(() => {
|
|
207
|
+
const out = allocateEntity<PathAttachment2D>();
|
|
208
|
+
out.commands = [PathCommand.MOVE_TO, PathCommand.LINE_TO];
|
|
209
|
+
out.kind = PathAttachment2DKind;
|
|
210
|
+
out.pointCount = 2;
|
|
211
|
+
out.skin = null;
|
|
212
|
+
out.vertices = new Float32Array([0, 0, 0, 100]);
|
|
213
|
+
out.winding = 'nonZero' as const;
|
|
214
|
+
return finishEntity(out) as PathAttachment2D;
|
|
215
|
+
})(),
|
|
216
|
+
);
|
|
211
217
|
skeleton.bones[1].x = 40;
|
|
212
218
|
skeleton.bones[1].y = -7;
|
|
213
219
|
computeSkeleton2DWorldTransforms(skeleton);
|
|
@@ -220,15 +226,19 @@ describe('solveSkeleton2DPathConstraint', () => {
|
|
|
220
226
|
});
|
|
221
227
|
|
|
222
228
|
it('aims a bone along the path tangent when rotateMode is Tangent', () => {
|
|
223
|
-
const skeleton = rig(
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
229
|
+
const skeleton = rig(
|
|
230
|
+
1,
|
|
231
|
+
(() => {
|
|
232
|
+
const out = allocateEntity<PathAttachment2D>();
|
|
233
|
+
out.commands = [PathCommand.MOVE_TO, PathCommand.LINE_TO];
|
|
234
|
+
out.kind = PathAttachment2DKind;
|
|
235
|
+
out.pointCount = 2;
|
|
236
|
+
out.skin = null;
|
|
237
|
+
out.vertices = new Float32Array([0, 0, 0, 100]);
|
|
238
|
+
out.winding = 'nonZero' as const;
|
|
239
|
+
return finishEntity(out) as PathAttachment2D;
|
|
240
|
+
})(),
|
|
241
|
+
);
|
|
232
242
|
|
|
233
243
|
solveSkeleton2DPathConstraint(skeleton, constraint({ mixRotate: 1, position: 10 }));
|
|
234
244
|
|
|
@@ -237,15 +247,19 @@ describe('solveSkeleton2DPathConstraint', () => {
|
|
|
237
247
|
});
|
|
238
248
|
|
|
239
249
|
it('aims each bone at the NEXT one in Chain mode, sampling every position before moving any', () => {
|
|
240
|
-
const skeleton = rig(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
250
|
+
const skeleton = rig(
|
|
251
|
+
2,
|
|
252
|
+
(() => {
|
|
253
|
+
const out = allocateEntity<PathAttachment2D>();
|
|
254
|
+
out.commands = [PathCommand.MOVE_TO, PathCommand.LINE_TO, PathCommand.LINE_TO];
|
|
255
|
+
out.kind = PathAttachment2DKind;
|
|
256
|
+
out.pointCount = 3;
|
|
257
|
+
out.skin = null;
|
|
258
|
+
out.vertices = new Float32Array([0, 0, 50, 0, 50, 50]);
|
|
259
|
+
out.winding = 'nonZero' as const;
|
|
260
|
+
return finishEntity(out) as PathAttachment2D;
|
|
261
|
+
})(),
|
|
262
|
+
);
|
|
249
263
|
|
|
250
264
|
solveSkeleton2DPathConstraint(
|
|
251
265
|
skeleton,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, PointAttachment2D } from '@flighthq/types/contract';
|
|
2
3
|
import { PointAttachment2DKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
@@ -26,7 +27,12 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
function point(x: number, y: number, rotation: number): PointAttachment2D {
|
|
29
|
-
|
|
30
|
+
const out = allocateEntity<PointAttachment2D>();
|
|
31
|
+
out.kind = PointAttachment2DKind;
|
|
32
|
+
out.rotation = rotation;
|
|
33
|
+
out.x = x;
|
|
34
|
+
out.y = y;
|
|
35
|
+
return finishEntity(out) as PointAttachment2D;
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
describe('computeSkeleton2DPointAttachmentPosition', () => {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, RegionAttachment2D } from '@flighthq/types/contract';
|
|
2
3
|
import { RegionAttachment2DKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
@@ -23,17 +24,17 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
function region(overrides: Partial<RegionAttachment2D> = {}): RegionAttachment2D {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
const out = allocateEntity<any>();
|
|
28
|
+
out.kind = RegionAttachment2DKind;
|
|
29
|
+
out.height = 2;
|
|
30
|
+
out.rotation = 0;
|
|
31
|
+
out.scaleX = 1;
|
|
32
|
+
out.scaleY = 1;
|
|
33
|
+
out.width = 4;
|
|
34
|
+
out.x = 0;
|
|
35
|
+
out.y = 0;
|
|
36
|
+
Object.assign(out, overrides);
|
|
37
|
+
return finishEntity(out) as RegionAttachment2D;
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
describe('computeSkeleton2DRegionAttachmentVertices', () => {
|
package/src/skeleton2d.test.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { createMatrix } from '@flighthq/geometry/contract';
|
|
2
3
|
import type { Bone2D, RegionAttachment2D, Slot2D } from '@flighthq/types/contract';
|
|
3
4
|
import { RegionAttachment2DKind, TransformMode2D } from '@flighthq/types/contract';
|
|
@@ -493,5 +494,15 @@ function testSlot(name: string, boneIndex: number): Slot2D {
|
|
|
493
494
|
}
|
|
494
495
|
|
|
495
496
|
function testRegion(name: string): RegionAttachment2D {
|
|
496
|
-
|
|
497
|
+
const out = allocateEntity<any>();
|
|
498
|
+
out.height = 0;
|
|
499
|
+
out.kind = RegionAttachment2DKind;
|
|
500
|
+
out.name = name;
|
|
501
|
+
out.rotation = 0;
|
|
502
|
+
out.scaleX = 1;
|
|
503
|
+
out.scaleY = 1;
|
|
504
|
+
out.width = 0;
|
|
505
|
+
out.x = 0;
|
|
506
|
+
out.y = 0;
|
|
507
|
+
return finishEntity(out) as RegionAttachment2D;
|
|
497
508
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, Skeleton2DConstraint } from '@flighthq/types/contract';
|
|
2
3
|
import { Skeleton2DConstraintKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
@@ -28,7 +29,10 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
function constraint(kind: string): Skeleton2DConstraint {
|
|
31
|
-
|
|
32
|
+
const out = allocateEntity<Skeleton2DConstraint>();
|
|
33
|
+
out.kind = kind;
|
|
34
|
+
out.mix = 1;
|
|
35
|
+
return finishEntity(out) as Skeleton2DConstraint;
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
// The registry is a module GLOBAL, deliberately: last-write-wins is what lets a caller replace a built-in
|
|
@@ -100,7 +104,13 @@ describe('solveSkeleton2DConstraints', () => {
|
|
|
100
104
|
seen = value;
|
|
101
105
|
});
|
|
102
106
|
const skeleton = createSkeleton2D([makeBone()]);
|
|
103
|
-
const rope =
|
|
107
|
+
const rope = (() => {
|
|
108
|
+
const out = allocateEntity<any>();
|
|
109
|
+
out.kind = 'acme.Rope';
|
|
110
|
+
out.mix = 0.25;
|
|
111
|
+
out.slack = 3;
|
|
112
|
+
return finishEntity(out) as Skeleton2DConstraint;
|
|
113
|
+
})();
|
|
104
114
|
|
|
105
115
|
solveSkeleton2DConstraints(skeleton, [rope]);
|
|
106
116
|
unregisterSkeleton2DConstraintSolver('acme.Rope');
|
package/src/slotDeform2D.test.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Attachment2D, MeshAttachment2D, Skin2D, Slot2D } from '@flighthq/types/contract';
|
|
2
3
|
import { MeshAttachment2DKind } from '@flighthq/types/contract';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
@@ -5,22 +6,22 @@ import { describe, expect, it } from 'vitest';
|
|
|
5
6
|
import { createSkin2D } from './skin2D';
|
|
6
7
|
import { getSkeleton2DSlotDeformOffsets, setSkeleton2DSlotDeform } from './slotDeform2D';
|
|
7
8
|
|
|
8
|
-
function mesh(pointCount: number): MeshAttachment2D {
|
|
9
|
-
const skin: Skin2D = createSkin2D(new Uint16Array(pointCount).fill(1), new Float32Array(pointCount * 4));
|
|
10
|
-
return {
|
|
11
|
-
kind: MeshAttachment2DKind,
|
|
12
|
-
skin,
|
|
13
|
-
triangles: new Uint16Array(),
|
|
14
|
-
uvs: new Float32Array(pointCount * 2),
|
|
15
|
-
vertexCount: pointCount,
|
|
16
|
-
vertices: null,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
9
|
function slot(attachment: Attachment2D | null): Slot2D {
|
|
21
10
|
return { attachment, boneIndex: 0, color: 0xffffffff, name: 's' };
|
|
22
11
|
}
|
|
23
12
|
|
|
13
|
+
function mesh(pointCount: number): MeshAttachment2D {
|
|
14
|
+
const skin: Skin2D = createSkin2D(new Uint16Array(pointCount).fill(1), new Float32Array(pointCount * 4));
|
|
15
|
+
const out = allocateEntity<MeshAttachment2D>();
|
|
16
|
+
out.kind = MeshAttachment2DKind;
|
|
17
|
+
out.skin = skin;
|
|
18
|
+
out.triangles = new Uint16Array();
|
|
19
|
+
out.uvs = new Float32Array(pointCount * 2);
|
|
20
|
+
out.vertexCount = pointCount;
|
|
21
|
+
out.vertices = null;
|
|
22
|
+
return finishEntity(out) as MeshAttachment2D;
|
|
23
|
+
}
|
|
24
|
+
|
|
24
25
|
describe('getSkeleton2DSlotDeformOffsets', () => {
|
|
25
26
|
it('returns the offsets when they were authored for the attachment now shown', () => {
|
|
26
27
|
const art = mesh(2);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import type { Bone2D, Skeleton2DTransformConstraint } from '@flighthq/types/contract';
|
|
2
3
|
import { Skeleton2DConstraintKind, TransformMode2D } from '@flighthq/types/contract';
|
|
3
4
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
@@ -32,25 +33,25 @@ function makeBone(overrides: Partial<Bone2D> = {}): Bone2D {
|
|
|
32
33
|
|
|
33
34
|
// Every channel off by default, so each test turns on exactly the one it is about.
|
|
34
35
|
function transform(overrides: Partial<Skeleton2DTransformConstraint> = {}): Skeleton2DTransformConstraint {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
36
|
+
const out = allocateEntity<any>();
|
|
37
|
+
out.boneIndices = [0];
|
|
38
|
+
out.kind = Skeleton2DConstraintKind.Transform as 'Skeleton2D.TransformConstraint';
|
|
39
|
+
out.mix = 1;
|
|
40
|
+
out.mixRotate = 0;
|
|
41
|
+
out.mixScaleX = 0;
|
|
42
|
+
out.mixScaleY = 0;
|
|
43
|
+
out.mixShearY = 0;
|
|
44
|
+
out.mixX = 0;
|
|
45
|
+
out.mixY = 0;
|
|
46
|
+
out.offsetRotation = 0;
|
|
47
|
+
out.offsetScaleX = 0;
|
|
48
|
+
out.offsetScaleY = 0;
|
|
49
|
+
out.offsetShearY = 0;
|
|
50
|
+
out.offsetX = 0;
|
|
51
|
+
out.offsetY = 0;
|
|
52
|
+
out.targetBoneIndex = 1;
|
|
53
|
+
Object.assign(out, overrides);
|
|
54
|
+
return finishEntity(out) as Skeleton2DTransformConstraint;
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
// This file registers a built-in solver into a module-global registry, so it restores whatever it found
|