@flighthq/collision 0.4.0-next.1663.d9c5746 → 0.4.0-next.1694.598ef6f
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/dist/collideContactManifold2D.d.ts +3 -0
- package/dist/collideContactManifold2D.d.ts.map +1 -0
- package/dist/{collideContactManifold.js → collideContactManifold2D.js} +6 -6
- package/dist/collideContactManifold2D.js.map +1 -0
- package/dist/collisionShapeValidation.d.ts +3 -3
- package/dist/collisionShapeValidation.d.ts.map +1 -1
- package/dist/collisionShapeValidation.js +6 -3
- package/dist/collisionShapeValidation.js.map +1 -1
- package/dist/collisionSupport2D.d.ts +12 -0
- package/dist/collisionSupport2D.d.ts.map +1 -0
- package/dist/collisionSupport2D.js +111 -0
- package/dist/collisionSupport2D.js.map +1 -0
- package/dist/contactFeatureId.js +1 -1
- package/dist/contactFeatureId.js.map +1 -1
- package/dist/contactManifold.d.ts +3 -3
- package/dist/contactManifold.d.ts.map +1 -1
- package/dist/contactManifold.js +2 -2
- package/dist/contactManifold.js.map +1 -1
- package/dist/contract.d.ts +8 -5
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +8 -5
- package/dist/contract.js.map +1 -1
- package/dist/convexVertices.d.ts +3 -3
- package/dist/convexVertices.d.ts.map +1 -1
- package/dist/convexVertices.js.map +1 -1
- package/dist/enableCollisionGuards.js +30 -11
- package/dist/enableCollisionGuards.js.map +1 -1
- package/dist/explainCollisionTest2D.d.ts +3 -0
- package/dist/explainCollisionTest2D.d.ts.map +1 -0
- package/dist/explainCollisionTest2D.js +38 -0
- package/dist/explainCollisionTest2D.js.map +1 -0
- package/dist/gjk2D.d.ts +4 -0
- package/dist/gjk2D.d.ts.map +1 -0
- package/dist/gjk2D.js +340 -0
- package/dist/gjk2D.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/manifold.d.ts +3 -3
- package/dist/manifold.d.ts.map +1 -1
- package/dist/manifold.js +2 -2
- package/dist/manifold.js.map +1 -1
- package/dist/pointContainment.d.ts +2 -2
- package/dist/pointContainment.d.ts.map +1 -1
- package/dist/pointContainment.js +3 -3
- package/dist/pointContainment.js.map +1 -1
- package/dist/raycastCollisionShape2D.d.ts +4 -0
- package/dist/raycastCollisionShape2D.d.ts.map +1 -0
- package/dist/{raycastCollisionShape.js → raycastCollisionShape2D.js} +7 -7
- package/dist/raycastCollisionShape2D.js.map +1 -0
- package/dist/registerBuiltInCollisionPairTests2D.d.ts +2 -0
- package/dist/registerBuiltInCollisionPairTests2D.d.ts.map +1 -0
- package/dist/registerBuiltInCollisionPairTests2D.js +32 -0
- package/dist/registerBuiltInCollisionPairTests2D.js.map +1 -0
- package/dist/segmentCollision.d.ts +6 -6
- package/dist/segmentCollision.d.ts.map +1 -1
- package/dist/segmentCollision.js +2 -2
- package/dist/segmentCollision.js.map +1 -1
- package/dist/shapeCollision.d.ts +11 -11
- package/dist/shapeCollision.d.ts.map +1 -1
- package/dist/shapeCollision.js +62 -65
- package/dist/shapeCollision.js.map +1 -1
- package/dist/shapeContact.d.ts +11 -11
- package/dist/shapeContact.d.ts.map +1 -1
- package/dist/shapeContact.js +12 -12
- package/dist/shapeContact.js.map +1 -1
- package/dist/sweepCollisionShape2D.d.ts +4 -0
- package/dist/sweepCollisionShape2D.d.ts.map +1 -0
- package/dist/{sweepCollisionShape.js → sweepCollisionShape2D.js} +10 -10
- package/dist/sweepCollisionShape2D.js.map +1 -0
- package/dist/testCollision2D.d.ts +4 -0
- package/dist/testCollision2D.d.ts.map +1 -0
- package/dist/testCollision2D.js +43 -0
- package/dist/testCollision2D.js.map +1 -0
- package/package.json +4 -4
- package/src/{collideContactManifold.test.ts → collideContactManifold2D.test.ts} +54 -54
- package/src/collisionShapeValidation.test.ts +13 -13
- package/src/collisionSupport2D.test.ts +166 -0
- package/src/contactManifold.test.ts +11 -11
- package/src/convexVertices.test.ts +4 -4
- package/src/enableCollisionGuards.test.ts +50 -15
- package/src/explainCollisionTest2D.test.ts +75 -0
- package/src/gjk2D.test.ts +219 -0
- package/src/manifold.test.ts +7 -7
- package/src/pointContainment.test.ts +45 -41
- package/src/{raycastCollisionShape.test.ts → raycastCollisionShape2D.test.ts} +26 -19
- package/src/registerBuiltInCollisionPairTests2D.test.ts +62 -0
- package/src/segmentCollision.test.ts +10 -10
- package/src/shapeCollision.test.ts +103 -103
- package/src/shapeContact.test.ts +76 -76
- package/src/{sweepCollisionShape.test.ts → sweepCollisionShape2D.test.ts} +26 -26
- package/src/testCollision2D.test.ts +175 -0
- package/dist/collideContactManifold.d.ts +0 -3
- package/dist/collideContactManifold.d.ts.map +0 -1
- package/dist/collideContactManifold.js.map +0 -1
- package/dist/explainCollisionTest.d.ts +0 -3
- package/dist/explainCollisionTest.d.ts.map +0 -1
- package/dist/explainCollisionTest.js +0 -21
- package/dist/explainCollisionTest.js.map +0 -1
- package/dist/raycastCollisionShape.d.ts +0 -4
- package/dist/raycastCollisionShape.d.ts.map +0 -1
- package/dist/raycastCollisionShape.js.map +0 -1
- package/dist/sweepCollisionShape.d.ts +0 -4
- package/dist/sweepCollisionShape.d.ts.map +0 -1
- package/dist/sweepCollisionShape.js.map +0 -1
- package/dist/testCollision.d.ts +0 -4
- package/dist/testCollision.d.ts.map +0 -1
- package/dist/testCollision.js +0 -97
- package/dist/testCollision.js.map +0 -1
- package/src/explainCollisionTest.test.ts +0 -52
- package/src/testCollision.test.ts +0 -97
package/dist/shapeContact.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { FEATURE_INDEX_LIMIT, packContactFeatureId } from './contactFeatureId';
|
|
2
|
-
import {
|
|
2
|
+
import { clearCollisionContactManifold2D } from './contactManifold';
|
|
3
3
|
import { writeAabbVertices, writeObbVertices } from './convexVertices';
|
|
4
|
-
import {
|
|
4
|
+
import { createCollisionManifold2D } from './manifold';
|
|
5
5
|
import { testCircleAabbCollision, testCircleCircleCollision, testCircleObbCollision, testCirclePolygonCollision, } from './shapeCollision';
|
|
6
6
|
// The 2D narrow-phase contact tests — the same ten manifold-bearing pairs as the `test*Collision`
|
|
7
7
|
// family, but resolving the full contact set instead of only the minimum-translation vector. Each
|
|
8
|
-
// writes an `out`
|
|
8
|
+
// writes an `out` CollisionContactManifold2D and returns whether the pair overlaps; the normal, depth,
|
|
9
9
|
// and touching-is-not-overlapping convention match `test*Collision` exactly.
|
|
10
10
|
//
|
|
11
11
|
// These are a strict superset of the lean tests and cost more: convex pairs run reference/incident
|
|
@@ -59,7 +59,7 @@ export function collideCircleAabbContactManifold(a, b, out) {
|
|
|
59
59
|
const scratch = acquireShapeContactScratch();
|
|
60
60
|
try {
|
|
61
61
|
if (!testCircleAabbCollision(a, b, scratch.leanManifold)) {
|
|
62
|
-
|
|
62
|
+
clearCollisionContactManifold2D(out);
|
|
63
63
|
return false;
|
|
64
64
|
}
|
|
65
65
|
return writeCircleContact(a.x, a.y, a.radius, out, scratch);
|
|
@@ -73,7 +73,7 @@ export function collideCircleCircleContactManifold(a, b, out) {
|
|
|
73
73
|
const scratch = acquireShapeContactScratch();
|
|
74
74
|
try {
|
|
75
75
|
if (!testCircleCircleCollision(a, b, scratch.leanManifold)) {
|
|
76
|
-
|
|
76
|
+
clearCollisionContactManifold2D(out);
|
|
77
77
|
return false;
|
|
78
78
|
}
|
|
79
79
|
return writeCircleContact(a.x, a.y, a.radius, out, scratch);
|
|
@@ -87,7 +87,7 @@ export function collideCircleObbContactManifold(a, b, out) {
|
|
|
87
87
|
const scratch = acquireShapeContactScratch();
|
|
88
88
|
try {
|
|
89
89
|
if (!testCircleObbCollision(a, b, scratch.leanManifold)) {
|
|
90
|
-
|
|
90
|
+
clearCollisionContactManifold2D(out);
|
|
91
91
|
return false;
|
|
92
92
|
}
|
|
93
93
|
return writeCircleContact(a.x, a.y, a.radius, out, scratch);
|
|
@@ -101,7 +101,7 @@ export function collideCirclePolygonContactManifold(a, b, out) {
|
|
|
101
101
|
const scratch = acquireShapeContactScratch();
|
|
102
102
|
try {
|
|
103
103
|
if (!testCirclePolygonCollision(a, b, scratch.leanManifold)) {
|
|
104
|
-
|
|
104
|
+
clearCollisionContactManifold2D(out);
|
|
105
105
|
return false;
|
|
106
106
|
}
|
|
107
107
|
return writeCircleContact(a.x, a.y, a.radius, out, scratch);
|
|
@@ -163,12 +163,12 @@ function convexContact(ax, an, bx, bn, out, scratch) {
|
|
|
163
163
|
// the face indices no longer pack into distinct feature ids, and a silently aliased id is worse than
|
|
164
164
|
// a reported miss: the solver would warm-start a contact from an unrelated contact's impulse.
|
|
165
165
|
if (an < 3 || bn < 3 || an > FEATURE_INDEX_LIMIT || bn > FEATURE_INDEX_LIMIT) {
|
|
166
|
-
|
|
166
|
+
clearCollisionContactManifold2D(out);
|
|
167
167
|
return false;
|
|
168
168
|
}
|
|
169
169
|
const separationA = maxFaceSeparation(ax, an, bx, bn, scratch);
|
|
170
170
|
if (separationA >= 0 || scratch.separationEdge < 0) {
|
|
171
|
-
|
|
171
|
+
clearCollisionContactManifold2D(out);
|
|
172
172
|
return false;
|
|
173
173
|
}
|
|
174
174
|
const edgeA = scratch.separationEdge;
|
|
@@ -176,7 +176,7 @@ function convexContact(ax, an, bx, bn, out, scratch) {
|
|
|
176
176
|
const normalAY = scratch.separationNormalY;
|
|
177
177
|
const separationB = maxFaceSeparation(bx, bn, ax, an, scratch);
|
|
178
178
|
if (separationB >= 0 || scratch.separationEdge < 0) {
|
|
179
|
-
|
|
179
|
+
clearCollisionContactManifold2D(out);
|
|
180
180
|
return false;
|
|
181
181
|
}
|
|
182
182
|
const edgeB = scratch.separationEdge;
|
|
@@ -209,7 +209,7 @@ function convexContact(ax, an, bx, bn, out, scratch) {
|
|
|
209
209
|
let tangentY = v2Y - v1Y;
|
|
210
210
|
const tangentLength = Math.sqrt(tangentX * tangentX + tangentY * tangentY);
|
|
211
211
|
if (tangentLength <= EPS) {
|
|
212
|
-
|
|
212
|
+
clearCollisionContactManifold2D(out);
|
|
213
213
|
return false;
|
|
214
214
|
}
|
|
215
215
|
tangentX /= tangentLength;
|
|
@@ -387,7 +387,7 @@ function createShapeContactScratch() {
|
|
|
387
387
|
return {
|
|
388
388
|
verticesA: new Float64Array(8),
|
|
389
389
|
verticesB: new Float64Array(8),
|
|
390
|
-
leanManifold:
|
|
390
|
+
leanManifold: createCollisionManifold2D(),
|
|
391
391
|
separationEdge: -1,
|
|
392
392
|
separationNormalX: 0,
|
|
393
393
|
separationNormalY: 0,
|
package/dist/shapeContact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shapeContact.js","sourceRoot":"","sources":["../src/shapeContact.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shapeContact.js","sourceRoot":"","sources":["../src/shapeContact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CollisionBuiltInShape2D, CollisionTimeOfImpact2D } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createCollisionTimeOfImpact2D(): CollisionTimeOfImpact2D;
|
|
3
|
+
export declare function sweepCollisionShape2D(shapeA: Readonly<CollisionBuiltInShape2D>, translationAX: number, translationAY: number, shapeB: Readonly<CollisionBuiltInShape2D>, translationBX: number, translationBY: number, out: CollisionTimeOfImpact2D, maxFraction?: number): boolean;
|
|
4
|
+
//# sourceMappingURL=sweepCollisionShape2D.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sweepCollisionShape2D.d.ts","sourceRoot":"","sources":["../src/sweepCollisionShape2D.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAOjG,wBAAgB,6BAA6B,IAAI,uBAAuB,CAEvE;AAMD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACzC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACzC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,uBAAuB,EAC5B,WAAW,SAAI,GACd,OAAO,CA+BT"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { collideContactManifold2D } from './collideContactManifold2D';
|
|
2
|
+
import { getCollisionShapeValidationStatus2D } from './collisionShapeValidation';
|
|
3
|
+
import { createCollisionContactManifold2D } from './contactManifold';
|
|
4
4
|
import { writeAabbVertices, writeObbVertices } from './convexVertices';
|
|
5
|
-
export function
|
|
5
|
+
export function createCollisionTimeOfImpact2D() {
|
|
6
6
|
return { fraction: 0, x: 0, y: 0, normalX: 0, normalY: 0 };
|
|
7
7
|
}
|
|
8
8
|
// Finds the exact first contact under LINEAR TRANSLATION of both shapes. Circle-circle uses its
|
|
9
9
|
// quadratic root, circle-polygon uses the polygon's rounded face/vertex expansion, and polygon pairs
|
|
10
10
|
// use continuous SAT. Those are the complete convex area-shape combinations supported by the discrete
|
|
11
11
|
// manifold dispatcher; point/segment and invalid/custom kinds fail closed and fully clear `out`.
|
|
12
|
-
export function
|
|
12
|
+
export function sweepCollisionShape2D(shapeA, translationAX, translationAY, shapeB, translationBX, translationBY, out, maxFraction = 1) {
|
|
13
13
|
clearCollisionTimeOfImpact(out);
|
|
14
14
|
if (!Number.isFinite(translationAX) ||
|
|
15
15
|
!Number.isFinite(translationAY) ||
|
|
@@ -17,8 +17,8 @@ export function sweepCollisionShape(shapeA, translationAX, translationAY, shapeB
|
|
|
17
17
|
!Number.isFinite(translationBY) ||
|
|
18
18
|
!Number.isFinite(maxFraction) ||
|
|
19
19
|
maxFraction < 0 ||
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
getCollisionShapeValidationStatus2D(shapeA) !== null ||
|
|
21
|
+
getCollisionShapeValidationStatus2D(shapeB) !== null) {
|
|
22
22
|
return false;
|
|
23
23
|
}
|
|
24
24
|
const scratch = acquireCollisionSweepScratch();
|
|
@@ -30,7 +30,7 @@ export function sweepCollisionShape(shapeA, translationAX, translationAY, shapeB
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
function sweepCollisionShapeWithScratch(shapeA, translationAX, translationAY, shapeB, translationBX, translationBY, out, maxFraction, scratch) {
|
|
33
|
-
if (
|
|
33
|
+
if (collideContactManifold2D(shapeA, shapeB, scratch.manifold)) {
|
|
34
34
|
out.normalX = canonicalZero(scratch.manifold.normalX);
|
|
35
35
|
out.normalY = canonicalZero(scratch.manifold.normalY);
|
|
36
36
|
writeShapeASupport(shapeA, 0, 0, out, scratch);
|
|
@@ -311,7 +311,7 @@ function acquireCollisionSweepScratch() {
|
|
|
311
311
|
}
|
|
312
312
|
function createCollisionSweepScratch() {
|
|
313
313
|
return {
|
|
314
|
-
manifold:
|
|
314
|
+
manifold: createCollisionContactManifold2D(),
|
|
315
315
|
verticesA: new Float64Array(8),
|
|
316
316
|
verticesB: new Float64Array(8),
|
|
317
317
|
projectionMin: 0,
|
|
@@ -326,4 +326,4 @@ function releaseCollisionSweepScratch(scratch) {
|
|
|
326
326
|
collisionSweepScratchPool.push(scratch);
|
|
327
327
|
}
|
|
328
328
|
const collisionSweepScratchPool = [createCollisionSweepScratch()];
|
|
329
|
-
//# sourceMappingURL=
|
|
329
|
+
//# sourceMappingURL=sweepCollisionShape2D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sweepCollisionShape2D.js","sourceRoot":"","sources":["../src/sweepCollisionShape2D.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CollisionManifold2D, CollisionShape2D, CollisionTestGuard2D } from '@flighthq/types/contract';
|
|
2
|
+
export declare function setCollisionTestGuard2D(guard: CollisionTestGuard2D | null): void;
|
|
3
|
+
export declare function testCollision2D(a: Readonly<CollisionShape2D>, b: Readonly<CollisionShape2D>, out: CollisionManifold2D): boolean;
|
|
4
|
+
//# sourceMappingURL=testCollision2D.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testCollision2D.d.ts","sourceRoot":"","sources":["../src/testCollision2D.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAM5G,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAEhF;AAqBD,wBAAgB,eAAe,CAC7B,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAC7B,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAC7B,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAeT"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getCollisionPairTest2D } from './collisionSupport2D';
|
|
2
|
+
import { testCollisionSupport2D } from './gjk2D';
|
|
3
|
+
// Installs the optional diagnostics seam consulted before testCollision2D dispatches its shape pair.
|
|
4
|
+
export function setCollisionTestGuard2D(guard) {
|
|
5
|
+
collisionTestGuard = guard;
|
|
6
|
+
}
|
|
7
|
+
// Generic narrow-phase test: writes the manifold pushing **A out of B** and returns whether the pair
|
|
8
|
+
// overlaps. Dispatch is a two-tier registry lookup, in this order:
|
|
9
|
+
//
|
|
10
|
+
// 1. A PAIR SPECIALIZATION registered for this ordered kind pair, then for the reverse pair with the
|
|
11
|
+
// normal negated. This is where the ten SAT pairs live once `registerBuiltInCollisionPairTests2D`
|
|
12
|
+
// has been called, and where a vendor puts a closed-form or better-conditioned path of its own.
|
|
13
|
+
// 2. The GENERIC support-function floor — GJK for overlap, EPA for penetration — which answers any
|
|
14
|
+
// pair whose two kinds both have a registered support function.
|
|
15
|
+
//
|
|
16
|
+
// Nothing is registered at module load, so a caller that registers neither gets `false` from every
|
|
17
|
+
// pair. That is the same sentinel as an unregistered vendor kind and the same one
|
|
18
|
+
// `explainCollisionTest2D` classifies, so a silent non-overlap always has one explanation to ask for
|
|
19
|
+
// rather than two. The direct per-pair functions remain the allocation-free hot path and need no
|
|
20
|
+
// registration at all.
|
|
21
|
+
//
|
|
22
|
+
// The reverse-key attempt is what keeps the registry to ten entries instead of twenty: a manifold is
|
|
23
|
+
// oriented A-out-of-B, so a specialization written for (circle, aabb) answers (aabb, circle) exactly
|
|
24
|
+
// mirrored. Negating is only valid on an OVERLAP — a miss leaves the manifold cleared, and negating a
|
|
25
|
+
// zero normal would write `-0` into a field a caller may compare against `0`.
|
|
26
|
+
export function testCollision2D(a, b, out) {
|
|
27
|
+
if (collisionTestGuard !== null)
|
|
28
|
+
collisionTestGuard(a, b);
|
|
29
|
+
const forward = getCollisionPairTest2D(a.kind, b.kind);
|
|
30
|
+
if (forward !== null)
|
|
31
|
+
return forward(a, b, out);
|
|
32
|
+
const reversed = getCollisionPairTest2D(b.kind, a.kind);
|
|
33
|
+
if (reversed !== null) {
|
|
34
|
+
if (!reversed(b, a, out))
|
|
35
|
+
return false;
|
|
36
|
+
out.normalX = -out.normalX;
|
|
37
|
+
out.normalY = -out.normalY;
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return testCollisionSupport2D(a, b, out);
|
|
41
|
+
}
|
|
42
|
+
let collisionTestGuard = null;
|
|
43
|
+
//# sourceMappingURL=testCollision2D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testCollision2D.js","sourceRoot":"","sources":["../src/testCollision2D.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD,qGAAqG;AACrG,MAAM,UAAU,uBAAuB,CAAC,KAAkC;IACxE,kBAAkB,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED,qGAAqG;AACrG,mEAAmE;AACnE,EAAE;AACF,sGAAsG;AACtG,sGAAsG;AACtG,oGAAoG;AACpG,oGAAoG;AACpG,oEAAoE;AACpE,EAAE;AACF,mGAAmG;AACnG,kFAAkF;AAClF,qGAAqG;AACrG,iGAAiG;AACjG,uBAAuB;AACvB,EAAE;AACF,qGAAqG;AACrG,qGAAqG;AACrG,sGAAsG;AACtG,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAC7B,CAA6B,EAC7B,CAA6B,EAC7B,GAAwB;IAExB,IAAI,kBAAkB,KAAK,IAAI;QAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3B,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,IAAI,kBAAkB,GAAgC,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/collision",
|
|
3
|
-
"version": "0.4.0-next.
|
|
3
|
+
"version": "0.4.0-next.1694.598ef6f",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/geometry": "0.4.0-next.
|
|
42
|
-
"@flighthq/log": "0.4.0-next.
|
|
43
|
-
"@flighthq/types": "0.4.0-next.
|
|
41
|
+
"@flighthq/geometry": "0.4.0-next.1694.598ef6f",
|
|
42
|
+
"@flighthq/log": "0.4.0-next.1694.598ef6f",
|
|
43
|
+
"@flighthq/types": "0.4.0-next.1694.598ef6f"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollisionShape2D } from '@flighthq/types/contract';
|
|
2
2
|
import { describe, expect, it } from 'vitest';
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { collideContactManifold2D } from './collideContactManifold2D';
|
|
5
|
+
import { createCollisionContactManifold2D } from './contactManifold';
|
|
6
6
|
import { collideAabbAabbContactManifold, collideCircleAabbContactManifold } from './shapeContact';
|
|
7
7
|
|
|
8
|
-
describe('
|
|
8
|
+
describe('collideContactManifold2D', () => {
|
|
9
9
|
it('dispatches a box-box pair to the same contact as the direct function', () => {
|
|
10
|
-
const dispatched =
|
|
11
|
-
const direct =
|
|
12
|
-
const box:
|
|
13
|
-
const ground:
|
|
10
|
+
const dispatched = createCollisionContactManifold2D();
|
|
11
|
+
const direct = createCollisionContactManifold2D();
|
|
12
|
+
const box: CollisionShape2D = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
|
|
13
|
+
const ground: CollisionShape2D = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
|
|
14
14
|
|
|
15
|
-
expect(
|
|
15
|
+
expect(collideContactManifold2D(box, ground, dispatched)).toBe(true);
|
|
16
16
|
expect(collideAabbAabbContactManifold(box, ground, direct)).toBe(true);
|
|
17
17
|
expect(dispatched.normalY).toBeCloseTo(direct.normalY);
|
|
18
18
|
expect(dispatched.depth).toBeCloseTo(direct.depth);
|
|
@@ -24,25 +24,25 @@ describe('collideContactManifold', () => {
|
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
it('dispatches a circle-box pair given in either kind order', () => {
|
|
27
|
-
const dispatched =
|
|
28
|
-
const direct =
|
|
29
|
-
const circle:
|
|
30
|
-
const ground:
|
|
27
|
+
const dispatched = createCollisionContactManifold2D();
|
|
28
|
+
const direct = createCollisionContactManifold2D();
|
|
29
|
+
const circle: CollisionShape2D = { kind: 'circle', x: 0, y: 0.9, radius: 1 };
|
|
30
|
+
const ground: CollisionShape2D = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
|
|
31
31
|
|
|
32
|
-
expect(
|
|
32
|
+
expect(collideContactManifold2D(circle, ground, dispatched)).toBe(true);
|
|
33
33
|
expect(collideCircleAabbContactManifold(circle, ground, direct)).toBe(true);
|
|
34
34
|
expect(dispatched.normalY).toBeCloseTo(direct.normalY);
|
|
35
35
|
expect(dispatched.points[0].y).toBeCloseTo(direct.points[0].y);
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
it('negates the normal but keeps the world-space points when the pair arrives reversed', () => {
|
|
39
|
-
const forward =
|
|
40
|
-
const reversed =
|
|
41
|
-
const circle:
|
|
42
|
-
const ground:
|
|
39
|
+
const forward = createCollisionContactManifold2D();
|
|
40
|
+
const reversed = createCollisionContactManifold2D();
|
|
41
|
+
const circle: CollisionShape2D = { kind: 'circle', x: 0, y: 0.9, radius: 1 };
|
|
42
|
+
const ground: CollisionShape2D = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
|
|
43
43
|
|
|
44
|
-
expect(
|
|
45
|
-
expect(
|
|
44
|
+
expect(collideContactManifold2D(circle, ground, forward)).toBe(true);
|
|
45
|
+
expect(collideContactManifold2D(ground, circle, reversed)).toBe(true);
|
|
46
46
|
expect(reversed.normalX).toBeCloseTo(-forward.normalX);
|
|
47
47
|
expect(reversed.normalY).toBeCloseTo(-forward.normalY);
|
|
48
48
|
expect(reversed.depth).toBeCloseTo(forward.depth);
|
|
@@ -53,13 +53,13 @@ describe('collideContactManifold', () => {
|
|
|
53
53
|
it('assigns identical feature ids to a mixed-kind pair given in either order', () => {
|
|
54
54
|
// Different kinds are ordered by kind rank before dispatch, so the same shape owns the reference
|
|
55
55
|
// face either way round and the ids are genuinely order-invariant.
|
|
56
|
-
const forward =
|
|
57
|
-
const reversed =
|
|
58
|
-
const box:
|
|
59
|
-
const ground:
|
|
56
|
+
const forward = createCollisionContactManifold2D();
|
|
57
|
+
const reversed = createCollisionContactManifold2D();
|
|
58
|
+
const box: CollisionShape2D = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
|
|
59
|
+
const ground: CollisionShape2D = { kind: 'polygon', points: [-5, -1, 5, -1, 5, 0, -5, 0] };
|
|
60
60
|
|
|
61
|
-
expect(
|
|
62
|
-
expect(
|
|
61
|
+
expect(collideContactManifold2D(box, ground, forward)).toBe(true);
|
|
62
|
+
expect(collideContactManifold2D(ground, box, reversed)).toBe(true);
|
|
63
63
|
expect(reversed.pointCount).toBe(forward.pointCount);
|
|
64
64
|
for (let i = 0; i < forward.pointCount; i++) {
|
|
65
65
|
expect(reversed.points[i].featureId).toBe(forward.points[i].featureId);
|
|
@@ -74,13 +74,13 @@ describe('collideContactManifold', () => {
|
|
|
74
74
|
// the normal negates and the depth is equal — while the points sit one penetration depth apart and
|
|
75
75
|
// carry different ids. Pinned deliberately: a caller keying a warm-start cache on these ids must
|
|
76
76
|
// supply a stable argument order, and this is the behaviour it would otherwise be surprised by.
|
|
77
|
-
const forward =
|
|
78
|
-
const reversed =
|
|
79
|
-
const box:
|
|
80
|
-
const ground:
|
|
77
|
+
const forward = createCollisionContactManifold2D();
|
|
78
|
+
const reversed = createCollisionContactManifold2D();
|
|
79
|
+
const box: CollisionShape2D = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
|
|
80
|
+
const ground: CollisionShape2D = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
|
|
81
81
|
|
|
82
|
-
expect(
|
|
83
|
-
expect(
|
|
82
|
+
expect(collideContactManifold2D(box, ground, forward)).toBe(true);
|
|
83
|
+
expect(collideContactManifold2D(ground, box, reversed)).toBe(true);
|
|
84
84
|
expect(reversed.normalX).toBeCloseTo(-forward.normalX);
|
|
85
85
|
expect(reversed.normalY).toBeCloseTo(-forward.normalY);
|
|
86
86
|
expect(reversed.depth).toBeCloseTo(forward.depth);
|
|
@@ -92,13 +92,13 @@ describe('collideContactManifold', () => {
|
|
|
92
92
|
it('is bit-for-bit repeatable for a fixed argument order', () => {
|
|
93
93
|
// The stability a warm-start cache actually depends on: the same call, made again, produces the
|
|
94
94
|
// same ids and the same points. Order-invariance is the caller's to arrange; repeatability is ours.
|
|
95
|
-
const first =
|
|
96
|
-
const second =
|
|
97
|
-
const box:
|
|
98
|
-
const ground:
|
|
95
|
+
const first = createCollisionContactManifold2D();
|
|
96
|
+
const second = createCollisionContactManifold2D();
|
|
97
|
+
const box: CollisionShape2D = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
|
|
98
|
+
const ground: CollisionShape2D = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
|
|
99
99
|
|
|
100
|
-
expect(
|
|
101
|
-
expect(
|
|
100
|
+
expect(collideContactManifold2D(box, ground, first)).toBe(true);
|
|
101
|
+
expect(collideContactManifold2D(box, ground, second)).toBe(true);
|
|
102
102
|
expect(second.pointCount).toBe(first.pointCount);
|
|
103
103
|
for (let i = 0; i < first.pointCount; i++) {
|
|
104
104
|
expect(second.points[i].featureId).toBe(first.points[i].featureId);
|
|
@@ -109,24 +109,24 @@ describe('collideContactManifold', () => {
|
|
|
109
109
|
});
|
|
110
110
|
|
|
111
111
|
it('reports area-less kinds as non-overlapping and carrying no contact', () => {
|
|
112
|
-
const out =
|
|
113
|
-
const segment:
|
|
114
|
-
const box:
|
|
115
|
-
expect(
|
|
112
|
+
const out = createCollisionContactManifold2D();
|
|
113
|
+
const segment: CollisionShape2D = { kind: 'segment', x0: 0, y0: 0, x1: 5, y1: 5 };
|
|
114
|
+
const box: CollisionShape2D = { kind: 'aabb', minX: 0, minY: 0, maxX: 10, maxY: 10 };
|
|
115
|
+
expect(collideContactManifold2D(segment, box, out)).toBe(false);
|
|
116
116
|
expect(out.overlapping).toBe(false);
|
|
117
117
|
expect(out.pointCount).toBe(0);
|
|
118
118
|
|
|
119
|
-
const point:
|
|
120
|
-
expect(
|
|
119
|
+
const point: CollisionShape2D = { kind: 'point', x: 1, y: 1 };
|
|
120
|
+
expect(collideContactManifold2D(point, box, out)).toBe(false);
|
|
121
121
|
expect(out.pointCount).toBe(0);
|
|
122
122
|
});
|
|
123
123
|
|
|
124
124
|
it('clears a previously populated manifold when the pair separates', () => {
|
|
125
|
-
const out =
|
|
126
|
-
const ground:
|
|
127
|
-
expect(
|
|
125
|
+
const out = createCollisionContactManifold2D();
|
|
126
|
+
const ground: CollisionShape2D = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
|
|
127
|
+
expect(collideContactManifold2D({ kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 }, ground, out)).toBe(true);
|
|
128
128
|
expect(out.pointCount).toBe(2);
|
|
129
|
-
expect(
|
|
129
|
+
expect(collideContactManifold2D({ kind: 'aabb', minX: 0, minY: 9, maxX: 2, maxY: 11 }, ground, out)).toBe(false);
|
|
130
130
|
expect(out.pointCount).toBe(0);
|
|
131
131
|
expect(out.depth).toBe(0);
|
|
132
132
|
// The NORMAL is the field a stale manifold reports most convincingly: a caller that checks the
|
|
@@ -140,9 +140,9 @@ describe('collideContactManifold', () => {
|
|
|
140
140
|
it('clears the same manifold when the following pair is a DIFFERENT kind that misses', () => {
|
|
141
141
|
// Reuse across kinds, because the miss path is per-kind: a pair that clears correctly within its own
|
|
142
142
|
// kind says nothing about the path a different kind takes to the same shared manifold.
|
|
143
|
-
const out =
|
|
143
|
+
const out = createCollisionContactManifold2D();
|
|
144
144
|
expect(
|
|
145
|
-
|
|
145
|
+
collideContactManifold2D(
|
|
146
146
|
{ kind: 'obb', halfH: 2, halfW: 2, rotation: 0.3, x: 0, y: 0 },
|
|
147
147
|
{ kind: 'obb', halfH: 2, halfW: 2, rotation: -0.2, x: 1, y: 1 },
|
|
148
148
|
out,
|
|
@@ -152,7 +152,7 @@ describe('collideContactManifold', () => {
|
|
|
152
152
|
expect(Math.abs(out.normalX) + Math.abs(out.normalY)).toBeGreaterThan(0);
|
|
153
153
|
|
|
154
154
|
expect(
|
|
155
|
-
|
|
155
|
+
collideContactManifold2D(
|
|
156
156
|
{ kind: 'circle', radius: 1, x: 0, y: 0 },
|
|
157
157
|
{ kind: 'circle', radius: 1, x: 50, y: 0 },
|
|
158
158
|
out,
|
|
@@ -165,9 +165,9 @@ describe('collideContactManifold', () => {
|
|
|
165
165
|
// Stated rather than assumed: clearing resets pointCount, not the two point slots behind it. A test
|
|
166
166
|
// asserting the slots were zeroed would be pinning an implementation detail the contract does not
|
|
167
167
|
// promise, and would fail the day the manifold reuses its allocation differently.
|
|
168
|
-
const out =
|
|
168
|
+
const out = createCollisionContactManifold2D();
|
|
169
169
|
expect(
|
|
170
|
-
|
|
170
|
+
collideContactManifold2D(
|
|
171
171
|
{ kind: 'aabb', maxX: 2, maxY: 2, minX: 0, minY: 0 },
|
|
172
172
|
{ kind: 'aabb', maxX: 3, maxY: 3, minX: 1, minY: 1 },
|
|
173
173
|
out,
|
|
@@ -176,7 +176,7 @@ describe('collideContactManifold', () => {
|
|
|
176
176
|
const populated = out.points.map((point) => ({ x: point.x, y: point.y }));
|
|
177
177
|
|
|
178
178
|
expect(
|
|
179
|
-
|
|
179
|
+
collideContactManifold2D(
|
|
180
180
|
{ kind: 'aabb', maxX: 1, maxY: 1, minX: 0, minY: 0 },
|
|
181
181
|
{ kind: 'aabb', maxX: 41, maxY: 41, minX: 40, minY: 40 },
|
|
182
182
|
out,
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollisionShape2D } from '@flighthq/types/contract';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { getCollisionPolygonValidationStatus2D, getCollisionShapeValidationStatus2D } from './collisionShapeValidation';
|
|
4
4
|
|
|
5
|
-
describe('
|
|
5
|
+
describe('getCollisionPolygonValidationStatus2D', () => {
|
|
6
6
|
it('distinguishes valid, degenerate, and non-convex polygons', () => {
|
|
7
|
-
expect(
|
|
8
|
-
expect(
|
|
9
|
-
expect(
|
|
10
|
-
expect(
|
|
7
|
+
expect(getCollisionPolygonValidationStatus2D([0, 0, 2, 0, 2, 2, 0, 2])).toBeNull();
|
|
8
|
+
expect(getCollisionPolygonValidationStatus2D([0, 0, 1, 1])).toBe('degenerate-shape');
|
|
9
|
+
expect(getCollisionPolygonValidationStatus2D([0, 0, 1, 0, 2, 0])).toBe('degenerate-shape');
|
|
10
|
+
expect(getCollisionPolygonValidationStatus2D([0, 0, 2, 0, 1, 1, 2, 2, 0, 2])).toBe('non-convex-polygon');
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
describe('
|
|
14
|
+
describe('getCollisionShapeValidationStatus2D', () => {
|
|
15
15
|
it('rejects every degenerate manifold shape', () => {
|
|
16
|
-
const shapes:
|
|
16
|
+
const shapes: CollisionShape2D[] = [
|
|
17
17
|
{ kind: 'circle', x: 0, y: 0, radius: 0 },
|
|
18
18
|
{ kind: 'aabb', minX: 1, minY: 0, maxX: 1, maxY: 2 },
|
|
19
19
|
{ kind: 'obb', x: 0, y: 0, halfW: 1, halfH: 0, rotation: 0 },
|
|
20
20
|
{ kind: 'polygon', points: [0, 0, 1, 1] },
|
|
21
21
|
{ kind: 'segment', x0: 1, y0: 1, x1: 1, y1: 1 },
|
|
22
22
|
];
|
|
23
|
-
for (const shape of shapes) expect(
|
|
23
|
+
for (const shape of shapes) expect(getCollisionShapeValidationStatus2D(shape)).toBe('degenerate-shape');
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
it('reports area-less and unknown kinds as unsupported', () => {
|
|
27
|
-
expect(
|
|
28
|
-
expect(
|
|
27
|
+
expect(getCollisionShapeValidationStatus2D({ kind: 'point', x: 0, y: 0 })).toBe('unsupported-shape-kind');
|
|
28
|
+
expect(getCollisionShapeValidationStatus2D({ kind: 'segment', x0: 0, y0: 0, x1: 1, y1: 1 })).toBe(
|
|
29
29
|
'unsupported-shape-kind',
|
|
30
30
|
);
|
|
31
|
-
expect(
|
|
31
|
+
expect(getCollisionShapeValidationStatus2D({ kind: 'acme.capsule' } as unknown as CollisionShape2D)).toBe(
|
|
32
32
|
'unsupported-shape-kind',
|
|
33
33
|
);
|
|
34
34
|
});
|