@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
@@ -1,11 +1,11 @@
1
1
  import { FEATURE_INDEX_LIMIT, packContactFeatureId } from './contactFeatureId';
2
- import { clearCollisionContactManifold } from './contactManifold';
2
+ import { clearCollisionContactManifold2D } from './contactManifold';
3
3
  import { writeAabbVertices, writeObbVertices } from './convexVertices';
4
- import { createCollisionManifold } from './manifold';
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` CollisionContactManifold and returns whether the pair overlaps; the normal, depth,
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
- clearCollisionContactManifold(out);
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
- clearCollisionContactManifold(out);
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
- clearCollisionContactManifold(out);
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
- clearCollisionContactManifold(out);
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
- clearCollisionContactManifold(out);
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
- clearCollisionContactManifold(out);
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
- clearCollisionContactManifold(out);
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
- clearCollisionContactManifold(out);
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: createCollisionManifold(),
390
+ leanManifold: createCollisionManifold2D(),
391
391
  separationEdge: -1,
392
392
  separationNormalX: 0,
393
393
  separationNormalY: 0,
@@ -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":"AASA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,kGAAkG;AAClG,kGAAkG;AAClG,uGAAuG;AACvG,6EAA6E;AAC7E,EAAE;AACF,mGAAmG;AACnG,mGAAmG;AACnG,oGAAoG;AACpG,iGAAiG;AACjG,mGAAmG;AACnG,uBAAuB;AACvB,EAAE;AACF,mGAAmG;AACnG,oGAAoG;AACpG,qBAAqB;AAErB,wCAAwC;AACxC,MAAM,UAAU,8BAA8B,CAC5C,CAA4B,EAC5B,CAA4B,EAC5B,GAA+B;IAE/B,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,6BAA6B,CAC3C,CAA4B,EAC5B,CAA2B,EAC3B,GAA+B;IAE/B,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,iCAAiC,CAC/C,CAA4B,EAC5B,CAA+B,EAC/B,GAA+B;IAE/B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gCAAgC,CAC9C,CAA8B,EAC9B,CAA4B,EAC5B,GAA+B;IAE/B,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,+BAA+B,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,kCAAkC,CAChD,CAA8B,EAC9B,CAA8B,EAC9B,GAA+B;IAE/B,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,+BAA+B,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,+BAA+B,CAC7C,CAA8B,EAC9B,CAA2B,EAC3B,GAA+B;IAE/B,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACxD,+BAA+B,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,mCAAmC,CACjD,CAA8B,EAC9B,CAA+B,EAC/B,GAA+B;IAE/B,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,+BAA+B,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,4BAA4B,CAC1C,CAA2B,EAC3B,CAA2B,EAC3B,GAA+B;IAE/B,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,gCAAgC,CAC9C,CAA2B,EAC3B,CAA+B,EAC/B,GAA+B;IAE/B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,oCAAoC,CAClD,CAA+B,EAC/B,CAA+B,EAC/B,GAA+B;IAE/B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACjG,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,mCAAmC;AACnC,EAAE;AACF,8FAA8F;AAC9F,iGAAiG;AACjG,oGAAoG;AACpG,kGAAkG;AAClG,oGAAoG;AACpG,mGAAmG;AACnG,uCAAuC;AACvC,SAAS,aAAa,CACpB,EAAqB,EACrB,EAAU,EACV,EAAqB,EACrB,EAAU,EACV,GAA+B,EAC/B,OAA4B;IAE5B,gGAAgG;IAChG,iGAAiG;IACjG,mGAAmG;IACnG,qGAAqG;IACrG,8FAA8F;IAC9F,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,mBAAmB,IAAI,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAC7E,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QACnD,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAE3C,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QACnD,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;IAErC,iGAAiG;IACjG,kGAAkG;IAClG,oEAAoE;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChH,MAAM,YAAY,GAAG,WAAW,IAAI,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;IAE7E,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACpE,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAEpE,MAAM,aAAa,GAAG,aAAa,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/C,kGAAkG;IAClG,2FAA2F;IAC3F,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;IACzB,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3E,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;QACzB,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,QAAQ,IAAI,aAAa,CAAC;IAC1B,QAAQ,IAAI,aAAa,CAAC;IAE1B,MAAM,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC7C,MAAM,EAAE,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC3C,MAAM,EAAE,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;IAE3C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,IAAI,IAAI,GAAG,SAAS;YAAE,SAAS,GAAG,IAAI,CAAC;QACvC,IAAI,IAAI,GAAG,OAAO;YAAE,OAAO,GAAG,IAAI,CAAC;IACrC,CAAC;SAAM,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;QAC7C,SAAS,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;IAED,+FAA+F;IAC/F,gGAAgG;IAChG,mBAAmB;IACnB,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;IACrE,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,GAAG,CAAC,KAAK,GAAG,CAAC,mBAAmB,CAAC;IACjC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;IACvB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACrF,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5F,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YACrF,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+FAA+F;AAC/F,mGAAmG;AACnG,6EAA6E;AAC7E,SAAS,oBAAoB,CAC3B,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,CAAS,EACT,KAAa,EACb,KAAa,EACb,OAAe,EACf,OAAe,EACf,SAAiB,EACjB,GAA+B;IAE/B,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACjE,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO;IAE3B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACZ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACZ,KAAK,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC;IAC1B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,UAAU,EAAE,CAAC;AACnB,CAAC;AAED,kGAAkG;AAClG,0GAA0G;AAC1G,8FAA8F;AAC9F,8FAA8F;AAC9F,6DAA6D;AAC7D,SAAS,iBAAiB,CACxB,EAAqB,EACrB,EAAU,EACV,EAAqB,EACrB,EAAU,EACV,OAA4B;IAE5B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACxB,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,SAAS,IAAI,EAAE,CAAC;IAChB,SAAS,IAAI,EAAE,CAAC;IAEhB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IACrB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;QAChE,IAAI,MAAM,IAAI,GAAG;YAAE,SAAS;QAC5B,OAAO,IAAI,MAAM,CAAC;QAClB,OAAO,IAAI,MAAM,CAAC;QAClB,IAAI,OAAO,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,OAAO,GAAG,CAAC,OAAO,CAAC;YACnB,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QAED,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAClF,IAAI,SAAS,GAAG,UAAU;gBAAE,UAAU,GAAG,SAAS,CAAC;QACrD,CAAC;QACD,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;YACtB,IAAI,GAAG,UAAU,CAAC;YAClB,QAAQ,GAAG,CAAC,CAAC;YACb,WAAW,GAAG,OAAO,CAAC;YACtB,WAAW,GAAG,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC;IAClC,OAAO,CAAC,iBAAiB,GAAG,WAAW,CAAC;IACxC,OAAO,CAAC,iBAAiB,GAAG,WAAW,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gGAAgG;AAChG,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,EAAqB,EAAE,EAAU,EAAE,OAAe,EAAE,OAAe;IAC/F,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACxB,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,SAAS,IAAI,EAAE,CAAC;IAChB,SAAS,IAAI,EAAE,CAAC;IAEhB,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;QAChF,IAAI,MAAM,IAAI,GAAG;YAAE,SAAS;QAC5B,WAAW,IAAI,MAAM,CAAC;QACtB,WAAW,IAAI,MAAM,CAAC;QACtB,IAAI,WAAW,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACxE,WAAW,GAAG,CAAC,WAAW,CAAC;YAC3B,WAAW,GAAG,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;QAChE,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;YACrB,IAAI,GAAG,SAAS,CAAC;YACjB,QAAQ,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6GAA6G;AAC7G,mGAAmG;AACnG,6DAA6D;AAC7D,SAAS,kBAAkB,CACzB,EAAU,EACV,EAAU,EACV,MAAc,EACd,GAA+B,EAC/B,OAA4B;IAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;IACzC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAClB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;IAEvB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,CAAC;AACjB,mGAAmG;AACnG,+FAA+F;AAC/F,MAAM,cAAc,GAAG,IAAI,CAAC;AAY5B,SAAS,0BAA0B;IACjC,OAAO,uBAAuB,CAAC,GAAG,EAAE,IAAI,yBAAyB,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO;QACL,SAAS,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;QAC9B,SAAS,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;QAC9B,YAAY,EAAE,yBAAyB,EAAE;QACzC,cAAc,EAAE,CAAC,CAAC;QAClB,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,OAA4B;IAC9D,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,uBAAuB,GAA0B,CAAC,yBAAyB,EAAE,CAAC,CAAC"}
@@ -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 { collideContactManifold } from './collideContactManifold';
2
- import { getCollisionShapeValidationStatus } from './collisionShapeValidation';
3
- import { createCollisionContactManifold } from './contactManifold';
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 createCollisionTimeOfImpact() {
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 sweepCollisionShape(shapeA, translationAX, translationAY, shapeB, translationBX, translationBY, out, maxFraction = 1) {
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
- getCollisionShapeValidationStatus(shapeA) !== null ||
21
- getCollisionShapeValidationStatus(shapeB) !== null) {
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 (collideContactManifold(shapeA, shapeB, scratch.manifold)) {
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: createCollisionContactManifold(),
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=sweepCollisionShape.js.map
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.1663.d9c5746",
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.1663.d9c5746",
42
- "@flighthq/log": "0.4.0-next.1663.d9c5746",
43
- "@flighthq/types": "0.4.0-next.1663.d9c5746"
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 { CollisionShape } from '@flighthq/types/contract';
1
+ import type { CollisionShape2D } from '@flighthq/types/contract';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
- import { collideContactManifold } from './collideContactManifold';
5
- import { createCollisionContactManifold } from './contactManifold';
4
+ import { collideContactManifold2D } from './collideContactManifold2D';
5
+ import { createCollisionContactManifold2D } from './contactManifold';
6
6
  import { collideAabbAabbContactManifold, collideCircleAabbContactManifold } from './shapeContact';
7
7
 
8
- describe('collideContactManifold', () => {
8
+ describe('collideContactManifold2D', () => {
9
9
  it('dispatches a box-box pair to the same contact as the direct function', () => {
10
- const dispatched = createCollisionContactManifold();
11
- const direct = createCollisionContactManifold();
12
- const box: CollisionShape = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
13
- const ground: CollisionShape = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
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(collideContactManifold(box, ground, dispatched)).toBe(true);
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 = createCollisionContactManifold();
28
- const direct = createCollisionContactManifold();
29
- const circle: CollisionShape = { kind: 'circle', x: 0, y: 0.9, radius: 1 };
30
- const ground: CollisionShape = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
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(collideContactManifold(circle, ground, dispatched)).toBe(true);
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 = createCollisionContactManifold();
40
- const reversed = createCollisionContactManifold();
41
- const circle: CollisionShape = { kind: 'circle', x: 0, y: 0.9, radius: 1 };
42
- const ground: CollisionShape = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
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(collideContactManifold(circle, ground, forward)).toBe(true);
45
- expect(collideContactManifold(ground, circle, reversed)).toBe(true);
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 = createCollisionContactManifold();
57
- const reversed = createCollisionContactManifold();
58
- const box: CollisionShape = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
59
- const ground: CollisionShape = { kind: 'polygon', points: [-5, -1, 5, -1, 5, 0, -5, 0] };
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(collideContactManifold(box, ground, forward)).toBe(true);
62
- expect(collideContactManifold(ground, box, reversed)).toBe(true);
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 = createCollisionContactManifold();
78
- const reversed = createCollisionContactManifold();
79
- const box: CollisionShape = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
80
- const ground: CollisionShape = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
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(collideContactManifold(box, ground, forward)).toBe(true);
83
- expect(collideContactManifold(ground, box, reversed)).toBe(true);
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 = createCollisionContactManifold();
96
- const second = createCollisionContactManifold();
97
- const box: CollisionShape = { kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 };
98
- const ground: CollisionShape = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
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(collideContactManifold(box, ground, first)).toBe(true);
101
- expect(collideContactManifold(box, ground, second)).toBe(true);
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 = createCollisionContactManifold();
113
- const segment: CollisionShape = { kind: 'segment', x0: 0, y0: 0, x1: 5, y1: 5 };
114
- const box: CollisionShape = { kind: 'aabb', minX: 0, minY: 0, maxX: 10, maxY: 10 };
115
- expect(collideContactManifold(segment, box, out)).toBe(false);
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: CollisionShape = { kind: 'point', x: 1, y: 1 };
120
- expect(collideContactManifold(point, box, out)).toBe(false);
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 = createCollisionContactManifold();
126
- const ground: CollisionShape = { kind: 'aabb', minX: -5, minY: -1, maxX: 5, maxY: 0 };
127
- expect(collideContactManifold({ kind: 'aabb', minX: 0, minY: -0.1, maxX: 2, maxY: 1.9 }, ground, out)).toBe(true);
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(collideContactManifold({ kind: 'aabb', minX: 0, minY: 9, maxX: 2, maxY: 11 }, ground, out)).toBe(false);
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 = createCollisionContactManifold();
143
+ const out = createCollisionContactManifold2D();
144
144
  expect(
145
- collideContactManifold(
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
- collideContactManifold(
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 = createCollisionContactManifold();
168
+ const out = createCollisionContactManifold2D();
169
169
  expect(
170
- collideContactManifold(
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
- collideContactManifold(
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 { CollisionShape } from '@flighthq/types/contract';
1
+ import type { CollisionShape2D } from '@flighthq/types/contract';
2
2
 
3
- import { getCollisionPolygonValidationStatus, getCollisionShapeValidationStatus } from './collisionShapeValidation';
3
+ import { getCollisionPolygonValidationStatus2D, getCollisionShapeValidationStatus2D } from './collisionShapeValidation';
4
4
 
5
- describe('getCollisionPolygonValidationStatus', () => {
5
+ describe('getCollisionPolygonValidationStatus2D', () => {
6
6
  it('distinguishes valid, degenerate, and non-convex polygons', () => {
7
- expect(getCollisionPolygonValidationStatus([0, 0, 2, 0, 2, 2, 0, 2])).toBeNull();
8
- expect(getCollisionPolygonValidationStatus([0, 0, 1, 1])).toBe('degenerate-shape');
9
- expect(getCollisionPolygonValidationStatus([0, 0, 1, 0, 2, 0])).toBe('degenerate-shape');
10
- expect(getCollisionPolygonValidationStatus([0, 0, 2, 0, 1, 1, 2, 2, 0, 2])).toBe('non-convex-polygon');
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('getCollisionShapeValidationStatus', () => {
14
+ describe('getCollisionShapeValidationStatus2D', () => {
15
15
  it('rejects every degenerate manifold shape', () => {
16
- const shapes: CollisionShape[] = [
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(getCollisionShapeValidationStatus(shape)).toBe('degenerate-shape');
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(getCollisionShapeValidationStatus({ kind: 'point', x: 0, y: 0 })).toBe('unsupported-shape-kind');
28
- expect(getCollisionShapeValidationStatus({ kind: 'segment', x0: 0, y0: 0, x1: 1, y1: 1 })).toBe(
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(getCollisionShapeValidationStatus({ kind: 'acme.capsule' } as unknown as CollisionShape)).toBe(
31
+ expect(getCollisionShapeValidationStatus2D({ kind: 'acme.capsule' } as unknown as CollisionShape2D)).toBe(
32
32
  'unsupported-shape-kind',
33
33
  );
34
34
  });