@flighthq/collision 0.4.0-next.1663.d9c5746 → 0.4.0-next.1695.181dea5

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.
Files changed (112) hide show
  1. package/dist/collideContactManifold2D.d.ts +3 -0
  2. package/dist/collideContactManifold2D.d.ts.map +1 -0
  3. package/dist/{collideContactManifold.js → collideContactManifold2D.js} +6 -6
  4. package/dist/collideContactManifold2D.js.map +1 -0
  5. package/dist/collisionShapeValidation.d.ts +3 -3
  6. package/dist/collisionShapeValidation.d.ts.map +1 -1
  7. package/dist/collisionShapeValidation.js +6 -3
  8. package/dist/collisionShapeValidation.js.map +1 -1
  9. package/dist/collisionSupport2D.d.ts +12 -0
  10. package/dist/collisionSupport2D.d.ts.map +1 -0
  11. package/dist/collisionSupport2D.js +111 -0
  12. package/dist/collisionSupport2D.js.map +1 -0
  13. package/dist/contactFeatureId.js +1 -1
  14. package/dist/contactFeatureId.js.map +1 -1
  15. package/dist/contactManifold.d.ts +3 -3
  16. package/dist/contactManifold.d.ts.map +1 -1
  17. package/dist/contactManifold.js +2 -2
  18. package/dist/contactManifold.js.map +1 -1
  19. package/dist/contract.d.ts +8 -5
  20. package/dist/contract.d.ts.map +1 -1
  21. package/dist/contract.js +8 -5
  22. package/dist/contract.js.map +1 -1
  23. package/dist/convexVertices.d.ts +3 -3
  24. package/dist/convexVertices.d.ts.map +1 -1
  25. package/dist/convexVertices.js.map +1 -1
  26. package/dist/enableCollisionGuards.js +30 -11
  27. package/dist/enableCollisionGuards.js.map +1 -1
  28. package/dist/explainCollisionTest2D.d.ts +3 -0
  29. package/dist/explainCollisionTest2D.d.ts.map +1 -0
  30. package/dist/explainCollisionTest2D.js +38 -0
  31. package/dist/explainCollisionTest2D.js.map +1 -0
  32. package/dist/gjk2D.d.ts +4 -0
  33. package/dist/gjk2D.d.ts.map +1 -0
  34. package/dist/gjk2D.js +340 -0
  35. package/dist/gjk2D.js.map +1 -0
  36. package/dist/index.d.ts +4 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +4 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/manifold.d.ts +3 -3
  41. package/dist/manifold.d.ts.map +1 -1
  42. package/dist/manifold.js +2 -2
  43. package/dist/manifold.js.map +1 -1
  44. package/dist/pointContainment.d.ts +2 -2
  45. package/dist/pointContainment.d.ts.map +1 -1
  46. package/dist/pointContainment.js +3 -3
  47. package/dist/pointContainment.js.map +1 -1
  48. package/dist/raycastCollisionShape2D.d.ts +4 -0
  49. package/dist/raycastCollisionShape2D.d.ts.map +1 -0
  50. package/dist/{raycastCollisionShape.js → raycastCollisionShape2D.js} +7 -7
  51. package/dist/raycastCollisionShape2D.js.map +1 -0
  52. package/dist/registerBuiltInCollisionPairTests2D.d.ts +2 -0
  53. package/dist/registerBuiltInCollisionPairTests2D.d.ts.map +1 -0
  54. package/dist/registerBuiltInCollisionPairTests2D.js +32 -0
  55. package/dist/registerBuiltInCollisionPairTests2D.js.map +1 -0
  56. package/dist/segmentCollision.d.ts +6 -6
  57. package/dist/segmentCollision.d.ts.map +1 -1
  58. package/dist/segmentCollision.js +2 -2
  59. package/dist/segmentCollision.js.map +1 -1
  60. package/dist/shapeCollision.d.ts +11 -11
  61. package/dist/shapeCollision.d.ts.map +1 -1
  62. package/dist/shapeCollision.js +62 -65
  63. package/dist/shapeCollision.js.map +1 -1
  64. package/dist/shapeContact.d.ts +11 -11
  65. package/dist/shapeContact.d.ts.map +1 -1
  66. package/dist/shapeContact.js +12 -12
  67. package/dist/shapeContact.js.map +1 -1
  68. package/dist/sweepCollisionShape2D.d.ts +4 -0
  69. package/dist/sweepCollisionShape2D.d.ts.map +1 -0
  70. package/dist/{sweepCollisionShape.js → sweepCollisionShape2D.js} +10 -10
  71. package/dist/sweepCollisionShape2D.js.map +1 -0
  72. package/dist/testCollision2D.d.ts +4 -0
  73. package/dist/testCollision2D.d.ts.map +1 -0
  74. package/dist/testCollision2D.js +43 -0
  75. package/dist/testCollision2D.js.map +1 -0
  76. package/package.json +4 -4
  77. package/src/{collideContactManifold.test.ts → collideContactManifold2D.test.ts} +54 -54
  78. package/src/collisionShapeValidation.test.ts +13 -13
  79. package/src/collisionSupport2D.test.ts +166 -0
  80. package/src/contactManifold.test.ts +11 -11
  81. package/src/convexVertices.test.ts +4 -4
  82. package/src/enableCollisionGuards.test.ts +50 -15
  83. package/src/explainCollisionTest2D.test.ts +75 -0
  84. package/src/gjk2D.test.ts +219 -0
  85. package/src/manifold.test.ts +7 -7
  86. package/src/pointContainment.test.ts +45 -41
  87. package/src/{raycastCollisionShape.test.ts → raycastCollisionShape2D.test.ts} +26 -19
  88. package/src/registerBuiltInCollisionPairTests2D.test.ts +62 -0
  89. package/src/segmentCollision.test.ts +10 -10
  90. package/src/shapeCollision.test.ts +103 -103
  91. package/src/shapeContact.test.ts +76 -76
  92. package/src/{sweepCollisionShape.test.ts → sweepCollisionShape2D.test.ts} +26 -26
  93. package/src/testCollision2D.test.ts +175 -0
  94. package/dist/collideContactManifold.d.ts +0 -3
  95. package/dist/collideContactManifold.d.ts.map +0 -1
  96. package/dist/collideContactManifold.js.map +0 -1
  97. package/dist/explainCollisionTest.d.ts +0 -3
  98. package/dist/explainCollisionTest.d.ts.map +0 -1
  99. package/dist/explainCollisionTest.js +0 -21
  100. package/dist/explainCollisionTest.js.map +0 -1
  101. package/dist/raycastCollisionShape.d.ts +0 -4
  102. package/dist/raycastCollisionShape.d.ts.map +0 -1
  103. package/dist/raycastCollisionShape.js.map +0 -1
  104. package/dist/sweepCollisionShape.d.ts +0 -4
  105. package/dist/sweepCollisionShape.d.ts.map +0 -1
  106. package/dist/sweepCollisionShape.js.map +0 -1
  107. package/dist/testCollision.d.ts +0 -4
  108. package/dist/testCollision.d.ts.map +0 -1
  109. package/dist/testCollision.js +0 -97
  110. package/dist/testCollision.js.map +0 -1
  111. package/src/explainCollisionTest.test.ts +0 -52
  112. package/src/testCollision.test.ts +0 -97
@@ -0,0 +1,175 @@
1
+ import type { CollisionShape2D } from '@flighthq/types/contract';
2
+ import { describe, expect, it } from 'vitest';
3
+
4
+ import {
5
+ getCollisionPairTest2D,
6
+ registerBuiltInCollisionSupports2D,
7
+ registerCollisionPairTest2D,
8
+ registerCollisionSupport2D,
9
+ supportCollisionCircle2D,
10
+ } from './collisionSupport2D';
11
+ import { clearCollisionManifold2D, createCollisionManifold2D } from './manifold';
12
+ import { registerBuiltInCollisionPairTests2D } from './registerBuiltInCollisionPairTests2D';
13
+ import { setCollisionTestGuard2D, testCollision2D } from './testCollision2D';
14
+
15
+ // Both doors, because this dispatcher is the one place their precedence is observable. Nothing is
16
+ // registered at module load, so a caller that opens neither gets `false` from every pair — which is what
17
+ // `answers nothing at all until a door is opened` below pins down.
18
+ registerBuiltInCollisionPairTests2D();
19
+ registerBuiltInCollisionSupports2D();
20
+
21
+ afterEach(() => {
22
+ setCollisionTestGuard2D(null);
23
+ });
24
+
25
+ describe('setCollisionTestGuard2D', () => {
26
+ it('installs and removes the invalid-input diagnostics seam', () => {
27
+ const seenKinds: string[] = [];
28
+ const out = createCollisionManifold2D();
29
+ const valid: CollisionShape2D = { kind: 'circle', radius: 1, x: 0, y: 0 };
30
+ const degenerate: CollisionShape2D = { kind: 'circle', radius: 0, x: 0, y: 0 };
31
+ setCollisionTestGuard2D((a, b) => seenKinds.push(a.kind, b.kind));
32
+ testCollision2D(degenerate, valid, out);
33
+ expect(seenKinds).toEqual(['circle', 'circle']);
34
+
35
+ setCollisionTestGuard2D(null);
36
+ testCollision2D(degenerate, valid, out);
37
+ expect(seenKinds).toHaveLength(2);
38
+ });
39
+ });
40
+
41
+ describe('testCollision2D', () => {
42
+ it('dispatches a circle-circle pair to the same result as the direct test', () => {
43
+ const out = createCollisionManifold2D();
44
+ const a: CollisionShape2D = { kind: 'circle', x: 0, y: 0, radius: 1 };
45
+ const b: CollisionShape2D = { kind: 'circle', x: 1, y: 0, radius: 1 };
46
+ expect(testCollision2D(a, b, out)).toBe(true);
47
+ expect(out.normalX).toBeCloseTo(-1);
48
+ expect(out.depth).toBeCloseTo(1);
49
+ });
50
+
51
+ it('dispatches an aabb-circle pair in either argument order with a sign-consistent normal', () => {
52
+ const forward = createCollisionManifold2D();
53
+ const reversed = createCollisionManifold2D();
54
+ const circle: CollisionShape2D = { kind: 'circle', x: 15, y: 5, radius: 7 };
55
+ const box: CollisionShape2D = { kind: 'aabb', minX: 0, minY: 0, maxX: 10, maxY: 10 };
56
+
57
+ // circle vs box: pushes the circle (A) off the box -> +X.
58
+ expect(testCollision2D(circle, box, forward)).toBe(true);
59
+ expect(forward.normalX).toBeCloseTo(1);
60
+ expect(forward.depth).toBeCloseTo(2);
61
+
62
+ // box vs circle: pushes the box (A) off the circle -> the opposite direction, -X.
63
+ expect(testCollision2D(box, circle, reversed)).toBe(true);
64
+ expect(reversed.normalX).toBeCloseTo(-1);
65
+ expect(reversed.depth).toBeCloseTo(2);
66
+ });
67
+
68
+ it('dispatches an obb-polygon pair', () => {
69
+ const out = createCollisionManifold2D();
70
+ const obb: CollisionShape2D = { kind: 'obb', x: 0, y: 0, halfW: 3, halfH: 3, rotation: 0 };
71
+ const polygon: CollisionShape2D = { kind: 'polygon', points: [2, -1, 6, -1, 6, 3, 2, 3] };
72
+ expect(testCollision2D(obb, polygon, out)).toBe(true);
73
+ expect(out.normalX).toBeCloseTo(-1);
74
+ expect(out.depth).toBeCloseTo(1);
75
+ });
76
+
77
+ it('reports no overlap for disjoint shapes', () => {
78
+ const out = createCollisionManifold2D();
79
+ const a: CollisionShape2D = { kind: 'circle', x: 0, y: 0, radius: 1 };
80
+ const b: CollisionShape2D = { kind: 'aabb', minX: 10, minY: 10, maxX: 12, maxY: 12 };
81
+ expect(testCollision2D(a, b, out)).toBe(false);
82
+ expect(out.overlapping).toBe(false);
83
+ });
84
+
85
+ it('reports no manifold for the area-less segment and point kinds', () => {
86
+ const out = createCollisionManifold2D();
87
+ const segment: CollisionShape2D = { kind: 'segment', x0: 0, y0: 0, x1: 1, y1: 1 };
88
+ const point: CollisionShape2D = { kind: 'point', x: 0, y: 0 };
89
+ const circle: CollisionShape2D = { kind: 'circle', x: 0, y: 0, radius: 1 };
90
+ expect(testCollision2D(segment, circle, out)).toBe(false);
91
+ expect(testCollision2D(circle, point, out)).toBe(false);
92
+ expect(out.overlapping).toBe(false);
93
+ });
94
+
95
+ it('answers nothing at all until a door is opened', () => {
96
+ const out = createCollisionManifold2D();
97
+ // A vendor kind with neither a support function nor a pair specialization. This is also the state
98
+ // EVERY pair is in before the registrars run, which is the behavioural cost of making the ten SAT
99
+ // pairs tree-shakable: registration is the whole of the dispatcher's knowledge.
100
+ const capsule: CollisionShape2D = { kind: 'acme.capsule' };
101
+ const circle: CollisionShape2D = { kind: 'circle', x: 0, y: 0, radius: 1 };
102
+ expect(testCollision2D(capsule, circle, out)).toBe(false);
103
+ expect(out).toEqual({ depth: 0, normalX: 0, normalY: 0, overlapping: false });
104
+ });
105
+
106
+ it('prefers a registered specialization over the generic support floor, in both orders', () => {
107
+ const out = createCollisionManifold2D();
108
+ const calls: string[] = [];
109
+ // Registered for ONE order only. The reverse call must reach the same specialization with its
110
+ // arguments swapped and the normal negated, which is what keeps the registry at ten entries.
111
+ registerCollisionPairTest2D('circle', 'acme.wall', (_a, _b, manifold) => {
112
+ calls.push('specialized');
113
+ manifold.overlapping = true;
114
+ manifold.normalX = 1;
115
+ manifold.normalY = 0;
116
+ manifold.depth = 4;
117
+ return true;
118
+ });
119
+ const circle: CollisionShape2D = { kind: 'circle', x: 0, y: 0, radius: 1 };
120
+ const wall: CollisionShape2D = { kind: 'acme.wall' };
121
+
122
+ expect(testCollision2D(circle, wall, out)).toBe(true);
123
+ expect(out.normalX).toBe(1);
124
+
125
+ expect(testCollision2D(wall, circle, out)).toBe(true);
126
+ expect(out.normalX).toBe(-1);
127
+ expect(out.depth).toBe(4);
128
+ expect(calls).toEqual(['specialized', 'specialized']);
129
+ });
130
+
131
+ it('does not negate a zero normal when the reverse specialization reports no overlap', () => {
132
+ const out = createCollisionManifold2D();
133
+ registerCollisionPairTest2D('circle', 'acme.void', (_a, _b, manifold) => {
134
+ clearCollisionManifold2D(manifold);
135
+ return false;
136
+ });
137
+ const circle: CollisionShape2D = { kind: 'circle', x: 0, y: 0, radius: 1 };
138
+
139
+ expect(testCollision2D({ kind: 'acme.void' }, circle, out)).toBe(false);
140
+ // Negating unconditionally would leave `-0` here, which is not `0` under Object.is and would reach
141
+ // any caller comparing the field against a literal zero.
142
+ expect(Object.is(out.normalX, 0)).toBe(true);
143
+ expect(Object.is(out.normalY, 0)).toBe(true);
144
+ });
145
+
146
+ it('falls through to GJK for a pair with supports but no specialization', () => {
147
+ const out = createCollisionManifold2D();
148
+ // A vendor kind whose support function is a circle's: registering ONE function makes it work against
149
+ // every other registered kind immediately, which is the whole claim of the support floor.
150
+ registerCollisionSupport2D('acme.blob', supportCollisionCircle2D);
151
+ const blob = { kind: 'acme.blob', x: 1, y: 0, radius: 1 } as CollisionShape2D;
152
+ const box: CollisionShape2D = { kind: 'aabb', minX: -1, minY: -1, maxX: 0.5, maxY: 1 };
153
+
154
+ expect(getCollisionPairTest2D('acme.blob', 'aabb')).toBeNull();
155
+ expect(testCollision2D(blob, box, out)).toBe(true);
156
+ expect(out.depth).toBeGreaterThan(0);
157
+ });
158
+
159
+ it('fully clears one reused manifold across hit, miss, unsupported, and hit calls', () => {
160
+ const out = createCollisionManifold2D();
161
+ const circle: CollisionShape2D = { kind: 'circle', radius: 2, x: 0, y: 0 };
162
+ expect(testCollision2D(circle, { kind: 'circle', radius: 2, x: 1, y: 0 }, out)).toBe(true);
163
+ expect(out).toMatchObject({ depth: 3, normalX: -1, normalY: 0, overlapping: true });
164
+
165
+ expect(testCollision2D(circle, { kind: 'circle', radius: 2, x: 10, y: 0 }, out)).toBe(false);
166
+ expect(out).toEqual({ depth: 0, normalX: 0, normalY: 0, overlapping: false });
167
+
168
+ expect(testCollision2D({ kind: 'point', x: 0, y: 0 }, circle, out)).toBe(false);
169
+ expect(out).toEqual({ depth: 0, normalX: 0, normalY: 0, overlapping: false });
170
+
171
+ expect(testCollision2D(circle, { kind: 'aabb', maxX: 1, maxY: 1, minX: -1, minY: -1 }, out)).toBe(true);
172
+ expect(out.overlapping).toBe(true);
173
+ expect(out.depth).toBeGreaterThan(0);
174
+ });
175
+ });
@@ -1,3 +0,0 @@
1
- import type { CollisionContactManifold, CollisionShape } from '@flighthq/types/contract';
2
- export declare function collideContactManifold(a: Readonly<CollisionShape>, b: Readonly<CollisionShape>, out: CollisionContactManifold): boolean;
3
- //# sourceMappingURL=collideContactManifold.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collideContactManifold.d.ts","sourceRoot":"","sources":["../src/collideContactManifold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAsB,MAAM,0BAA0B,CAAC;AA0C7G,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAiET"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"collideContactManifold.js","sourceRoot":"","sources":["../src/collideContactManifold.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { CollisionShape, CollisionTestExplanation } from '@flighthq/types/contract';
2
- export declare function explainCollisionTest(a: Readonly<CollisionShape>, b: Readonly<CollisionShape>): CollisionTestExplanation;
3
- //# sourceMappingURL=explainCollisionTest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"explainCollisionTest.d.ts","sourceRoot":"","sources":["../src/explainCollisionTest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAQzF,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC1B,wBAAwB,CAY1B"}
@@ -1,21 +0,0 @@
1
- import { getCollisionShapeValidationStatus } from './collisionShapeValidation';
2
- import { testCollision } from './testCollision';
3
- // Pure diagnostic twin of testCollision. It classifies invalid and unsupported inputs before
4
- // running the ordinary dispatcher, so callers can distinguish its silent false sentinel from a
5
- // legitimate separated pair without retaining state or enabling guards.
6
- export function explainCollisionTest(a, b) {
7
- const statusA = getCollisionShapeValidationStatus(a);
8
- if (statusA !== null)
9
- return { kind: a.kind, overlapping: false, shapeIndex: 0, status: statusA };
10
- const statusB = getCollisionShapeValidationStatus(b);
11
- if (statusB !== null)
12
- return { kind: b.kind, overlapping: false, shapeIndex: 1, status: statusB };
13
- const overlapping = testCollision(a, b, { depth: 0, normalX: 0, normalY: 0, overlapping: false });
14
- return {
15
- kind: null,
16
- overlapping,
17
- shapeIndex: null,
18
- status: overlapping ? 'overlapping' : 'separated',
19
- };
20
- }
21
- //# sourceMappingURL=explainCollisionTest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"explainCollisionTest.js","sourceRoot":"","sources":["../src/explainCollisionTest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,6FAA6F;AAC7F,+FAA+F;AAC/F,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAClC,CAA2B,EAC3B,CAA2B;IAE3B,MAAM,OAAO,GAAG,iCAAiC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClG,MAAM,OAAO,GAAG,iCAAiC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClG,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,OAAO;QACL,IAAI,EAAE,IAAI;QACV,WAAW;QACX,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW;KAClD,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { CollisionRaycastHit, CollisionShape } from '@flighthq/types/contract';
2
- export declare function createCollisionRaycastHit(): CollisionRaycastHit;
3
- export declare function raycastCollisionShape(shape: Readonly<CollisionShape>, originX: number, originY: number, directionX: number, directionY: number, out: CollisionRaycastHit, maxFraction?: number): boolean;
4
- //# sourceMappingURL=raycastCollisionShape.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"raycastCollisionShape.d.ts","sourceRoot":"","sources":["../src/raycastCollisionShape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAOpF,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D;AAKD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,mBAAmB,EACxB,WAAW,SAA2B,GACrC,OAAO,CAqFT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"raycastCollisionShape.js","sourceRoot":"","sources":["../src/raycastCollisionShape.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,MAAM,UAAU,yBAAyB;IACvC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,sGAAsG;AACtG,uGAAuG;AACvG,iGAAiG;AACjG,MAAM,UAAU,qBAAqB,CACnC,KAA+B,EAC/B,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,GAAwB,EACxB,WAAW,GAAG,MAAM,CAAC,iBAAiB;IAEtC,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QACzB,WAAW,GAAG,CAAC,EACf,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,8BAA8B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5D,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,sBAAsB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IACjF,IAAI,CAAC,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhD,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,aAAa,CAClB,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,MAAM,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,GAAG,CACJ,CAAC;YACJ,KAAK,MAAM;gBACT,OAAO,UAAU,CACf,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,WAAW,EACX,GAAG,CACJ,CAAC;YACJ,KAAK,KAAK;gBACR,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAChG,KAAK,SAAS;gBACZ,OAAO,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAC3G,KAAK,SAAS;gBACZ,OAAO,cAAc,CACnB,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,EAAE,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,GAAG,EACH,OAAO,CACR,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO,YAAY,CACjB,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,CAAC,EACP,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,GAAG,CACJ,CAAC;YACJ;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,OAAe,EACf,OAAe,EACf,MAAc,EACd,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,sBAA8B,EAC9B,WAAmB,EACnB,GAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,UAAU,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,UAAU,CAAC;IACrD,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,sBAAsB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9G,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,sBAAsB,CAAC;IAClF,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,CAAC,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,MAAM,CAAC,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CACjB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,WAAmB,EACnB,GAAwB;IAExB,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,IAAI,GAAG,IAAI;QACX,IAAI,GAAG,IAAI,EACX,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,WAAW,CAAC;IACxB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;QACvC,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;QACxC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,KAAK,GAAG,MAAM,CAAC;YACf,MAAM,GAAG,IAAI,CAAC;YACd,YAAY,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAClB,KAAK,GAAG,KAAK,CAAC;YACd,OAAO,GAAG,YAAY,CAAC;YACvB,OAAO,GAAG,CAAC,CAAC;QACd,CAAC;QACD,IAAI,MAAM,GAAG,KAAK;YAAE,KAAK,GAAG,MAAM,CAAC;QACnC,IAAI,KAAK,GAAG,KAAK;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;QACvC,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;QACxC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,KAAK,GAAG,MAAM,CAAC;YACf,MAAM,GAAG,IAAI,CAAC;YACd,YAAY,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAClB,KAAK,GAAG,KAAK,CAAC;YACd,OAAO,GAAG,CAAC,CAAC;YACZ,OAAO,GAAG,YAAY,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,GAAG,KAAK;YAAE,KAAK,GAAG,MAAM,CAAC;QACnC,IAAI,KAAK,GAAG,KAAK;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,WAAW;QAAE,OAAO,KAAK,CAAC;IACnD,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CACjB,KAAyD,EACzD,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,WAAmB,EACnB,GAAwB,EACxB,OAAuB;IAEvB,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAChC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,OAAO,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;IACpD,MAAM,eAAe,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;IAC5D,MAAM,eAAe,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;IAC7D,IACE,CAAC,UAAU,CACT,CAAC,KAAK,CAAC,KAAK,EACZ,CAAC,KAAK,CAAC,KAAK,EACZ,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,OAAO,CAAC,QAAQ,CACjB,EACD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;IAChF,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5G,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,MAAyB,EACzB,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,WAAmB,EACnB,GAAwB,EACxB,OAAuB;IAEvB,IAAI,mCAAmC,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,YAAY,GAAG,WAAW,CAAC;IAC/B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACjC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,IACE,CAAC,uBAAuB,CACtB,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,EACjD,YAAY,EACZ,OAAO,CAAC,QAAQ,CACjB,EACD,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAAE,SAAS;QAC5B,IAAI,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;QAC7B,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;QAC9B,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QAChC,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACtG,OAAO,GAAG,CAAC,OAAO,CAAC;YACnB,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtC,WAAW,GAAG,OAAO,CAAC;QACtB,WAAW,GAAG,OAAO,CAAC;QACtB,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAAyB,EAAE,KAAa,EAAE,GAA6B;IAC5F,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CACrB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,sBAA8B,EAC9B,WAAmB,EACnB,GAAwB,EACxB,OAAuB;IAEvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/G,IACE,CAAC,uBAAuB,CACtB,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,OAAO,CAAC,QAAQ,CACjB,EACD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,GAAG,CAAC,OAAO,CAAC;QACnB,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAC9B,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,sBAA8B,EAC9B,WAAmB,EACnB,GAAsB;IAEtB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAClF,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,gBAAgB,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;QAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,gBAAgB;YAAE,OAAO,KAAK,CAAC;QACzF,MAAM,KAAK,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,sBAAsB,CAAC;QACrF,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,UAAU,CAAC,GAAG,sBAAsB,CAAC;QACpG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW;YAAE,OAAO,KAAK,CAAC;QACpD,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC;IACnE,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC;IACjF,IACE,QAAQ,GAAG,CAAC,gBAAgB;QAC5B,QAAQ,GAAG,WAAW;QACtB,YAAY,GAAG,CAAC,gBAAgB;QAChC,YAAY,GAAG,CAAC,GAAG,gBAAgB,EACnC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,GAAG,CAAC,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CACnB,MAAc,EACd,MAAc,EACd,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,sBAA8B,EAC9B,WAAmB,EACnB,GAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,sBAAsB,CAAC;IACxF,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC7C,oGAAoG;IACpG,oFAAoF;IACpF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC;IAC7E,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,OAAO;QAAE,OAAO,KAAK,CAAC;IACrE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CACtB,GAAwB,EACxB,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,QAAgB,EAChB,OAAe,EACf,OAAe;IAEf,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxB,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IACxC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IACxC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,GAAwB;IAC/C,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;IACjB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;AAClB,CAAC;AAQD,SAAS,qBAAqB;IAC5B,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,oBAAoB,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;QACL,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAC7D,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACtB,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAuB;IACpD,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,kBAAkB,GAAqB,CAAC,oBAAoB,EAAE,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { CollisionShape, CollisionTimeOfImpact } from '@flighthq/types/contract';
2
- export declare function createCollisionTimeOfImpact(): CollisionTimeOfImpact;
3
- export declare function sweepCollisionShape(shapeA: Readonly<CollisionShape>, translationAX: number, translationAY: number, shapeB: Readonly<CollisionShape>, translationBX: number, translationBY: number, out: CollisionTimeOfImpact, maxFraction?: number): boolean;
4
- //# sourceMappingURL=sweepCollisionShape.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sweepCollisionShape.d.ts","sourceRoot":"","sources":["../src/sweepCollisionShape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAOtF,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAMD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,qBAAqB,EAC1B,WAAW,SAAI,GACd,OAAO,CA+BT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sweepCollisionShape.js","sourceRoot":"","sources":["../src/sweepCollisionShape.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { CollisionManifold, CollisionShape, CollisionTestGuard } from '@flighthq/types/contract';
2
- export declare function setCollisionTestGuard(guard: CollisionTestGuard | null): void;
3
- export declare function testCollision(a: Readonly<CollisionShape>, b: Readonly<CollisionShape>, out: CollisionManifold): boolean;
4
- //# sourceMappingURL=testCollision.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testCollision.d.ts","sourceRoot":"","sources":["../src/testCollision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EAEd,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAE5E;AASD,wBAAgB,aAAa,CAC3B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAmET"}
@@ -1,97 +0,0 @@
1
- import { clearCollisionManifold } from './manifold';
2
- import { testAabbAabbCollision, testAabbObbCollision, testAabbPolygonCollision, testCircleAabbCollision, testCircleCircleCollision, testCircleObbCollision, testCirclePolygonCollision, testObbObbCollision, testObbPolygonCollision, testPolygonPolygonCollision, } from './shapeCollision';
3
- // Installs the optional diagnostics seam consulted before testCollision dispatches its shape pair.
4
- export function setCollisionTestGuard(guard) {
5
- collisionTestGuard = guard;
6
- }
7
- // Generic narrow-phase test: dispatches on the two shapes' `kind`s to the matching per-pair test and
8
- // writes the manifold pushing **A out of B**. Shapes are canonically ordered by kind rank before
9
- // dispatch so only the ten manifold-bearing pairs (circle/aabb/obb/polygon) need explicit branches;
10
- // when the arguments arrive in the reversed order the shared normal is negated to preserve the
11
- // A-out-of-B orientation. Area-less kinds (`segment`, `point`) and unknown kinds carry no manifold —
12
- // the pair is reported as non-overlapping; use `getCollisionShapeContainsPoint` or the
13
- // `testSegment*Collision` queries for those. The direct per-pair functions remain the hot path.
14
- export function testCollision(a, b, out) {
15
- if (collisionTestGuard !== null)
16
- collisionTestGuard(a, b);
17
- const rankA = shapeKindRank(a.kind);
18
- const rankB = shapeKindRank(b.kind);
19
- if (rankA < 0 || rankB < 0) {
20
- clearCollisionManifold(out);
21
- return false;
22
- }
23
- const swapped = rankA > rankB;
24
- const lo = swapped ? b : a;
25
- const hi = swapped ? a : b;
26
- let overlapping = false;
27
- switch (lo.kind) {
28
- case 'circle':
29
- switch (hi.kind) {
30
- case 'circle':
31
- overlapping = testCircleCircleCollision(lo, hi, out);
32
- break;
33
- case 'aabb':
34
- overlapping = testCircleAabbCollision(lo, hi, out);
35
- break;
36
- case 'obb':
37
- overlapping = testCircleObbCollision(lo, hi, out);
38
- break;
39
- case 'polygon':
40
- overlapping = testCirclePolygonCollision(lo, hi, out);
41
- break;
42
- }
43
- break;
44
- case 'aabb':
45
- switch (hi.kind) {
46
- case 'aabb':
47
- overlapping = testAabbAabbCollision(lo, hi, out);
48
- break;
49
- case 'obb':
50
- overlapping = testAabbObbCollision(lo, hi, out);
51
- break;
52
- case 'polygon':
53
- overlapping = testAabbPolygonCollision(lo, hi, out);
54
- break;
55
- }
56
- break;
57
- case 'obb':
58
- switch (hi.kind) {
59
- case 'obb':
60
- overlapping = testObbObbCollision(lo, hi, out);
61
- break;
62
- case 'polygon':
63
- overlapping = testObbPolygonCollision(lo, hi, out);
64
- break;
65
- }
66
- break;
67
- case 'polygon':
68
- if (hi.kind === 'polygon') {
69
- overlapping = testPolygonPolygonCollision(lo, hi, out);
70
- }
71
- break;
72
- }
73
- if (overlapping && swapped) {
74
- out.normalX = -out.normalX;
75
- out.normalY = -out.normalY;
76
- }
77
- return overlapping;
78
- }
79
- // Canonical dispatch rank of a shape kind, or -1 for kinds that carry no manifold (segment, point,
80
- // and any custom kind). Ordering the pair by rank collapses the 4x4 kind matrix to its ten lower-
81
- // triangular manifold pairs.
82
- function shapeKindRank(kind) {
83
- switch (kind) {
84
- case 'circle':
85
- return 0;
86
- case 'aabb':
87
- return 1;
88
- case 'obb':
89
- return 2;
90
- case 'polygon':
91
- return 3;
92
- default:
93
- return -1;
94
- }
95
- }
96
- let collisionTestGuard = null;
97
- //# sourceMappingURL=testCollision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testCollision.js","sourceRoot":"","sources":["../src/testCollision.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import type { CollisionShape } from '@flighthq/types/contract';
2
-
3
- import { explainCollisionTest } from './explainCollisionTest';
4
-
5
- describe('explainCollisionTest', () => {
6
- it('distinguishes overlap from ordinary separation', () => {
7
- const circle: CollisionShape = { kind: 'circle', radius: 2, x: 0, y: 0 };
8
- expect(explainCollisionTest(circle, { kind: 'circle', radius: 2, x: 1, y: 0 })).toEqual({
9
- kind: null,
10
- overlapping: true,
11
- shapeIndex: null,
12
- status: 'overlapping',
13
- });
14
- expect(explainCollisionTest(circle, { kind: 'circle', radius: 2, x: 10, y: 0 })).toEqual({
15
- kind: null,
16
- overlapping: false,
17
- shapeIndex: null,
18
- status: 'separated',
19
- });
20
- });
21
-
22
- it('identifies which input is degenerate or non-convex', () => {
23
- const circle: CollisionShape = { kind: 'circle', radius: 2, x: 0, y: 0 };
24
- expect(explainCollisionTest(circle, { kind: 'circle', radius: 0, x: 0, y: 0 })).toEqual({
25
- kind: 'circle',
26
- overlapping: false,
27
- shapeIndex: 1,
28
- status: 'degenerate-shape',
29
- });
30
- expect(explainCollisionTest({ kind: 'polygon', points: [0, 0, 2, 0, 1, 1, 2, 2, 0, 2] }, circle)).toEqual({
31
- kind: 'polygon',
32
- overlapping: false,
33
- shapeIndex: 0,
34
- status: 'non-convex-polygon',
35
- });
36
- });
37
-
38
- it('explains the silent false sentinel for area-less and unknown kinds', () => {
39
- const circle: CollisionShape = { kind: 'circle', radius: 2, x: 0, y: 0 };
40
- expect(explainCollisionTest({ kind: 'point', x: 0, y: 0 }, circle)).toMatchObject({
41
- kind: 'point',
42
- shapeIndex: 0,
43
- status: 'unsupported-shape-kind',
44
- });
45
- const custom = { kind: 'acme.capsule' } as unknown as CollisionShape;
46
- expect(explainCollisionTest(circle, custom)).toMatchObject({
47
- kind: 'acme.capsule',
48
- shapeIndex: 1,
49
- status: 'unsupported-shape-kind',
50
- });
51
- });
52
- });
@@ -1,97 +0,0 @@
1
- import type { CollisionShape } from '@flighthq/types/contract';
2
- import { describe, expect, it } from 'vitest';
3
-
4
- import { createCollisionManifold } from './manifold';
5
- import { setCollisionTestGuard, testCollision } from './testCollision';
6
-
7
- afterEach(() => {
8
- setCollisionTestGuard(null);
9
- });
10
-
11
- describe('setCollisionTestGuard', () => {
12
- it('installs and removes the invalid-input diagnostics seam', () => {
13
- const seenKinds: string[] = [];
14
- const out = createCollisionManifold();
15
- const valid: CollisionShape = { kind: 'circle', radius: 1, x: 0, y: 0 };
16
- const degenerate: CollisionShape = { kind: 'circle', radius: 0, x: 0, y: 0 };
17
- setCollisionTestGuard((a, b) => seenKinds.push(a.kind, b.kind));
18
- testCollision(degenerate, valid, out);
19
- expect(seenKinds).toEqual(['circle', 'circle']);
20
-
21
- setCollisionTestGuard(null);
22
- testCollision(degenerate, valid, out);
23
- expect(seenKinds).toHaveLength(2);
24
- });
25
- });
26
-
27
- describe('testCollision', () => {
28
- it('dispatches a circle-circle pair to the same result as the direct test', () => {
29
- const out = createCollisionManifold();
30
- const a: CollisionShape = { kind: 'circle', x: 0, y: 0, radius: 1 };
31
- const b: CollisionShape = { kind: 'circle', x: 1, y: 0, radius: 1 };
32
- expect(testCollision(a, b, out)).toBe(true);
33
- expect(out.normalX).toBeCloseTo(-1);
34
- expect(out.depth).toBeCloseTo(1);
35
- });
36
-
37
- it('dispatches an aabb-circle pair in either argument order with a sign-consistent normal', () => {
38
- const forward = createCollisionManifold();
39
- const reversed = createCollisionManifold();
40
- const circle: CollisionShape = { kind: 'circle', x: 15, y: 5, radius: 7 };
41
- const box: CollisionShape = { kind: 'aabb', minX: 0, minY: 0, maxX: 10, maxY: 10 };
42
-
43
- // circle vs box: pushes the circle (A) off the box -> +X.
44
- expect(testCollision(circle, box, forward)).toBe(true);
45
- expect(forward.normalX).toBeCloseTo(1);
46
- expect(forward.depth).toBeCloseTo(2);
47
-
48
- // box vs circle: pushes the box (A) off the circle -> the opposite direction, -X.
49
- expect(testCollision(box, circle, reversed)).toBe(true);
50
- expect(reversed.normalX).toBeCloseTo(-1);
51
- expect(reversed.depth).toBeCloseTo(2);
52
- });
53
-
54
- it('dispatches an obb-polygon pair', () => {
55
- const out = createCollisionManifold();
56
- const obb: CollisionShape = { kind: 'obb', x: 0, y: 0, halfW: 3, halfH: 3, rotation: 0 };
57
- const polygon: CollisionShape = { kind: 'polygon', points: [2, -1, 6, -1, 6, 3, 2, 3] };
58
- expect(testCollision(obb, polygon, out)).toBe(true);
59
- expect(out.normalX).toBeCloseTo(-1);
60
- expect(out.depth).toBeCloseTo(1);
61
- });
62
-
63
- it('reports no overlap for disjoint shapes', () => {
64
- const out = createCollisionManifold();
65
- const a: CollisionShape = { kind: 'circle', x: 0, y: 0, radius: 1 };
66
- const b: CollisionShape = { kind: 'aabb', minX: 10, minY: 10, maxX: 12, maxY: 12 };
67
- expect(testCollision(a, b, out)).toBe(false);
68
- expect(out.overlapping).toBe(false);
69
- });
70
-
71
- it('reports no manifold for the area-less segment and point kinds', () => {
72
- const out = createCollisionManifold();
73
- const segment: CollisionShape = { kind: 'segment', x0: 0, y0: 0, x1: 1, y1: 1 };
74
- const point: CollisionShape = { kind: 'point', x: 0, y: 0 };
75
- const circle: CollisionShape = { kind: 'circle', x: 0, y: 0, radius: 1 };
76
- expect(testCollision(segment, circle, out)).toBe(false);
77
- expect(testCollision(circle, point, out)).toBe(false);
78
- expect(out.overlapping).toBe(false);
79
- });
80
-
81
- it('fully clears one reused manifold across hit, miss, unsupported, and hit calls', () => {
82
- const out = createCollisionManifold();
83
- const circle: CollisionShape = { kind: 'circle', radius: 2, x: 0, y: 0 };
84
- expect(testCollision(circle, { kind: 'circle', radius: 2, x: 1, y: 0 }, out)).toBe(true);
85
- expect(out).toMatchObject({ depth: 3, normalX: -1, normalY: 0, overlapping: true });
86
-
87
- expect(testCollision(circle, { kind: 'circle', radius: 2, x: 10, y: 0 }, out)).toBe(false);
88
- expect(out).toEqual({ depth: 0, normalX: 0, normalY: 0, overlapping: false });
89
-
90
- expect(testCollision({ kind: 'point', x: 0, y: 0 }, circle, out)).toBe(false);
91
- expect(out).toEqual({ depth: 0, normalX: 0, normalY: 0, overlapping: false });
92
-
93
- expect(testCollision(circle, { kind: 'aabb', maxX: 1, maxY: 1, minX: -1, minY: -1 }, out)).toBe(true);
94
- expect(out.overlapping).toBe(true);
95
- expect(out.depth).toBeGreaterThan(0);
96
- });
97
- });