@flighthq/collision 0.5.1-next.903.f434bc2 → 0.5.1-next.905.5fbf787

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/collision`. The `@fl
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/collision@0.5.1-next.903.f434bc2](https://github.com/flighthq/flight/tree/f434bc233778d75aeea61995df3a8cfaec459a85/packages/collision)
17
- - [License](https://github.com/flighthq/flight/blob/f434bc233778d75aeea61995df3a8cfaec459a85/LICENSE.md)
16
+ - [Source for @flighthq/collision@0.5.1-next.905.5fbf787](https://github.com/flighthq/flight/tree/5fbf7874064c384307542d68b4dcb6a895ff0dcf/packages/collision)
17
+ - [License](https://github.com/flighthq/flight/blob/5fbf7874064c384307542d68b4dcb6a895ff0dcf/LICENSE.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/collision",
3
- "version": "0.5.1-next.903.f434bc2",
3
+ "version": "0.5.1-next.905.5fbf787",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,10 +38,10 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.5.1-next.903.f434bc2",
42
- "@flighthq/geometry": "0.5.1-next.903.f434bc2",
43
- "@flighthq/log": "0.5.1-next.903.f434bc2",
44
- "@flighthq/types": "0.5.1-next.903.f434bc2"
41
+ "@flighthq/entity": "0.5.1-next.905.5fbf787",
42
+ "@flighthq/geometry": "0.5.1-next.905.5fbf787",
43
+ "@flighthq/log": "0.5.1-next.905.5fbf787",
44
+ "@flighthq/types": "0.5.1-next.905.5fbf787"
45
45
  },
46
46
  "devDependencies": {
47
47
  "typescript": "^5.3.0"
@@ -1,6 +1,10 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
 
3
- import { clearCollisionContactManifold2D, createCollisionContactManifold2D } from './contactManifold2D';
3
+ import {
4
+ clearCollisionContactManifold2D,
5
+ createCollisionContactManifold2D,
6
+ initializeCollisionContactManifold2D,
7
+ } from './contactManifold2D';
4
8
 
5
9
  describe('clearCollisionContactManifold2D', () => {
6
10
  it('resets the manifold to the non-overlapping state', () => {
@@ -53,3 +57,8 @@ describe('createCollisionContactManifold2D', () => {
53
57
  expect(first.points[0]).not.toBe(second.points[0]);
54
58
  });
55
59
  });
60
+ describe('initializeCollisionContactManifold2D', () => {
61
+ it('is the construction initializer of createCollisionContactManifold2D', () => {
62
+ expect(typeof initializeCollisionContactManifold2D).toBe('function');
63
+ });
64
+ });
@@ -1,7 +1,11 @@
1
1
  import { MAX_COLLISION_CONTACT_POINTS_3D } from '@flighthq/types/contract';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
- import { clearCollisionContactManifold3D, createCollisionContactManifold3D } from './contactManifold3D';
4
+ import {
5
+ clearCollisionContactManifold3D,
6
+ createCollisionContactManifold3D,
7
+ initializeCollisionContactManifold3D,
8
+ } from './contactManifold3D';
5
9
 
6
10
  describe('clearCollisionContactManifold3D', () => {
7
11
  it('resets the overlap state and the point count', () => {
@@ -42,3 +46,8 @@ describe('createCollisionContactManifold3D', () => {
42
46
  expect(createCollisionContactManifold3D().points).not.toBe(createCollisionContactManifold3D().points);
43
47
  });
44
48
  });
49
+ describe('initializeCollisionContactManifold3D', () => {
50
+ it('is the construction initializer of createCollisionContactManifold3D', () => {
51
+ expect(typeof initializeCollisionContactManifold3D).toBe('function');
52
+ });
53
+ });
@@ -2,7 +2,7 @@ import type { CollisionShape3D } from '@flighthq/types/contract';
2
2
  import { beforeEach, describe, expect, it } from 'vitest';
3
3
 
4
4
  import { registerBuiltInCollisionSupports3D } from './collisionSupport3D';
5
- import { createCollisionDistance3D, writeCollisionDistance3D } from './gjkDistance3D';
5
+ import { createCollisionDistance3D, initializeCollisionDistance3D, writeCollisionDistance3D } from './gjkDistance3D';
6
6
 
7
7
  beforeEach(() => {
8
8
  registerBuiltInCollisionSupports3D();
@@ -36,6 +36,11 @@ describe('createCollisionDistance3D', () => {
36
36
  });
37
37
  });
38
38
 
39
+ describe('initializeCollisionDistance3D', () => {
40
+ it('is the construction initializer of createCollisionDistance3D', () => {
41
+ expect(typeof initializeCollisionDistance3D).toBe('function');
42
+ });
43
+ });
39
44
  describe('writeCollisionDistance3D', () => {
40
45
  it('matches the closed form for two separated spheres', () => {
41
46
  // Centres 10 apart, radii 1 and 2, so the surfaces are 7 apart. Exact, not approximate: a sphere's
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
 
3
- import { clearCollisionManifold2D, createCollisionManifold2D } from './manifold2D';
3
+ import { clearCollisionManifold2D, createCollisionManifold2D, initializeCollisionManifold2D } from './manifold2D';
4
4
 
5
5
  describe('clearCollisionManifold2D', () => {
6
6
  it('resets every field to the non-overlapping state', () => {
@@ -33,3 +33,8 @@ describe('createCollisionManifold2D', () => {
33
33
  expect(b.overlapping).toBe(false);
34
34
  });
35
35
  });
36
+ describe('initializeCollisionManifold2D', () => {
37
+ it('is the construction initializer of createCollisionManifold2D', () => {
38
+ expect(typeof initializeCollisionManifold2D).toBe('function');
39
+ });
40
+ });
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
 
3
- import { clearCollisionManifold3D, createCollisionManifold3D } from './manifold3D';
3
+ import { clearCollisionManifold3D, createCollisionManifold3D, initializeCollisionManifold3D } from './manifold3D';
4
4
 
5
5
  describe('clearCollisionManifold3D', () => {
6
6
  it('resets every field so a reused out never carries a stale normal into a miss', () => {
@@ -30,3 +30,8 @@ describe('createCollisionManifold3D', () => {
30
30
  expect(createCollisionManifold3D()).not.toBe(createCollisionManifold3D());
31
31
  });
32
32
  });
33
+ describe('initializeCollisionManifold3D', () => {
34
+ it('is the construction initializer of createCollisionManifold3D', () => {
35
+ expect(typeof initializeCollisionManifold3D).toBe('function');
36
+ });
37
+ });
@@ -2,7 +2,11 @@ import type { CollisionRaycastHit2D, CollisionBuiltInShape2D } from '@flighthq/t
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
4
  import { getCollisionShapeContainsPoint2D } from './pointContainment2D';
5
- import { createCollisionRaycastHit2D, raycastCollisionShape2D } from './raycastCollisionShape2D';
5
+ import {
6
+ createCollisionRaycastHit2D,
7
+ initializeCollisionRaycastHit2D,
8
+ raycastCollisionShape2D,
9
+ } from './raycastCollisionShape2D';
6
10
 
7
11
  function hit(): CollisionRaycastHit2D {
8
12
  return createCollisionRaycastHit2D();
@@ -14,6 +18,11 @@ describe('createCollisionRaycastHit2D', () => {
14
18
  });
15
19
  });
16
20
 
21
+ describe('initializeCollisionRaycastHit2D', () => {
22
+ it('is the construction initializer of createCollisionRaycastHit2D', () => {
23
+ expect(typeof initializeCollisionRaycastHit2D).toBe('function');
24
+ });
25
+ });
17
26
  describe('raycastCollisionShape2D', () => {
18
27
  it('keeps polygon center state isolated from a nested raycast triggered by a point getter', () => {
19
28
  const points = [2, -1, 4, -1, 4, 1, 2, 1];
@@ -2,7 +2,11 @@ import type { CollisionBuiltInShape3D, CollisionRaycastHit3D } from '@flighthq/t
2
2
  import { beforeEach, describe, expect, it } from 'vitest';
3
3
 
4
4
  import { registerBuiltInCollisionSupports3D } from './collisionSupport3D';
5
- import { createCollisionRaycastHit3D, raycastCollisionShape3D } from './raycastCollisionShape3D';
5
+ import {
6
+ createCollisionRaycastHit3D,
7
+ initializeCollisionRaycastHit3D,
8
+ raycastCollisionShape3D,
9
+ } from './raycastCollisionShape3D';
6
10
 
7
11
  beforeEach(() => {
8
12
  registerBuiltInCollisionSupports3D();
@@ -39,6 +43,11 @@ describe('createCollisionRaycastHit3D', () => {
39
43
  });
40
44
  });
41
45
 
46
+ describe('initializeCollisionRaycastHit3D', () => {
47
+ it('is the construction initializer of createCollisionRaycastHit3D', () => {
48
+ expect(typeof initializeCollisionRaycastHit3D).toBe('function');
49
+ });
50
+ });
42
51
  describe('raycastCollisionShape3D', () => {
43
52
  const sphere: CollisionBuiltInShape3D = { kind: 'sphere', x: 5, y: 0, z: 0, radius: 1 };
44
53
  const aabb: CollisionBuiltInShape3D = { kind: 'aabb', minX: 4, minY: -1, minZ: -1, maxX: 6, maxY: 1, maxZ: 1 };
@@ -3,7 +3,11 @@ import { describe, expect, it } from 'vitest';
3
3
 
4
4
  import { collideContactManifold2D } from './collideContactManifold2D';
5
5
  import { createCollisionContactManifold2D } from './contactManifold2D';
6
- import { createCollisionTimeOfImpact2D, sweepCollisionShape2D } from './sweepCollisionShape2D';
6
+ import {
7
+ createCollisionTimeOfImpact2D,
8
+ initializeCollisionTimeOfImpact2D,
9
+ sweepCollisionShape2D,
10
+ } from './sweepCollisionShape2D';
7
11
 
8
12
  type CollisionCapsule2D = Extract<CollisionBuiltInShape2D, { kind: 'capsule' }>;
9
13
  type CollisionSweepTarget2D = Extract<CollisionBuiltInShape2D, { kind: 'aabb' | 'capsule' | 'circle' | 'obb' }>;
@@ -21,6 +25,11 @@ describe('createCollisionTimeOfImpact2D', () => {
21
25
  });
22
26
  });
23
27
 
28
+ describe('initializeCollisionTimeOfImpact2D', () => {
29
+ it('is the construction initializer of createCollisionTimeOfImpact2D', () => {
30
+ expect(typeof initializeCollisionTimeOfImpact2D).toBe('function');
31
+ });
32
+ });
24
33
  describe('sweepCollisionShape2D', () => {
25
34
  it('keeps continuous-SAT state isolated from a nested sweep triggered by the output setter', () => {
26
35
  const out = createCollisionTimeOfImpact2D();
@@ -4,7 +4,11 @@ import { beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
5
  import { registerBuiltInCollisionSupports3D } from './collisionSupport3D';
6
6
  import { createCollisionManifold3D } from './manifold3D';
7
- import { createCollisionTimeOfImpact3D, sweepCollisionShape3D } from './sweepCollisionShape3D';
7
+ import {
8
+ createCollisionTimeOfImpact3D,
9
+ initializeCollisionTimeOfImpact3D,
10
+ sweepCollisionShape3D,
11
+ } from './sweepCollisionShape3D';
8
12
  import { testCollision3D } from './testCollision3D';
9
13
 
10
14
  beforeEach(() => {
@@ -35,6 +39,15 @@ describe('createCollisionTimeOfImpact3D', () => {
35
39
  });
36
40
  });
37
41
 
42
+ describe('initializeCollisionTimeOfImpact3D', () => {
43
+ it('is the construction initializer of createCollisionTimeOfImpact3D', () => {
44
+ expect(typeof initializeCollisionTimeOfImpact3D).toBe('function');
45
+ });
46
+ });
47
+
48
+ function createManifold(): CollisionManifold3D {
49
+ return createCollisionManifold3D();
50
+ }
38
51
  describe('sweepCollisionShape3D', () => {
39
52
  it('finds the exact impact fraction for two approaching spheres', () => {
40
53
  // A at x=0 r=1 moving +10x; B fixed at x=10 r=1. Surfaces meet when the centres are 2 apart, so A
@@ -182,7 +195,3 @@ describe('sweepCollisionShape3D', () => {
182
195
  expect(out.fraction).toBeLessThan(1);
183
196
  });
184
197
  });
185
-
186
- function createManifold(): CollisionManifold3D {
187
- return createCollisionManifold3D();
188
- }
@@ -13,6 +13,8 @@ import {
13
13
  createCollisionTriangleMesh3D,
14
14
  getCollisionHeightfieldValidationStatus3D,
15
15
  getCollisionTriangleMeshValidationStatus3D,
16
+ initializeCollisionHeightfield3D,
17
+ initializeCollisionTriangleMesh3D,
16
18
  invalidateCollisionHeightfield3D,
17
19
  invalidateCollisionTriangleMesh3D,
18
20
  raycastCollisionHeightfield3D,
@@ -157,6 +159,18 @@ describe('getCollisionTriangleMeshValidationStatus3D', () => {
157
159
  });
158
160
  });
159
161
 
162
+ describe('initializeCollisionHeightfield3D', () => {
163
+ it('is the construction initializer of createCollisionHeightfield3D', () => {
164
+ expect(typeof initializeCollisionHeightfield3D).toBe('function');
165
+ });
166
+ });
167
+
168
+ describe('initializeCollisionTriangleMesh3D', () => {
169
+ it('is the construction initializer of createCollisionTriangleMesh3D', () => {
170
+ expect(typeof initializeCollisionTriangleMesh3D).toBe('function');
171
+ });
172
+ });
173
+
160
174
  describe('invalidateCollisionHeightfield3D', () => {
161
175
  it('increments the payload version', () => {
162
176
  const heightfield = createCollisionHeightfield3D(2, 2, [0, 0, 0, 0]);
@@ -217,6 +231,9 @@ describe('sweepCollisionTriangleMesh3D', () => {
217
231
  });
218
232
  });
219
233
 
234
+ function createFloorMesh() {
235
+ return createCollisionTriangleMesh3D([-5, 0, -5, 5, 0, -5, 5, 0, 5, -5, 0, 5], [0, 2, 1, 0, 3, 2]);
236
+ }
220
237
  describe('writeCollisionHeightfieldBounds3D', () => {
221
238
  it('includes the height samples and pose', () => {
222
239
  const heightfield = createCollisionHeightfield3D(2, 2, [0, 1, -1, 0], 2, 3);
@@ -241,7 +258,3 @@ describe('writeCollisionTriangleMeshBounds3D', () => {
241
258
  expect(bounds.maxY).toBeCloseTo(5, 12);
242
259
  });
243
260
  });
244
-
245
- function createFloorMesh() {
246
- return createCollisionTriangleMesh3D([-5, 0, -5, 5, 0, -5, 5, 0, 5, -5, 0, 5], [0, 2, 1, 0, 3, 2]);
247
- }