@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.
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
package/dist/gjk2D.js ADDED
@@ -0,0 +1,340 @@
1
+ import { getCollisionSupport2D } from './collisionSupport2D';
2
+ import { clearCollisionManifold2D } from './manifold';
3
+ // The generic narrow-phase floor: GJK for overlap, EPA for the penetration that follows it.
4
+ //
5
+ // Both read the two shapes only through their registered support functions, so a kind reaches every
6
+ // other registered kind the moment its support exists. This is the O(N) core the pair matrix is O(N²)
7
+ // against, and it is a FLOOR rather than a replacement — it yields one normal and one depth, where a
8
+ // resting box needs two contact points, which is why the SAT-plus-clipping pairs keep their place
9
+ // above it.
10
+ //
11
+ // The Minkowski difference `A - B` is the object both algorithms actually work on, and neither ever
12
+ // builds it: its support in direction `d` is `supportA(d) - supportB(-d)`, one call each. The origin
13
+ // lies inside it exactly when the shapes overlap, and the shortest vector from the origin to its
14
+ // boundary is the penetration.
15
+ // The generic manifold path: GJK for overlap, then EPA for the minimum-translation normal and depth.
16
+ // Writes the normal oriented to push **A out of B**, matching every specialized pair.
17
+ //
18
+ // Returns false — and clears `out` — when either kind has no registered support, when the shapes are
19
+ // disjoint, or when EPA cannot find a boundary to measure at all.
20
+ //
21
+ // ACCURACY, on a curved boundary: the DEPTH converges to the EPA tolerance, but the NORMAL only to
22
+ // roughly its square root — around 1e-5 in practice. That is geometry rather than a defect. EPA
23
+ // terminates on a distance, and distance is second-order insensitive to angular error: tilting the
24
+ // normal by theta on a circle of radius r changes the distance by only `r * theta^2 / 2`, so driving
25
+ // the distance to 1e-10 still leaves the direction 1e-5 out. Chasing it would mean a tolerance at
26
+ // double-precision noise. On a polytope there is no curve and the answer is exact.
27
+ //
28
+ // This is one of the two things that make a pair specialization worth registering — the other being
29
+ // speed — and circle pairs have an exact closed form, so the built-in specializations are what a
30
+ // caller actually gets.
31
+ export function testCollisionSupport2D(a, b, out) {
32
+ clearCollisionManifold2D(out);
33
+ const supportA = getCollisionSupport2D(a.kind);
34
+ const supportB = getCollisionSupport2D(b.kind);
35
+ if (supportA === null || supportB === null)
36
+ return false;
37
+ if (runGjk2D(a, supportA, b, supportB) !== GJK_OVERLAPPING)
38
+ return false;
39
+ return writeEpa2DPenetration(a, supportA, b, supportB, out);
40
+ }
41
+ // Whether two shapes overlap, by GJK. Returns false when either kind has no registered support — an
42
+ // unregistered kind cannot be tested, and reporting "not overlapping" is the package's standing
43
+ // sentinel for that, which `explainCollisionTest2D` classifies and the guard warns about.
44
+ //
45
+ // Touching counts as NOT overlapping, matching every other test in the package: the search stops as
46
+ // soon as a support point fails to reach past the origin, and a point exactly on it fails that test.
47
+ export function testCollisionSupportOverlap2D(a, b) {
48
+ const supportA = getCollisionSupport2D(a.kind);
49
+ const supportB = getCollisionSupport2D(b.kind);
50
+ if (supportA === null || supportB === null)
51
+ return false;
52
+ return runGjk2D(a, supportA, b, supportB) === GJK_OVERLAPPING;
53
+ }
54
+ // Expands the terminating GJK simplex out to the Minkowski boundary, finding the closest edge to the
55
+ // origin. That edge's outward normal and distance ARE the minimum translation.
56
+ //
57
+ // The sign is the part worth stating. The closest boundary point sits at `normal * distance` from the
58
+ // origin, and translating A by the NEGATIVE of that vector moves the origin onto the boundary — which
59
+ // is the definition of just separating. So the manifold normal, which must push A out of B, is the
60
+ // negated EPA normal.
61
+ function writeEpa2DPenetration(a, supportA, b, supportB, out) {
62
+ let count = 3;
63
+ for (let i = 0; i < 6; i += 1)
64
+ polytope[i] = simplex[i];
65
+ // Hoisted out of the loop so running out of iterations returns the BEST EDGE FOUND rather than
66
+ // nothing. GJK has already decided these shapes overlap; an EPA that gives up would make the two
67
+ // entry points contradict each other about that, which is worse than a normal converged one
68
+ // iteration short. Only a polytope with no measurable edge at all is a real failure.
69
+ let bestDistance = Number.POSITIVE_INFINITY;
70
+ let bestAxisX = 0;
71
+ let bestAxisY = 0;
72
+ // The winning edge's TRUE outward normal, kept alongside the canonicalized axis the comparison uses.
73
+ // The canonical form exists to make the choice deterministic; it is not the answer, because
74
+ // canonicalizing throws away a sign that is geometrically correct everywhere except in a tie.
75
+ let bestNormalX = 0;
76
+ let bestNormalY = 0;
77
+ let found = false;
78
+ for (let iteration = 0; iteration < MAX_EPA_ITERATIONS; iteration += 1) {
79
+ let bestEdge = -1;
80
+ let searchNormalX = 0;
81
+ let searchNormalY = 0;
82
+ bestDistance = Number.POSITIVE_INFINITY;
83
+ for (let i = 0; i < count; i += 1) {
84
+ const j = (i + 1) % count;
85
+ const ax = polytope[i * 2];
86
+ const ay = polytope[i * 2 + 1];
87
+ const edgeX = polytope[j * 2] - ax;
88
+ const edgeY = polytope[j * 2 + 1] - ay;
89
+ let normalX = edgeY;
90
+ let normalY = -edgeX;
91
+ const length = Math.sqrt(normalX * normalX + normalY * normalY);
92
+ if (length <= EPSILON)
93
+ continue;
94
+ normalX /= length;
95
+ normalY /= length;
96
+ let distance = ax * normalX + ay * normalY;
97
+ if (distance < 0) {
98
+ normalX = -normalX;
99
+ normalY = -normalY;
100
+ distance = -distance;
101
+ }
102
+ // The axis is CANONICALIZED into a half-plane before it is compared, exactly as the incumbent
103
+ // SAT core does: flipped so x is positive, or so y is when x vanishes. That makes the comparison
104
+ // independent of edge winding and of which shape arrived as A — and it deliberately DISCARDS the
105
+ // outward sign, which the centroid step below restores. Without it, two opposite edges at the
106
+ // same distance are two different axes and whichever the scan reaches first wins.
107
+ let axisX = normalX;
108
+ let axisY = normalY;
109
+ if (axisX < -AXIS_EPSILON || (Math.abs(axisX) <= AXIS_EPSILON && axisY < 0)) {
110
+ axisX = -axisX;
111
+ axisY = -axisY;
112
+ }
113
+ if (!found || isPreferredEpaAxis(distance, axisX, axisY, bestDistance, bestAxisX, bestAxisY)) {
114
+ bestDistance = distance;
115
+ bestAxisX = axisX;
116
+ bestAxisY = axisY;
117
+ bestNormalX = normalX;
118
+ bestNormalY = normalY;
119
+ searchNormalX = normalX;
120
+ searchNormalY = normalY;
121
+ bestEdge = j;
122
+ found = true;
123
+ }
124
+ }
125
+ if (bestEdge < 0)
126
+ break;
127
+ writeMinkowskiSupport2D(a, supportA, b, supportB, searchNormalX, searchNormalY, minkowski);
128
+ const reach = minkowski[0] * searchNormalX + minkowski[1] * searchNormalY;
129
+ // Converged: the boundary in this direction is where the polytope already says it is, so no new
130
+ // vertex can push the edge further out.
131
+ if (reach - bestDistance <= EPA_TOLERANCE || count + 1 >= MAX_POLYTOPE_VERTICES)
132
+ break;
133
+ // Insert the new vertex on the closest edge, splitting it in two.
134
+ for (let i = count; i > bestEdge; i -= 1) {
135
+ polytope[i * 2] = polytope[(i - 1) * 2];
136
+ polytope[i * 2 + 1] = polytope[(i - 1) * 2 + 1];
137
+ }
138
+ polytope[bestEdge * 2] = minkowski[0];
139
+ polytope[bestEdge * 2 + 1] = minkowski[1];
140
+ count += 1;
141
+ }
142
+ if (!found)
143
+ return false;
144
+ // The outward normal EPA derived is the answer almost everywhere: for a genuine penetration the
145
+ // minimum-translation direction is geometrically determined, and overriding it would be wrong.
146
+ //
147
+ // A TIE is the exception, and the only place a sign is actually free to choose. It happens when the
148
+ // difference is as deep the other way — two opposite edges the same distance from the origin — and
149
+ // then whichever edge the scan reached first would decide, which makes the answer depend on argument
150
+ // order. One extra support call detects it, and only then does the incumbent's rule apply: the normal
151
+ // points from B toward A, read off the Minkowski difference's own interior, which IS
152
+ // `centroidA - centroidB` without either shape having to expose a centroid.
153
+ writeMinkowskiSupport2D(a, supportA, b, supportB, -bestNormalX, -bestNormalY, minkowski);
154
+ const opposite = -(minkowski[0] * bestNormalX + minkowski[1] * bestNormalY);
155
+ let normalX = bestNormalX;
156
+ let normalY = bestNormalY;
157
+ if (Math.abs(opposite - bestDistance) <= TIE_TOLERANCE) {
158
+ writeMinkowskiInterior2D(a, supportA, b, supportB, interior);
159
+ if (bestAxisX * interior[0] + bestAxisY * interior[1] < 0) {
160
+ normalX = -bestAxisX;
161
+ normalY = -bestAxisY;
162
+ }
163
+ else {
164
+ normalX = bestAxisX;
165
+ normalY = bestAxisY;
166
+ }
167
+ // The manifold normal is the negated EPA normal, so flip back into EPA's sense before the write
168
+ // below negates it again.
169
+ normalX = -normalX;
170
+ normalY = -normalY;
171
+ }
172
+ out.overlapping = true;
173
+ out.normalX = -normalX;
174
+ out.normalY = -normalY;
175
+ out.depth = bestDistance;
176
+ return true;
177
+ }
178
+ // Whether a candidate axis beats the incumbent one: strictly shallower wins, and an exact tie is
179
+ // broken lexicographically on the canonicalized axis. The mirror of the SAT core's `isPreferredAxis`,
180
+ // and it exists for the same reason — a tie resolved by scan order makes the answer depend on which
181
+ // shape was passed first.
182
+ function isPreferredEpaAxis(distance, axisX, axisY, bestDistance, bestAxisX, bestAxisY) {
183
+ if (distance < bestDistance - AXIS_EPSILON)
184
+ return true;
185
+ if (Math.abs(distance - bestDistance) > AXIS_EPSILON)
186
+ return false;
187
+ if (axisX > bestAxisX + AXIS_EPSILON)
188
+ return true;
189
+ return Math.abs(axisX - bestAxisX) <= AXIS_EPSILON && axisY > bestAxisY;
190
+ }
191
+ // An interior point of the Minkowski difference, as the mean of its supports along the four axes.
192
+ // Equal to `centroidA - centroidB` for a symmetric shape and close enough for any convex one, since
193
+ // only its DIRECTION is read.
194
+ function writeMinkowskiInterior2D(a, supportA, b, supportB, out) {
195
+ out[0] = 0;
196
+ out[1] = 0;
197
+ for (let i = 0; i < 4; i += 1) {
198
+ writeMinkowskiSupport2D(a, supportA, b, supportB, INTERIOR_AXES[i * 2], INTERIOR_AXES[i * 2 + 1], minkowski);
199
+ out[0] += minkowski[0];
200
+ out[1] += minkowski[1];
201
+ }
202
+ out[0] /= 4;
203
+ out[1] /= 4;
204
+ }
205
+ // Runs GJK until it encloses the origin or proves it cannot, leaving the final simplex in `simplex`.
206
+ // Returns `GJK_OVERLAPPING` or `GJK_SEPARATED`.
207
+ //
208
+ // The search direction starts from the vector between the two shapes' first support points rather than
209
+ // from a fixed axis, so a pair that is already far apart on one axis is rejected in the first
210
+ // iteration instead of walking there.
211
+ function runGjk2D(a, supportA, b, supportB) {
212
+ writeMinkowskiSupport2D(a, supportA, b, supportB, 1, 0, minkowski);
213
+ simplex[0] = minkowski[0];
214
+ simplex[1] = minkowski[1];
215
+ let count = 1;
216
+ let directionX = -simplex[0];
217
+ let directionY = -simplex[1];
218
+ for (let iteration = 0; iteration < MAX_GJK_ITERATIONS; iteration += 1) {
219
+ if (directionX === 0 && directionY === 0) {
220
+ // The origin is ON the simplex. Touching, not overlapping — the same answer every other test in
221
+ // the package gives for a pair that merely grazes.
222
+ return GJK_SEPARATED;
223
+ }
224
+ writeMinkowskiSupport2D(a, supportA, b, supportB, directionX, directionY, minkowski);
225
+ if (minkowski[0] * directionX + minkowski[1] * directionY <= 0)
226
+ return GJK_SEPARATED;
227
+ simplex[count * 2] = minkowski[0];
228
+ simplex[count * 2 + 1] = minkowski[1];
229
+ count += 1;
230
+ if (count === 2) {
231
+ // Line case: the origin lies off one side of the segment, and the next direction is the
232
+ // perpendicular pointing at it.
233
+ const bx = simplex[0];
234
+ const by = simplex[1];
235
+ const ax = simplex[2];
236
+ const ay = simplex[3];
237
+ const edgeX = bx - ax;
238
+ const edgeY = by - ay;
239
+ // The triple product `(edge x -a) x edge`, which is the component of `-a` perpendicular to the
240
+ // edge — the direction the origin actually lies in, rather than either bare perpendicular.
241
+ const cross = edgeX * -ay - edgeY * -ax;
242
+ if (cross === 0) {
243
+ // The origin is COLLINEAR with the segment, and that proves nothing on its own: a 1-simplex
244
+ // touching the origin is still only a line through a 2D shape, and the origin can sit well
245
+ // inside it. Taking this for separation is the bug that reports two overlapping circles whose
246
+ // centres share an axis as disjoint — the most ordinary configuration there is. Either
247
+ // perpendicular carries the search on; the triangle case is what decides containment.
248
+ directionX = -edgeY;
249
+ directionY = edgeX;
250
+ }
251
+ else {
252
+ directionX = -edgeY * cross;
253
+ directionY = edgeX * cross;
254
+ }
255
+ continue;
256
+ }
257
+ // Triangle case: the origin is either outside one of the two new edges, or enclosed.
258
+ const cx = simplex[0];
259
+ const cy = simplex[1];
260
+ const bx = simplex[2];
261
+ const by = simplex[3];
262
+ const ax = simplex[4];
263
+ const ay = simplex[5];
264
+ const abX = bx - ax;
265
+ const abY = by - ay;
266
+ const acX = cx - ax;
267
+ const acY = cy - ay;
268
+ // The outward perpendicular of each edge, as the triple product `(ac x ab) x ab` expanded to
269
+ // `ab(ac.ab) - ac(ab.ab)`. Winding-INDEPENDENT, which matters: taking the bare perpendicular and
270
+ // orienting it by the triangle's signed area gets the sign right for one winding and inverts it for
271
+ // the other, so half of all inputs report the origin outside an edge it is inside. The support
272
+ // points arrive in whatever order the search produced, so neither winding can be assumed.
273
+ const abDotAc = abX * acX + abY * acY;
274
+ const abLengthSquared = abX * abX + abY * abY;
275
+ const acLengthSquared = acX * acX + acY * acY;
276
+ const abNormalX = abX * abDotAc - acX * abLengthSquared;
277
+ const abNormalY = abY * abDotAc - acY * abLengthSquared;
278
+ if (abNormalX * -ax + abNormalY * -ay > 0) {
279
+ // Drop C: the origin is beyond AB.
280
+ simplex[0] = bx;
281
+ simplex[1] = by;
282
+ simplex[2] = ax;
283
+ simplex[3] = ay;
284
+ count = 2;
285
+ directionX = abNormalX;
286
+ directionY = abNormalY;
287
+ continue;
288
+ }
289
+ const acNormalX = acX * abDotAc - abX * acLengthSquared;
290
+ const acNormalY = acY * abDotAc - abY * acLengthSquared;
291
+ if (acNormalX * -ax + acNormalY * -ay > 0) {
292
+ // Drop B: the origin is beyond AC.
293
+ simplex[2] = ax;
294
+ simplex[3] = ay;
295
+ count = 2;
296
+ directionX = acNormalX;
297
+ directionY = acNormalY;
298
+ continue;
299
+ }
300
+ return GJK_OVERLAPPING;
301
+ }
302
+ return GJK_SEPARATED;
303
+ }
304
+ // Writes the support point of the Minkowski difference `A - B` along a direction: the furthest point
305
+ // on A one way, minus the furthest point on B the other. The difference is never materialized.
306
+ function writeMinkowskiSupport2D(a, supportA, b, supportB, directionX, directionY, out) {
307
+ supportA(a, directionX, directionY, supportPointA);
308
+ supportB(b, -directionX, -directionY, supportPointB);
309
+ out[0] = supportPointA[0] - supportPointB[0];
310
+ out[1] = supportPointA[1] - supportPointB[1];
311
+ }
312
+ const GJK_OVERLAPPING = 1;
313
+ const GJK_SEPARATED = 0;
314
+ // GJK converges in a handful of iterations for convex shapes; the cap is a guard against a support
315
+ // function that is not convex rather than a tuning knob. A non-convex polygon can cycle forever, and
316
+ // this package already refuses those through `getCollisionPolygonValidationStatus2D`.
317
+ const MAX_GJK_ITERATIONS = 32;
318
+ const MAX_EPA_ITERATIONS = 32;
319
+ // The polytope only ever grows by one vertex per iteration, so this bounds the scratch rather than the
320
+ // answer's quality: hitting it returns the best edge found so far, which is already within tolerance
321
+ // for every shape a caller can build out of the four registered kinds.
322
+ const MAX_POLYTOPE_VERTICES = 40;
323
+ const EPA_TOLERANCE = 1e-9;
324
+ const EPSILON = 1e-12;
325
+ // The band within which two axes count as the same, for both the distance comparison and the
326
+ // lexicographic tie-break. Matches the SAT core's own relative epsilon so the two agree about what a
327
+ // tie IS, not only about how to break one.
328
+ const AXIS_EPSILON = 1e-9;
329
+ // How close the two opposite directions have to be before the penetration counts as ambiguous. Looser
330
+ // than AXIS_EPSILON on purpose: EPA converges its distance to about 1e-10, so a tie that is exact in
331
+ // the geometry arrives here a little off, and a band tighter than that noise would miss it.
332
+ const TIE_TOLERANCE = 1e-6;
333
+ const INTERIOR_AXES = [1, 0, -1, 0, 0, 1, 0, -1];
334
+ const interior = [0, 0];
335
+ const minkowski = [0, 0];
336
+ const polytope = new Float64Array(MAX_POLYTOPE_VERTICES * 2 + 2);
337
+ const simplex = [0, 0, 0, 0, 0, 0];
338
+ const supportPointA = [0, 0];
339
+ const supportPointB = [0, 0];
340
+ //# sourceMappingURL=gjk2D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gjk2D.js","sourceRoot":"","sources":["../src/gjk2D.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,5 @@
1
- export { clearCollisionContactManifold, clearCollisionManifold, collideAabbAabbContactManifold, collideAabbObbContactManifold, collideAabbPolygonContactManifold, collideCircleAabbContactManifold, collideCircleCircleContactManifold, collideCircleObbContactManifold, collideCirclePolygonContactManifold, collideContactManifold, collideObbObbContactManifold, collideObbPolygonContactManifold, collidePolygonPolygonContactManifold, createCollisionContactManifold, createCollisionManifold, areCollisionGuardsEnabled, disableCollisionGuards, enableCollisionGuards, explainCollisionTest, getCollisionShapeContainsPoint, createCollisionRaycastHit, createCollisionTimeOfImpact, raycastCollisionShape, sweepCollisionShape, testAabbAabbCollision, testAabbObbCollision, testAabbPolygonCollision, testCircleAabbCollision, testCircleCircleCollision, testCircleObbCollision, testCirclePolygonCollision, testCollision, testObbObbCollision, testObbPolygonCollision, testPolygonPolygonCollision, testSegmentAabbCollision, testSegmentCircleCollision, testSegmentObbCollision, testSegmentPolygonCollision, testSegmentSegmentCollision, } from './contract';
1
+ export { clearCollisionContactManifold2D, clearCollisionManifold2D, collideAabbAabbContactManifold, collideAabbObbContactManifold, collideAabbPolygonContactManifold, collideCircleAabbContactManifold, collideCircleCircleContactManifold, collideCircleObbContactManifold, collideCirclePolygonContactManifold, collideContactManifold2D, collideObbObbContactManifold, collideObbPolygonContactManifold, collidePolygonPolygonContactManifold, createCollisionContactManifold2D, createCollisionManifold2D, areCollisionGuardsEnabled, disableCollisionGuards, enableCollisionGuards, explainCollisionTest2D, getCollisionShapeContainsPoint2D, createCollisionRaycastHit2D, createCollisionTimeOfImpact2D, raycastCollisionShape2D, sweepCollisionShape2D, testAabbAabbCollision, testAabbObbCollision, testAabbPolygonCollision, testCircleAabbCollision, testCircleCircleCollision, testCircleObbCollision, testCirclePolygonCollision, testCollision2D, testObbObbCollision, testObbPolygonCollision, testPolygonPolygonCollision, testSegmentAabbCollision, testSegmentCircleCollision, testSegmentObbCollision, testSegmentPolygonCollision, testSegmentSegmentCollision, } from './contract';
2
+ export { getCollisionPairTest2D, getCollisionSupport2D, registerBuiltInCollisionSupports2D, registerCollisionPairTest2D, registerCollisionSupport2D, supportCollisionAabb2D, supportCollisionCircle2D, supportCollisionObb2D, supportCollisionPolygon2D, } from './collisionSupport2D';
3
+ export { testCollisionSupport2D, testCollisionSupportOverlap2D } from './gjk2D';
4
+ export { registerBuiltInCollisionPairTests2D } from './registerBuiltInCollisionPairTests2D';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,mCAAmC,EACnC,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,EAChC,oCAAoC,EACpC,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,mCAAmC,EACnC,wBAAwB,EACxB,4BAA4B,EAC5B,gCAAgC,EAChC,oCAAoC,EACpC,gCAAgC,EAChC,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kCAAkC,EAClC,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,5 @@
1
- export { clearCollisionContactManifold, clearCollisionManifold, collideAabbAabbContactManifold, collideAabbObbContactManifold, collideAabbPolygonContactManifold, collideCircleAabbContactManifold, collideCircleCircleContactManifold, collideCircleObbContactManifold, collideCirclePolygonContactManifold, collideContactManifold, collideObbObbContactManifold, collideObbPolygonContactManifold, collidePolygonPolygonContactManifold, createCollisionContactManifold, createCollisionManifold, areCollisionGuardsEnabled, disableCollisionGuards, enableCollisionGuards, explainCollisionTest, getCollisionShapeContainsPoint, createCollisionRaycastHit, createCollisionTimeOfImpact, raycastCollisionShape, sweepCollisionShape, testAabbAabbCollision, testAabbObbCollision, testAabbPolygonCollision, testCircleAabbCollision, testCircleCircleCollision, testCircleObbCollision, testCirclePolygonCollision, testCollision, testObbObbCollision, testObbPolygonCollision, testPolygonPolygonCollision, testSegmentAabbCollision, testSegmentCircleCollision, testSegmentObbCollision, testSegmentPolygonCollision, testSegmentSegmentCollision, } from './contract';
1
+ export { clearCollisionContactManifold2D, clearCollisionManifold2D, collideAabbAabbContactManifold, collideAabbObbContactManifold, collideAabbPolygonContactManifold, collideCircleAabbContactManifold, collideCircleCircleContactManifold, collideCircleObbContactManifold, collideCirclePolygonContactManifold, collideContactManifold2D, collideObbObbContactManifold, collideObbPolygonContactManifold, collidePolygonPolygonContactManifold, createCollisionContactManifold2D, createCollisionManifold2D, areCollisionGuardsEnabled, disableCollisionGuards, enableCollisionGuards, explainCollisionTest2D, getCollisionShapeContainsPoint2D, createCollisionRaycastHit2D, createCollisionTimeOfImpact2D, raycastCollisionShape2D, sweepCollisionShape2D, testAabbAabbCollision, testAabbObbCollision, testAabbPolygonCollision, testCircleAabbCollision, testCircleCircleCollision, testCircleObbCollision, testCirclePolygonCollision, testCollision2D, testObbObbCollision, testObbPolygonCollision, testPolygonPolygonCollision, testSegmentAabbCollision, testSegmentCircleCollision, testSegmentObbCollision, testSegmentPolygonCollision, testSegmentSegmentCollision, } from './contract';
2
+ export { getCollisionPairTest2D, getCollisionSupport2D, registerBuiltInCollisionSupports2D, registerCollisionPairTest2D, registerCollisionSupport2D, supportCollisionAabb2D, supportCollisionCircle2D, supportCollisionObb2D, supportCollisionPolygon2D, } from './collisionSupport2D';
3
+ export { testCollisionSupport2D, testCollisionSupportOverlap2D } from './gjk2D';
4
+ export { registerBuiltInCollisionPairTests2D } from './registerBuiltInCollisionPairTests2D';
2
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,mCAAmC,EACnC,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,EAChC,oCAAoC,EACpC,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,mCAAmC,EACnC,wBAAwB,EACxB,4BAA4B,EAC5B,gCAAgC,EAChC,oCAAoC,EACpC,gCAAgC,EAChC,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kCAAkC,EAClC,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CollisionManifold } from '@flighthq/types/contract';
2
- export declare function clearCollisionManifold(out: CollisionManifold): void;
3
- export declare function createCollisionManifold(): CollisionManifold;
1
+ import type { CollisionManifold2D } from '@flighthq/types/contract';
2
+ export declare function clearCollisionManifold2D(out: CollisionManifold2D): void;
3
+ export declare function createCollisionManifold2D(): CollisionManifold2D;
4
4
  //# sourceMappingURL=manifold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifold.d.ts","sourceRoot":"","sources":["../src/manifold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAKlE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAKnE;AAGD,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
1
+ {"version":3,"file":"manifold.d.ts","sourceRoot":"","sources":["../src/manifold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAKpE,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAKvE;AAGD,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D"}
package/dist/manifold.js CHANGED
@@ -1,14 +1,14 @@
1
1
  // Clears a manifold to the non-overlapping state: `overlapping` false, normal and depth zero. The
2
2
  // narrow-phase tests call this on their disjoint path, so a reused `out` never carries a stale
3
3
  // normal into a miss.
4
- export function clearCollisionManifold(out) {
4
+ export function clearCollisionManifold2D(out) {
5
5
  out.overlapping = false;
6
6
  out.normalX = 0;
7
7
  out.normalY = 0;
8
8
  out.depth = 0;
9
9
  }
10
10
  // Allocates a fresh manifold in the non-overlapping state, ready to be passed as an `out` parameter.
11
- export function createCollisionManifold() {
11
+ export function createCollisionManifold2D() {
12
12
  return { overlapping: false, normalX: 0, normalY: 0, depth: 0 };
13
13
  }
14
14
  //# sourceMappingURL=manifold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifold.js","sourceRoot":"","sources":["../src/manifold.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,+FAA+F;AAC/F,sBAAsB;AACtB,MAAM,UAAU,sBAAsB,CAAC,GAAsB;IAC3D,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAChB,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"manifold.js","sourceRoot":"","sources":["../src/manifold.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,+FAA+F;AAC/F,sBAAsB;AACtB,MAAM,UAAU,wBAAwB,CAAC,GAAwB;IAC/D,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAChB,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,yBAAyB;IACvC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { CollisionShape } from '@flighthq/types/contract';
2
- export declare function getCollisionShapeContainsPoint(shape: Readonly<CollisionShape>, x: number, y: number): boolean;
1
+ import type { CollisionBuiltInShape2D } from '@flighthq/types/contract';
2
+ export declare function getCollisionShapeContainsPoint2D(shape: Readonly<CollisionBuiltInShape2D>, x: number, y: number): boolean;
3
3
  //# sourceMappingURL=pointContainment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pointContainment.d.ts","sourceRoot":"","sources":["../src/pointContainment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAU/D,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CA8C7G"}
1
+ {"version":3,"file":"pointContainment.d.ts","sourceRoot":"","sources":["../src/pointContainment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAUxE,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACxC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CA8CT"}
@@ -1,10 +1,10 @@
1
- import { getCollisionPolygonValidationStatus } from './collisionShapeValidation';
1
+ import { getCollisionPolygonValidationStatus2D } from './collisionShapeValidation';
2
2
  const RELATIVE_EPSILON = 1e-9;
3
3
  // Whether the point (`x`,`y`) lies inside a collider. Boundary-inclusive: a point exactly on the
4
4
  // edge of any shape counts as contained. For the area-less kinds this degrades to an on-shape test —
5
5
  // `segment` returns true when the point lies on the segment (within epsilon), `point` when the two
6
6
  // points coincide (within epsilon). Unknown kinds return false. The polygon is assumed convex.
7
- export function getCollisionShapeContainsPoint(shape, x, y) {
7
+ export function getCollisionShapeContainsPoint2D(shape, x, y) {
8
8
  switch (shape.kind) {
9
9
  case 'circle': {
10
10
  const dx = x - shape.x;
@@ -23,7 +23,7 @@ export function getCollisionShapeContainsPoint(shape, x, y) {
23
23
  return Math.abs(localX) <= shape.halfW && Math.abs(localY) <= shape.halfH;
24
24
  }
25
25
  case 'polygon':
26
- if (getCollisionPolygonValidationStatus(shape.points) !== null)
26
+ if (getCollisionPolygonValidationStatus2D(shape.points) !== null)
27
27
  return false;
28
28
  return isPointInConvexPolygon(x, y, shape.points, shape.points.length >> 1);
29
29
  case 'segment': {
@@ -1 +1 @@
1
- {"version":3,"file":"pointContainment.js","sourceRoot":"","sources":["../src/pointContainment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pointContainment.js","sourceRoot":"","sources":["../src/pointContainment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CollisionRaycastHit2D, CollisionBuiltInShape2D } from '@flighthq/types/contract';
2
+ export declare function createCollisionRaycastHit2D(): CollisionRaycastHit2D;
3
+ export declare function raycastCollisionShape2D(shape: Readonly<CollisionBuiltInShape2D>, originX: number, originY: number, directionX: number, directionY: number, out: CollisionRaycastHit2D, maxFraction?: number): boolean;
4
+ //# sourceMappingURL=raycastCollisionShape2D.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raycastCollisionShape2D.d.ts","sourceRoot":"","sources":["../src/raycastCollisionShape2D.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAO/F,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAKD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACxC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,qBAAqB,EAC1B,WAAW,SAA2B,GACrC,OAAO,CAqFT"}
@@ -1,13 +1,13 @@
1
- import { getCollisionPolygonValidationStatus } from './collisionShapeValidation';
2
- import { getCollisionShapeContainsPoint } from './pointContainment';
1
+ import { getCollisionPolygonValidationStatus2D } from './collisionShapeValidation';
2
+ import { getCollisionShapeContainsPoint2D } from './pointContainment';
3
3
  const RELATIVE_EPSILON = 1e-9;
4
- export function createCollisionRaycastHit() {
4
+ export function createCollisionRaycastHit2D() {
5
5
  return { fraction: 0, x: 0, y: 0, normalX: 0, normalY: 0 };
6
6
  }
7
7
  // Writes the first exact intersection of `origin + direction * fraction` with `shape`. Direction need
8
8
  // not be normalized; fraction therefore stays in the caller's parameterization. `maxFraction` bounds a
9
9
  // segment or sweep without changing the ray direction, and defaults to an unbounded forward ray.
10
- export function raycastCollisionShape(shape, originX, originY, directionX, directionY, out, maxFraction = Number.POSITIVE_INFINITY) {
10
+ export function raycastCollisionShape2D(shape, originX, originY, directionX, directionY, out, maxFraction = Number.POSITIVE_INFINITY) {
11
11
  clearRaycastHit(out);
12
12
  if (!Number.isFinite(originX) ||
13
13
  !Number.isFinite(originY) ||
@@ -17,7 +17,7 @@ export function raycastCollisionShape(shape, originX, originY, directionX, direc
17
17
  maxFraction < 0) {
18
18
  return false;
19
19
  }
20
- if (getCollisionShapeContainsPoint(shape, originX, originY)) {
20
+ if (getCollisionShapeContainsPoint2D(shape, originX, originY)) {
21
21
  writeRaycastHit(out, originX, originY, directionX, directionY, 0, 0, 0);
22
22
  return true;
23
23
  }
@@ -163,7 +163,7 @@ function raycastObb(shape, originX, originY, directionX, directionY, maxFraction
163
163
  return true;
164
164
  }
165
165
  function raycastPolygon(points, originX, originY, directionX, directionY, maxFraction, out, scratch) {
166
- if (getCollisionPolygonValidationStatus(points) !== null)
166
+ if (getCollisionPolygonValidationStatus2D(points) !== null)
167
167
  return false;
168
168
  let bestFraction = maxFraction;
169
169
  let bestNormalX = 0;
@@ -308,4 +308,4 @@ function releaseRaycastScratch(scratch) {
308
308
  raycastScratchPool.push(scratch);
309
309
  }
310
310
  const raycastScratchPool = [createRaycastScratch()];
311
- //# sourceMappingURL=raycastCollisionShape.js.map
311
+ //# sourceMappingURL=raycastCollisionShape2D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raycastCollisionShape2D.js","sourceRoot":"","sources":["../src/raycastCollisionShape2D.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerBuiltInCollisionPairTests2D(): void;
2
+ //# sourceMappingURL=registerBuiltInCollisionPairTests2D.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerBuiltInCollisionPairTests2D.d.ts","sourceRoot":"","sources":["../src/registerBuiltInCollisionPairTests2D.ts"],"names":[],"mappings":"AAiCA,wBAAgB,mCAAmC,IAAI,IAAI,CA+B1D"}