@flighthq/camera 0.2.1-next.841.373388f → 0.3.0-edge.1516.1b4fb2b

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 (72) hide show
  1. package/dist/basis.d.ts +1 -1
  2. package/dist/basis.d.ts.map +1 -1
  3. package/dist/camera.d.ts +2 -2
  4. package/dist/camera.d.ts.map +1 -1
  5. package/dist/camera.js +31 -21
  6. package/dist/camera.js.map +1 -1
  7. package/dist/camera2d.d.ts +1 -1
  8. package/dist/camera2d.d.ts.map +1 -1
  9. package/dist/contract.d.ts +16 -0
  10. package/dist/contract.d.ts.map +1 -0
  11. package/dist/contract.js +16 -0
  12. package/dist/contract.js.map +1 -0
  13. package/dist/culling.d.ts +1 -1
  14. package/dist/culling.d.ts.map +1 -1
  15. package/dist/culling.js +1 -1
  16. package/dist/culling.js.map +1 -1
  17. package/dist/depth.d.ts +1 -1
  18. package/dist/depth.d.ts.map +1 -1
  19. package/dist/frustumCorners.d.ts +1 -1
  20. package/dist/frustumCorners.d.ts.map +1 -1
  21. package/dist/frustumCorners.js +1 -1
  22. package/dist/frustumCorners.js.map +1 -1
  23. package/dist/index.d.ts +1 -15
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -15
  26. package/dist/index.js.map +1 -1
  27. package/dist/intersection.d.ts +1 -1
  28. package/dist/intersection.d.ts.map +1 -1
  29. package/dist/parallax.d.ts +1 -1
  30. package/dist/parallax.d.ts.map +1 -1
  31. package/dist/parallax.js +1 -1
  32. package/dist/parallax.js.map +1 -1
  33. package/dist/picking.d.ts +1 -1
  34. package/dist/picking.d.ts.map +1 -1
  35. package/dist/picking.js +1 -1
  36. package/dist/picking.js.map +1 -1
  37. package/dist/projection.d.ts +2 -2
  38. package/dist/projection.d.ts.map +1 -1
  39. package/dist/projection.js +1 -1
  40. package/dist/projection.js.map +1 -1
  41. package/dist/projection2d.d.ts +1 -1
  42. package/dist/projection2d.d.ts.map +1 -1
  43. package/dist/projection2d.js +1 -1
  44. package/dist/projection2d.js.map +1 -1
  45. package/dist/shadowCamera.d.ts +1 -1
  46. package/dist/shadowCamera.d.ts.map +1 -1
  47. package/dist/viewMatrix.d.ts +1 -1
  48. package/dist/viewMatrix.d.ts.map +1 -1
  49. package/dist/viewMatrix.js +1 -1
  50. package/dist/viewMatrix.js.map +1 -1
  51. package/dist/visibleBounds.d.ts +1 -1
  52. package/dist/visibleBounds.d.ts.map +1 -1
  53. package/dist/visibleBounds.js +1 -1
  54. package/dist/visibleBounds.js.map +1 -1
  55. package/dist/zoom.d.ts +1 -1
  56. package/dist/zoom.d.ts.map +1 -1
  57. package/dist/zoom.js +1 -1
  58. package/dist/zoom.js.map +1 -1
  59. package/package.json +8 -4
  60. package/src/basis.test.ts +1 -1
  61. package/src/camera.test.ts +42 -22
  62. package/src/culling.test.ts +1 -1
  63. package/src/frustumCorners.test.ts +2 -2
  64. package/src/intersection.test.ts +1 -1
  65. package/src/parallax.test.ts +1 -1
  66. package/src/picking.test.ts +1 -1
  67. package/src/projection.test.ts +2 -2
  68. package/src/projection2d.test.ts +1 -1
  69. package/src/shadowCamera.test.ts +2 -2
  70. package/src/viewMatrix.test.ts +1 -1
  71. package/src/visibleBounds.test.ts +1 -1
  72. package/src/zoom.test.ts +1 -1
package/dist/basis.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Camera3D, Vector3Like } from '@flighthq/types';
1
+ import type { Camera3D, Vector3Like } from '@flighthq/types/contract';
2
2
  export declare function getCamera3DForward(out: Vector3Like, camera: Readonly<Camera3D>): void;
3
3
  export declare function getCamera3DPosition(out: Vector3Like, camera: Readonly<Camera3D>): void;
4
4
  export declare function getCamera3DRight(out: Vector3Like, camera: Readonly<Camera3D>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"basis.d.ts","sourceRoot":"","sources":["../src/basis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO7D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAOrF;AAWD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAuBtF;AAMD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAKnF;AAMD,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAKhF"}
1
+ {"version":3,"file":"basis.d.ts","sourceRoot":"","sources":["../src/basis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOtE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAOrF;AAWD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAuBtF;AAMD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAKnF;AAMD,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAKhF"}
package/dist/camera.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Camera3D, Camera3DOptions, Matrix4Like, Vector3Like } from '@flighthq/types';
1
+ import type { Camera3D, Camera3DOptions, Matrix4Like, Vector3Like } from '@flighthq/types/contract';
2
2
  export declare function createCamera3D(opts: Readonly<Camera3DOptions>): Camera3D;
3
3
  export declare function getCamera3DInverseViewProjectionMatrix4(out: Matrix4Like, camera: Readonly<Camera3D>, aspect: number): boolean;
4
4
  export declare function getCamera3DViewProjectionMatrix4(out: Matrix4Like, camera: Readonly<Camera3D>, aspect: number): void;
@@ -6,5 +6,5 @@ export declare function setCamera3DAspect(camera: Camera3D, aspect: number): voi
6
6
  export declare function setCamera3DJitter(camera: Camera3D, x: number, y: number): void;
7
7
  export declare function setCamera3DViewMatrix4FromLookAt(camera: Camera3D, eye: Readonly<Vector3Like>, target: Readonly<Vector3Like>, up: Readonly<Vector3Like>): void;
8
8
  export declare function setCamera3DViewMatrix4FromMatrix4(camera: Camera3D, view: Readonly<Matrix4Like>): void;
9
- export declare function updateCamera3DInverseViewProjection(camera: Camera3D, aspect: number): boolean;
9
+ export declare function updateCamera3DInverseViewProjection(camera: Readonly<Camera3D>, aspect: number): boolean;
10
10
  //# sourceMappingURL=camera.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAU3F,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ,CASxE;AAUD,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAGT;AAQD,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGnH;AAQD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOxE;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAG9E;AAOD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,GACxB,IAAI,CAEN;AAID,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAErG;AAQD,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAO7F"}
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUpG,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ,CASxE;AASD,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAGT;AAQD,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAInH;AAQD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOxE;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAG9E;AAOD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,GACxB,IAAI,CAEN;AAID,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAErG;AAMD,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAIvG"}
package/dist/camera.js CHANGED
@@ -1,12 +1,12 @@
1
- import { createEntity } from '@flighthq/entity';
2
- import { createMatrix4, createVector2, inverseMatrix4, multiplyMatrix4, setMatrix4LookAt } from '@flighthq/geometry';
1
+ import { createEntity } from '@flighthq/entity/contract';
2
+ import { createMatrix4, createVector2, inverseMatrix4, multiplyMatrix4, setMatrix4LookAt, } from '@flighthq/geometry/contract';
3
3
  import { setProjectionMatrix4 } from './projection';
4
4
  // Allocates a 3D camera. The camera stores its projection descriptor, a world->view Matrix4
5
5
  // (`view`, initialized to identity), the clip-plane distances `near`/`far`, the per-frame
6
- // sub-pixel NDC `jitter` (consumed by TAA, initialized to zero), and a cached
7
- // `inverseViewProjection` (consumed by TAA / velocity / fog / depth-of-field, initialized to
8
- // identity). The view matrix is canonical: the camera has no separate Transform3D — a Matrix4 is
9
- // the only world->view representation.
6
+ // sub-pixel NDC `jitter` (applied to every projection, initialized to zero), and the last
7
+ // `inverseViewProjection` computed for a reconstruction pass (initialized to identity). The view
8
+ // matrix is canonical: the camera has no separate Transform3D — a Matrix4 is the only world->view
9
+ // representation.
10
10
  export function createCamera3D(opts) {
11
11
  return createEntity({
12
12
  far: opts.far,
@@ -19,12 +19,11 @@ export function createCamera3D(opts) {
19
19
  }
20
20
  // Writes the inverse of the camera's view-projection matrix into `out` and returns true, or
21
21
  // returns false (writing NaN into `out`) when the view-projection is non-invertible. `aspect`
22
- // is the viewport width / height. This is the matrix the existing TAA / velocity / fog /
23
- // depth-of-field effects consume to reconstruct world position from NDC.
22
+ // is the viewport width / height. Skybox and other world-position reconstruction passes use this
23
+ // calculation to refresh Camera3D.inverseViewProjection immediately before consuming it.
24
24
  //
25
25
  // Reads camera fields into a scratch matrix before writing `out`, so it is safe even if `out`
26
- // aliases the camera's own `inverseViewProjection` or `view`. Use
27
- // `updateCamera3DInverseViewProjection` instead to safely update the cached field.
26
+ // aliases the camera's own `inverseViewProjection` or `view`.
28
27
  export function getCamera3DInverseViewProjectionMatrix4(out, camera, aspect) {
29
28
  getCamera3DViewProjectionMatrix4(__scratchViewProjection, camera, aspect);
30
29
  return inverseMatrix4(out, __scratchViewProjection);
@@ -37,6 +36,7 @@ export function getCamera3DInverseViewProjectionMatrix4(out, camera, aspect) {
37
36
  // aliases the camera's own `view`.
38
37
  export function getCamera3DViewProjectionMatrix4(out, camera, aspect) {
39
38
  setProjectionMatrix4(__scratchProjection, camera.projection, aspect, camera.near, camera.far);
39
+ applyCamera3DProjectionJitter(__scratchProjection, camera.jitter.x, camera.jitter.y);
40
40
  multiplyMatrix4(out, __scratchProjection, camera.view);
41
41
  }
42
42
  // Sets the viewport aspect ratio (width / height) on the camera's projection, in place. For a
@@ -53,8 +53,8 @@ export function setCamera3DAspect(camera, aspect) {
53
53
  }
54
54
  projection.halfWidth = projection.halfHeight * aspect;
55
55
  }
56
- // Sets the camera's per-frame sub-pixel jitter offset (in NDC), in place. TAA reads this when
57
- // building the jittered projection matrix.
56
+ // Sets the camera's per-frame sub-pixel jitter offset (in NDC), in place. Every view-projection
57
+ // helper applies it to clip X/Y before the perspective divide.
58
58
  export function setCamera3DJitter(camera, x, y) {
59
59
  camera.jitter.x = x;
60
60
  camera.jitter.y = y;
@@ -72,20 +72,30 @@ export function setCamera3DViewMatrix4FromLookAt(camera, eye, target, up) {
72
72
  export function setCamera3DViewMatrix4FromMatrix4(camera, view) {
73
73
  camera.view.m.set(view.m);
74
74
  }
75
- // Recomputes and stores the inverse view-projection into camera.inverseViewProjection for the
76
- // given aspect. Returns true on success or false when the matrix is non-invertible (leaving the
77
- // cached field untouched). `aspect` is viewport width / height.
78
- //
79
- // Call this once per frame after setting the view matrix and before any effects that read
80
- // camera.inverseViewProjection (TAA, velocity, fog, depth-of-field).
75
+ // Refreshes the camera's required inverse-view-projection cache for the supplied viewport aspect.
76
+ // Returns true on success or false when projection×view is non-invertible, leaving the prior valid
77
+ // cache untouched. Reconstruction consumers call this immediately before reading the field so it
78
+ // cannot silently drift after mutable camera inputs change.
81
79
  export function updateCamera3DInverseViewProjection(camera, aspect) {
82
- // Write into a scratch first so the cache is never clobbered with NaN on failure.
83
80
  const ok = getCamera3DInverseViewProjectionMatrix4(__scratchInverse, camera, aspect);
84
- if (ok) {
81
+ if (ok)
85
82
  camera.inverseViewProjection.m.set(__scratchInverse.m);
86
- }
87
83
  return ok;
88
84
  }
85
+ // Applies an NDC translation to a projection matrix: clip.xy += jitter * clip.w. Expressing it as
86
+ // row operations handles perspective (offset in m[8]/m[9]) and orthographic (m[12]/m[13]) matrices
87
+ // uniformly.
88
+ function applyCamera3DProjectionJitter(out, x, y) {
89
+ const m = out.m;
90
+ m[0] += x * m[3];
91
+ m[4] += x * m[7];
92
+ m[8] += x * m[11];
93
+ m[12] += x * m[15];
94
+ m[1] += y * m[3];
95
+ m[5] += y * m[7];
96
+ m[9] += y * m[11];
97
+ m[13] += y * m[15];
98
+ }
89
99
  // Scratch matrices reused by the view-projection helpers. Single-threaded; not re-entrant.
90
100
  const __scratchInverse = createMatrix4();
91
101
  const __scratchProjection = createMatrix4();
@@ -1 +1 @@
1
- {"version":3,"file":"camera.js","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { Camera2D, Camera2DOptions } from '@flighthq/types';
1
+ import type { Camera2D, Camera2DOptions } from '@flighthq/types/contract';
2
2
  export declare function createCamera2D(viewportWidth: number, viewportHeight: number, options?: Readonly<Camera2DOptions>): Camera2D;
3
3
  //# sourceMappingURL=camera2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"camera2d.d.ts","sourceRoot":"","sources":["../src/camera2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMjE,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,QAAQ,CASV"}
1
+ {"version":3,"file":"camera2d.d.ts","sourceRoot":"","sources":["../src/camera2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAM1E,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,QAAQ,CASV"}
@@ -0,0 +1,16 @@
1
+ export * from './basis';
2
+ export * from './camera';
3
+ export * from './camera2d';
4
+ export * from './culling';
5
+ export * from './depth';
6
+ export * from './frustumCorners';
7
+ export * from './intersection';
8
+ export * from './parallax';
9
+ export * from './picking';
10
+ export * from './projection';
11
+ export * from './projection2d';
12
+ export * from './shadowCamera';
13
+ export * from './viewMatrix';
14
+ export * from './visibleBounds';
15
+ export * from './zoom';
16
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,16 @@
1
+ export * from './basis';
2
+ export * from './camera';
3
+ export * from './camera2d';
4
+ export * from './culling';
5
+ export * from './depth';
6
+ export * from './frustumCorners';
7
+ export * from './intersection';
8
+ export * from './parallax';
9
+ export * from './picking';
10
+ export * from './projection';
11
+ export * from './projection2d';
12
+ export * from './shadowCamera';
13
+ export * from './viewMatrix';
14
+ export * from './visibleBounds';
15
+ export * from './zoom';
16
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
package/dist/culling.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AabbLike, BoundingSphereLike, Camera3D, FrustumLike, Vector3Like } from '@flighthq/types';
1
+ import type { AabbLike, BoundingSphereLike, Camera3D, FrustumLike, Vector3Like } from '@flighthq/types/contract';
2
2
  export declare function getCamera3DFrustum(out: FrustumLike, camera: Readonly<Camera3D>, aspect: number): void;
3
3
  export declare function isBoxInCamera3DFrustum(camera: Readonly<Camera3D>, aabb: Readonly<AabbLike>, aspect: number): boolean;
4
4
  export declare function isPointInCamera3DFrustum(camera: Readonly<Camera3D>, point: Readonly<Vector3Like>, aspect: number): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"culling.d.ts","sourceRoot":"","sources":["../src/culling.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAYxG,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGrG;AAOD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGpH;AAID,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAGT;AAID,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAGT"}
1
+ {"version":3,"file":"culling.d.ts","sourceRoot":"","sources":["../src/culling.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAYjH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGrG;AAOD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGpH;AAID,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAGT;AAID,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAGT"}
package/dist/culling.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createFrustum, createMatrix4, isFrustumContainingPoint, isFrustumIntersectingAabb, isFrustumIntersectingSphere, setFrustumFromMatrix4, } from '@flighthq/geometry';
1
+ import { createFrustum, createMatrix4, isFrustumContainingPoint, isFrustumIntersectingAabb, isFrustumIntersectingSphere, setFrustumFromMatrix4, } from '@flighthq/geometry/contract';
2
2
  import { getCamera3DViewProjectionMatrix4 } from './camera';
3
3
  // Extracts the six clip planes of the camera's view frustum into `out` and returns true.
4
4
  // The planes are normalized with inward-pointing normals (the convention used by geometry's
@@ -1 +1 @@
1
- {"version":3,"file":"culling.js","sourceRoot":"","sources":["../src/culling.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAE5D,yFAAyF;AACzF,4FAA4F;AAC5F,uFAAuF;AACvF,uCAAuC;AACvC,EAAE;AACF,8FAA8F;AAC9F,2GAA2G;AAC3G,gDAAgD;AAChD,MAAM,UAAU,kBAAkB,CAAC,GAAgB,EAAE,MAA0B,EAAE,MAAc;IAC7F,gCAAgC,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1E,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;AACtD,CAAC;AAED,0FAA0F;AAC1F,6FAA6F;AAC7F,EAAE;AACF,2FAA2F;AAC3F,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB,CAAC,MAA0B,EAAE,IAAwB,EAAE,MAAc;IACzG,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,yBAAyB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,wEAAwE;AACxE,uCAAuC;AACvC,MAAM,UAAU,wBAAwB,CACtC,MAA0B,EAC1B,KAA4B,EAC5B,MAAc;IAEd,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,wBAAwB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,wFAAwF;AACxF,+FAA+F;AAC/F,MAAM,UAAU,yBAAyB,CACvC,MAA0B,EAC1B,MAAoC,EACpC,MAAc;IAEd,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,wEAAwE;AACxE,MAAM,uBAAuB,GAAG,aAAa,EAAE,CAAC;AAChD,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"culling.js","sourceRoot":"","sources":["../src/culling.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAE5D,yFAAyF;AACzF,4FAA4F;AAC5F,uFAAuF;AACvF,uCAAuC;AACvC,EAAE;AACF,8FAA8F;AAC9F,2GAA2G;AAC3G,gDAAgD;AAChD,MAAM,UAAU,kBAAkB,CAAC,GAAgB,EAAE,MAA0B,EAAE,MAAc;IAC7F,gCAAgC,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1E,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;AACtD,CAAC;AAED,0FAA0F;AAC1F,6FAA6F;AAC7F,EAAE;AACF,2FAA2F;AAC3F,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB,CAAC,MAA0B,EAAE,IAAwB,EAAE,MAAc;IACzG,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,yBAAyB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,wEAAwE;AACxE,uCAAuC;AACvC,MAAM,UAAU,wBAAwB,CACtC,MAA0B,EAC1B,KAA4B,EAC5B,MAAc;IAEd,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,wBAAwB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,wFAAwF;AACxF,+FAA+F;AAC/F,MAAM,UAAU,yBAAyB,CACvC,MAA0B,EAC1B,MAAoC,EACpC,MAAc;IAEd,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,wEAAwE;AACxE,MAAM,uBAAuB,GAAG,aAAa,EAAE,CAAC;AAChD,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC"}
package/dist/depth.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Camera3D } from '@flighthq/types';
1
+ import type { Camera3D } from '@flighthq/types/contract';
2
2
  export declare function getCamera3DLinearDepth(camera: Readonly<Camera3D>, ndcZ: number): number;
3
3
  export declare function getCamera3DViewSpaceZ(camera: Readonly<Camera3D>, ndcZ: number): number;
4
4
  //# sourceMappingURL=depth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"depth.d.ts","sourceRoot":"","sources":["../src/depth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAahD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBvF;AAOD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtF"}
1
+ {"version":3,"file":"depth.d.ts","sourceRoot":"","sources":["../src/depth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAazD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBvF;AAOD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtF"}
@@ -1,3 +1,3 @@
1
- import type { Camera3D, Vector3Like } from '@flighthq/types';
1
+ import type { Camera3D, Vector3Like } from '@flighthq/types/contract';
2
2
  export declare function getCamera3DFrustumCorners(out: [Vector3Like, Vector3Like, Vector3Like, Vector3Like, Vector3Like, Vector3Like, Vector3Like, Vector3Like], camera: Readonly<Camera3D>, aspect: number): boolean;
3
3
  //# sourceMappingURL=frustumCorners.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frustumCorners.d.ts","sourceRoot":"","sources":["../src/frustumCorners.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAoB7D,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,EAC7G,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAyCT"}
1
+ {"version":3,"file":"frustumCorners.d.ts","sourceRoot":"","sources":["../src/frustumCorners.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAoBtE,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,EAC7G,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAyCT"}
@@ -1,4 +1,4 @@
1
- import { createMatrix4, inverseMatrix4 } from '@flighthq/geometry';
1
+ import { createMatrix4, inverseMatrix4 } from '@flighthq/geometry/contract';
2
2
  import { getCamera3DViewProjectionMatrix4 } from './camera';
3
3
  // Writes the 8 world-space corners of the camera frustum into `out` (a length-8 array of
4
4
  // Vector3Like) and returns true. Returns false (leaving `out` untouched) when the
@@ -1 +1 @@
1
- {"version":3,"file":"frustumCorners.js","sourceRoot":"","sources":["../src/frustumCorners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAE5D,yFAAyF;AACzF,kFAAkF;AAClF,0EAA0E;AAC1E,EAAE;AACF,6DAA6D;AAC7D,qCAAqC;AACrC,sCAAsC;AACtC,kCAAkC;AAClC,mCAAmC;AACnC,oCAAoC;AACpC,qCAAqC;AACrC,iCAAiC;AACjC,kCAAkC;AAClC,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,UAAU,yBAAyB,CACvC,GAA6G,EAC7G,MAA0B,EAC1B,MAAc;IAEd,gCAAgC,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;IAC/B,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,UAAU,GAAe;QAC7B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACV,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACV,CAAC;IACF,yDAAyD;IACzD,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,EAAE,IAAI,IAAI,CAAC;YACX,EAAE,IAAI,IAAI,CAAC;YACX,EAAE,IAAI,IAAI,CAAC;QACb,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,MAAM,uBAAuB,GAAG,aAAa,EAAE,CAAC;AAChD,MAAM,kBAAkB,GAAG,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"frustumCorners.js","sourceRoot":"","sources":["../src/frustumCorners.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,16 +1,2 @@
1
- export * from './basis';
2
- export * from './camera';
3
- export * from './camera2d';
4
- export * from './culling';
5
- export * from './depth';
6
- export * from './frustumCorners';
7
- export * from './intersection';
8
- export * from './parallax';
9
- export * from './picking';
10
- export * from './projection';
11
- export * from './projection2d';
12
- export * from './shadowCamera';
13
- export * from './viewMatrix';
14
- export * from './visibleBounds';
15
- export * from './zoom';
1
+ export { configureDirectionalShadowCamera3D, configureDirectionalShadowCamera3DTightFit, createCamera2D, createCamera3D, createOrthographicProjection, createPerspectiveProjection, getCamera2DParallaxPoint, getCamera2DViewMatrix, getCamera2DVisibleBounds, getCamera3DForward, getCamera3DFrustum, getCamera3DFrustumCorners, getCamera3DInverseViewProjectionMatrix4, getCamera3DLinearDepth, getCamera3DPosition, getCamera3DRayThroughBoundingSphere, getCamera3DRight, getCamera3DScreenToWorldRay, getCamera3DUp, getCamera3DViewProjectionMatrix4, getCamera3DViewSpaceZ, getCamera3DWorldToScreen, intersectCamera3DRayWithPlane, isBoxInCamera3DFrustum, isOrthographicProjection, isPerspectiveProjection, isPointInCamera3DFrustum, isSphereInCamera3DFrustum, projectCamera2DPoint, setCamera3DAspect, setCamera3DJitter, setCamera3DViewMatrix4FromLookAt, setCamera3DViewMatrix4FromMatrix4, setProjectionMatrix4, unprojectCamera2DPoint, updateCamera3DInverseViewProjection, zoomCamera2DAtScreenPoint, } from './contract';
16
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,0CAA0C,EAC1C,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,uCAAuC,EACvC,sBAAsB,EACtB,mBAAmB,EACnB,mCAAmC,EACnC,gBAAgB,EAChB,2BAA2B,EAC3B,aAAa,EACb,gCAAgC,EAChC,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,gCAAgC,EAChC,iCAAiC,EACjC,oBAAoB,EACpB,sBAAsB,EACtB,mCAAmC,EACnC,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,16 +1,2 @@
1
- export * from './basis';
2
- export * from './camera';
3
- export * from './camera2d';
4
- export * from './culling';
5
- export * from './depth';
6
- export * from './frustumCorners';
7
- export * from './intersection';
8
- export * from './parallax';
9
- export * from './picking';
10
- export * from './projection';
11
- export * from './projection2d';
12
- export * from './shadowCamera';
13
- export * from './viewMatrix';
14
- export * from './visibleBounds';
15
- export * from './zoom';
1
+ export { configureDirectionalShadowCamera3D, configureDirectionalShadowCamera3DTightFit, createCamera2D, createCamera3D, createOrthographicProjection, createPerspectiveProjection, getCamera2DParallaxPoint, getCamera2DViewMatrix, getCamera2DVisibleBounds, getCamera3DForward, getCamera3DFrustum, getCamera3DFrustumCorners, getCamera3DInverseViewProjectionMatrix4, getCamera3DLinearDepth, getCamera3DPosition, getCamera3DRayThroughBoundingSphere, getCamera3DRight, getCamera3DScreenToWorldRay, getCamera3DUp, getCamera3DViewProjectionMatrix4, getCamera3DViewSpaceZ, getCamera3DWorldToScreen, intersectCamera3DRayWithPlane, isBoxInCamera3DFrustum, isOrthographicProjection, isPerspectiveProjection, isPointInCamera3DFrustum, isSphereInCamera3DFrustum, projectCamera2DPoint, setCamera3DAspect, setCamera3DJitter, setCamera3DViewMatrix4FromLookAt, setCamera3DViewMatrix4FromMatrix4, setProjectionMatrix4, unprojectCamera2DPoint, updateCamera3DInverseViewProjection, zoomCamera2DAtScreenPoint, } from './contract';
16
2
  //# 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,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,0CAA0C,EAC1C,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,uCAAuC,EACvC,sBAAsB,EACtB,mBAAmB,EACnB,mCAAmC,EACnC,gBAAgB,EAChB,2BAA2B,EAC3B,aAAa,EACb,gCAAgC,EAChC,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,gCAAgC,EAChC,iCAAiC,EACjC,oBAAoB,EACpB,sBAAsB,EACtB,mCAAmC,EACnC,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { BoundingSphereLike, Camera3D, PlaneLike, Ray3DLike, Vector3Like } from '@flighthq/types';
1
+ import type { BoundingSphereLike, Camera3D, PlaneLike, Ray3DLike, Vector3Like } from '@flighthq/types/contract';
2
2
  export declare function getCamera3DRayThroughBoundingSphere(out: Ray3DLike, camera: Readonly<Camera3D>, sphere: Readonly<BoundingSphereLike>, aspect: number): boolean;
3
3
  export declare function intersectCamera3DRayWithPlane(out: Vector3Like, ray: Readonly<Ray3DLike>, plane: Readonly<PlaneLike>): boolean;
4
4
  //# sourceMappingURL=intersection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../src/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiBvG,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAUT;AAgBD,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,EACxB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,GACzB,OAAO,CA0BT"}
1
+ {"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../src/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAiBhH,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAUT;AAgBD,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,EACxB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,GACzB,OAAO,CA0BT"}
@@ -1,3 +1,3 @@
1
- import type { Camera2D, Vector2Like } from '@flighthq/types';
1
+ import type { Camera2D, Vector2Like } from '@flighthq/types/contract';
2
2
  export declare function getCamera2DParallaxPoint(camera: Readonly<Camera2D>, factor: number, out: Vector2Like): void;
3
3
  //# sourceMappingURL=parallax.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parallax.d.ts","sourceRoot":"","sources":["../src/parallax.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAkB7D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAI3G"}
1
+ {"version":3,"file":"parallax.d.ts","sourceRoot":"","sources":["../src/parallax.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAkBtE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAI3G"}
package/dist/parallax.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createMatrix } from '@flighthq/geometry';
1
+ import { createMatrix } from '@flighthq/geometry/contract';
2
2
  import { getCamera2DViewMatrix } from './viewMatrix';
3
3
  // Writes the screen-space scroll offset for a parallax layer at depth `factor` into `out`.
4
4
  //
@@ -1 +1 @@
1
- {"version":3,"file":"parallax.js","sourceRoot":"","sources":["../src/parallax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,2FAA2F;AAC3F,EAAE;AACF,mGAAmG;AACnG,sGAAsG;AACtG,sGAAsG;AACtG,6BAA6B;AAC7B,EAAE;AACF,qFAAqF;AACrF,kGAAkG;AAClG,uCAAuC;AACvC,kGAAkG;AAClG,EAAE;AACF,gGAAgG;AAChG,gCAAgC;AAChC,MAAM,UAAU,wBAAwB,CAAC,MAA0B,EAAE,MAAc,EAAE,GAAgB;IACnG,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACjE,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;AACpE,CAAC;AAED,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"parallax.js","sourceRoot":"","sources":["../src/parallax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,2FAA2F;AAC3F,EAAE;AACF,mGAAmG;AACnG,sGAAsG;AACtG,sGAAsG;AACtG,6BAA6B;AAC7B,EAAE;AACF,qFAAqF;AACrF,kGAAkG;AAClG,uCAAuC;AACvC,kGAAkG;AAClG,EAAE;AACF,gGAAgG;AAChG,gCAAgC;AAChC,MAAM,UAAU,wBAAwB,CAAC,MAA0B,EAAE,MAAc,EAAE,GAAgB;IACnG,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACjE,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;AACpE,CAAC;AAED,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC"}
package/dist/picking.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Camera3D, Ray3DLike, Vector3Like } from '@flighthq/types';
1
+ import type { Camera3D, Ray3DLike, Vector3Like } from '@flighthq/types/contract';
2
2
  export declare function getCamera3DScreenToWorldRay(out: Ray3DLike, camera: Readonly<Camera3D>, ndcX: number, ndcY: number, aspect: number): boolean;
3
3
  export declare function getCamera3DWorldToScreen(out: Vector3Like, camera: Readonly<Camera3D>, worldPoint: Readonly<Vector3Like>, aspect: number): boolean;
4
4
  //# sourceMappingURL=picking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"picking.d.ts","sourceRoot":"","sources":["../src/picking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAcxE,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CA8CT;AAUD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,EACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAkBT"}
1
+ {"version":3,"file":"picking.d.ts","sourceRoot":"","sources":["../src/picking.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAcjF,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CA8CT;AAUD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,EACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAkBT"}
package/dist/picking.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createMatrix4, createVector3, inverseMatrix4, normalizeVector3, subtractVector3 } from '@flighthq/geometry';
1
+ import { createMatrix4, createVector3, inverseMatrix4, normalizeVector3, subtractVector3, } from '@flighthq/geometry/contract';
2
2
  import { getCamera3DViewProjectionMatrix4 } from './camera';
3
3
  // Writes the world-space ray from the camera through an NDC screen point (ndcX, ndcY) into
4
4
  // `out` and returns true, or returns false (leaving `out` untouched) when the view-projection
@@ -1 +1 @@
1
- {"version":3,"file":"picking.js","sourceRoot":"","sources":["../src/picking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picking.js","sourceRoot":"","sources":["../src/picking.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Matrix4Like } from '@flighthq/types';
2
- import type { OrthographicProjection, OrthographicProjectionOptions, PerspectiveProjection, PerspectiveProjectionOptions, Projection } from '@flighthq/types';
1
+ import type { Matrix4Like } from '@flighthq/types/contract';
2
+ import type { OrthographicProjection, OrthographicProjectionOptions, PerspectiveProjection, PerspectiveProjectionOptions, Projection } from '@flighthq/types/contract';
3
3
  export declare function createOrthographicProjection(opts: Readonly<OrthographicProjectionOptions>): OrthographicProjection;
4
4
  export declare function createPerspectiveProjection(opts: Readonly<PerspectiveProjectionOptions>): PerspectiveProjection;
5
5
  export declare function isOrthographicProjection(projection: Readonly<Projection>): projection is OrthographicProjection;
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EACV,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,UAAU,EACX,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,sBAAsB,CAMlH;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAAG,qBAAqB,CAM/G;AAGD,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,IAAI,sBAAsB,CAE/G;AAGD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,IAAI,qBAAqB,CAE7G;AAUD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAWN"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EACV,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,UAAU,EACX,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,sBAAsB,CAMlH;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAAG,qBAAqB,CAM/G;AAGD,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,IAAI,sBAAsB,CAE/G;AAGD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,IAAI,qBAAqB,CAE7G;AAUD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAWN"}
@@ -1,4 +1,4 @@
1
- import { setOrthographicMatrix4, setPerspectiveMatrix4 } from '@flighthq/geometry';
1
+ import { setOrthographicMatrix4, setPerspectiveMatrix4 } from '@flighthq/geometry/contract';
2
2
  // Builds an orthographic projection descriptor from explicit view-volume half-extents (in
3
3
  // view-space units). The full visible width is 2*halfWidth and height 2*halfHeight; the
4
4
  // clip-plane distances live on the owning Camera3D, not the projection.
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAUnF,0FAA0F;AAC1F,wFAAwF;AACxF,wEAAwE;AACxE,MAAM,UAAU,4BAA4B,CAAC,IAA6C;IACxF,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,gGAAgG;AAChG,MAAM,UAAU,2BAA2B,CAAC,IAA4C;IACtF,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,aAAa;KACpB,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,wBAAwB,CAAC,UAAgC;IACvE,OAAO,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC;AAC5C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,UAAgC;IACtE,OAAO,UAAU,CAAC,IAAI,KAAK,aAAa,CAAC;AAC3C,CAAC;AAED,iGAAiG;AACjG,uFAAuF;AACvF,iGAAiG;AACjG,iGAAiG;AACjG,6CAA6C;AAC7C,EAAE;AACF,4FAA4F;AAC5F,yCAAyC;AACzC,MAAM,UAAU,oBAAoB,CAClC,GAAgB,EAChB,UAAgC,EAChC,MAAc,EACd,IAAY,EACZ,GAAW;IAEX,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACtC,0FAA0F;QAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QACpD,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,sBAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAU5F,0FAA0F;AAC1F,wFAAwF;AACxF,wEAAwE;AACxE,MAAM,UAAU,4BAA4B,CAAC,IAA6C;IACxF,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,gGAAgG;AAChG,MAAM,UAAU,2BAA2B,CAAC,IAA4C;IACtF,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,aAAa;KACpB,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,wBAAwB,CAAC,UAAgC;IACvE,OAAO,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC;AAC5C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,UAAgC;IACtE,OAAO,UAAU,CAAC,IAAI,KAAK,aAAa,CAAC;AAC3C,CAAC;AAED,iGAAiG;AACjG,uFAAuF;AACvF,iGAAiG;AACjG,iGAAiG;AACjG,6CAA6C;AAC7C,EAAE;AACF,4FAA4F;AAC5F,yCAAyC;AACzC,MAAM,UAAU,oBAAoB,CAClC,GAAgB,EAChB,UAAgC,EAChC,MAAc,EACd,IAAY,EACZ,GAAW;IAEX,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACtC,0FAA0F;QAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QACpD,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,sBAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACzF,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Camera2D, Vector2Like } from '@flighthq/types';
1
+ import type { Camera2D, Vector2Like } from '@flighthq/types/contract';
2
2
  export declare function projectCamera2DPoint(camera: Readonly<Camera2D>, worldX: number, worldY: number, out: Vector2Like): void;
3
3
  export declare function unprojectCamera2DPoint(camera: Readonly<Camera2D>, screenX: number, screenY: number, out: Vector2Like): void;
4
4
  //# sourceMappingURL=projection2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projection2d.d.ts","sourceRoot":"","sources":["../src/projection2d.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAM7D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,GACf,IAAI,CAGN;AAKD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,WAAW,GACf,IAAI,CAGN"}
1
+ {"version":3,"file":"projection2d.d.ts","sourceRoot":"","sources":["../src/projection2d.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMtE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,GACf,IAAI,CAGN;AAKD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,WAAW,GACf,IAAI,CAGN"}
@@ -1,4 +1,4 @@
1
- import { createMatrix, inverseMatrixTransformPointXY, matrixTransformPointXY } from '@flighthq/geometry';
1
+ import { createMatrix, inverseMatrixTransformPointXY, matrixTransformPointXY } from '@flighthq/geometry/contract';
2
2
  import { getCamera2DViewMatrix } from './viewMatrix';
3
3
  // Projects a world point to its screen position through the camera's view matrix and writes the
4
4
  // result to `out` (world -> screen). The inverse is `unprojectCamera2DPoint`.
@@ -1 +1 @@
1
- {"version":3,"file":"projection2d.js","sourceRoot":"","sources":["../src/projection2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,gGAAgG;AAChG,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAClC,MAA0B,EAC1B,MAAc,EACd,MAAc,EACd,GAAgB;IAEhB,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,8FAA8F;AAC9F,wFAAwF;AACxF,0BAA0B;AAC1B,MAAM,UAAU,sBAAsB,CACpC,MAA0B,EAC1B,OAAe,EACf,OAAe,EACf,GAAgB;IAEhB,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,6BAA6B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"projection2d.js","sourceRoot":"","sources":["../src/projection2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGlH,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,gGAAgG;AAChG,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAClC,MAA0B,EAC1B,MAAc,EACd,MAAc,EACd,GAAgB;IAEhB,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,8FAA8F;AAC9F,wFAAwF;AACxF,0BAA0B;AAC1B,MAAM,UAAU,sBAAsB,CACpC,MAA0B,EAC1B,OAAe,EACf,OAAe,EACf,GAAgB;IAEhB,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,6BAA6B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AabbLike, Camera3D, Vector3Like } from '@flighthq/types';
1
+ import type { AabbLike, Camera3D, Vector3Like } from '@flighthq/types/contract';
2
2
  export declare function configureDirectionalShadowCamera3D(camera: Camera3D, lightDirection: Readonly<Vector3Like>, sceneBounds: Readonly<AabbLike>): void;
3
3
  export declare function configureDirectionalShadowCamera3DTightFit(camera: Camera3D, lightDirection: Readonly<Vector3Like>, worldBounds: Readonly<AabbLike>, padding?: number): void;
4
4
  //# sourceMappingURL=shadowCamera.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shadowCamera.d.ts","sourceRoot":"","sources":["../src/shadowCamera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAavE,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,QAAQ,EAChB,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,EACrC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC9B,IAAI,CA8BN;AAWD,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,QAAQ,EAChB,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,EACrC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC/B,OAAO,SAAI,GACV,IAAI,CAgEN"}
1
+ {"version":3,"file":"shadowCamera.d.ts","sourceRoot":"","sources":["../src/shadowCamera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAahF,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,QAAQ,EAChB,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,EACrC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC9B,IAAI,CA8BN;AAWD,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,QAAQ,EAChB,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,EACrC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC/B,OAAO,SAAI,GACV,IAAI,CAgEN"}
@@ -1,3 +1,3 @@
1
- import type { Camera2D, MatrixLike } from '@flighthq/types';
1
+ import type { Camera2D, MatrixLike } from '@flighthq/types/contract';
2
2
  export declare function getCamera2DViewMatrix(camera: Readonly<Camera2D>, out: MatrixLike): void;
3
3
  //# sourceMappingURL=viewMatrix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewMatrix.d.ts","sourceRoot":"","sources":["../src/viewMatrix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAc5D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAIvF"}
1
+ {"version":3,"file":"viewMatrix.d.ts","sourceRoot":"","sources":["../src/viewMatrix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAcrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAIvF"}
@@ -1,4 +1,4 @@
1
- import { setTransformMatrix, translateMatrixByVectorXY } from '@flighthq/geometry';
1
+ import { setTransformMatrix, translateMatrixByVectorXY } from '@flighthq/geometry/contract';
2
2
  // Writes the camera's world->screen affine into `out`.
3
3
  //
4
4
  // Composition order (outermost transform applied last to a world point):
@@ -1 +1 @@
1
- {"version":3,"file":"viewMatrix.js","sourceRoot":"","sources":["../src/viewMatrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGnF,uDAAuD;AACvD,EAAE;AACF,yEAAyE;AACzE,EAAE;AACF,qGAAqG;AACrG,EAAE;AACF,kGAAkG;AAClG,iGAAiG;AACjG,wFAAwF;AACxF,mGAAmG;AACnG,oGAAoG;AACpG,sEAAsE;AACtE,MAAM,UAAU,qBAAqB,CAAC,MAA0B,EAAE,GAAe;IAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,GAAG,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;IAC/G,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"viewMatrix.js","sourceRoot":"","sources":["../src/viewMatrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAG5F,uDAAuD;AACvD,EAAE;AACF,yEAAyE;AACzE,EAAE;AACF,qGAAqG;AACrG,EAAE;AACF,kGAAkG;AAClG,iGAAiG;AACjG,wFAAwF;AACxF,mGAAmG;AACnG,oGAAoG;AACpG,sEAAsE;AACtE,MAAM,UAAU,qBAAqB,CAAC,MAA0B,EAAE,GAAe;IAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,GAAG,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;IAC/G,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { Camera2D, RectangleLike } from '@flighthq/types';
1
+ import type { Camera2D, RectangleLike } from '@flighthq/types/contract';
2
2
  export declare function getCamera2DVisibleBounds(camera: Readonly<Camera2D>, out: RectangleLike): void;
3
3
  //# sourceMappingURL=visibleBounds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visibleBounds.d.ts","sourceRoot":"","sources":["../src/visibleBounds.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAU/D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAI7F"}
1
+ {"version":3,"file":"visibleBounds.d.ts","sourceRoot":"","sources":["../src/visibleBounds.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUxE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAI7F"}
@@ -1,4 +1,4 @@
1
- import { createMatrix, inverseMatrix, matrixTransformBounds } from '@flighthq/geometry';
1
+ import { createMatrix, inverseMatrix, matrixTransformBounds } from '@flighthq/geometry/contract';
2
2
  import { getCamera2DViewMatrix } from './viewMatrix';
3
3
  // Writes the axis-aligned world rectangle the viewport currently covers into `out` — the conservative
4
4
  // cull bound that feeds `@flighthq/spatial` / the renderer's cull. Computed by unprojecting the four
@@ -1 +1 @@
1
- {"version":3,"file":"visibleBounds.js","sourceRoot":"","sources":["../src/visibleBounds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,sGAAsG;AACtG,qGAAqG;AACrG,oGAAoG;AACpG,+FAA+F;AAC/F,kGAAkG;AAClG,gEAAgE;AAChE,MAAM,UAAU,wBAAwB,CAAC,MAA0B,EAAE,GAAkB;IACrF,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC7C,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC;AACtC,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"visibleBounds.js","sourceRoot":"","sources":["../src/visibleBounds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,sGAAsG;AACtG,qGAAqG;AACrG,oGAAoG;AACpG,+FAA+F;AAC/F,kGAAkG;AAClG,gEAAgE;AAChE,MAAM,UAAU,wBAAwB,CAAC,MAA0B,EAAE,GAAkB;IACrF,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC7C,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC;AACtC,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC"}
package/dist/zoom.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { Camera2D } from '@flighthq/types';
1
+ import type { Camera2D } from '@flighthq/types/contract';
2
2
  export declare function zoomCamera2DAtScreenPoint(camera: Camera2D, screenX: number, screenY: number, zoom: number): void;
3
3
  //# sourceMappingURL=zoom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zoom.d.ts","sourceRoot":"","sources":["../src/zoom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWhD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMhH"}
1
+ {"version":3,"file":"zoom.d.ts","sourceRoot":"","sources":["../src/zoom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAWzD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMhH"}
package/dist/zoom.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createVector2 } from '@flighthq/geometry';
1
+ import { createVector2 } from '@flighthq/geometry/contract';
2
2
  import { unprojectCamera2DPoint } from './projection2d';
3
3
  // Sets the camera's `zoom` while keeping the world point currently under `(screenX, screenY)` fixed
4
4
  // on screen (zoom-to-cursor). Because the view's linear part depends only on zoom and rotation (not
package/dist/zoom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"zoom.js","sourceRoot":"","sources":["../src/zoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,oGAAoG;AACpG,oGAAoG;AACpG,+FAA+F;AAC/F,2FAA2F;AAC3F,EAAE;AACF,sGAAsG;AACtG,kEAAkE;AAClE,MAAM,UAAU,yBAAyB,CAAC,MAAgB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAY;IACxG,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/D,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;AACrC,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"zoom.js","sourceRoot":"","sources":["../src/zoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,oGAAoG;AACpG,oGAAoG;AACpG,+FAA+F;AAC/F,2FAA2F;AAC3F,EAAE;AACF,sGAAsG;AACtG,kEAAkE;AAClE,MAAM,UAAU,yBAAyB,CAAC,MAAgB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAY;IACxG,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/D,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;AACrC,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/camera",
3
- "version": "0.2.1-next.841.373388f",
3
+ "version": "0.3.0-edge.1516.1b4fb2b",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -13,6 +13,10 @@
13
13
  ".": {
14
14
  "types": "./dist/index.d.ts",
15
15
  "default": "./dist/index.js"
16
+ },
17
+ "./contract": {
18
+ "types": "./dist/contract.d.ts",
19
+ "default": "./dist/contract.js"
16
20
  }
17
21
  },
18
22
  "files": [
@@ -32,9 +36,9 @@
32
36
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
37
  },
34
38
  "dependencies": {
35
- "@flighthq/entity": "0.2.1-next.841.373388f",
36
- "@flighthq/geometry": "0.2.1-next.841.373388f",
37
- "@flighthq/types": "0.2.1-next.841.373388f"
39
+ "@flighthq/entity": "0.3.0-edge.1516.1b4fb2b",
40
+ "@flighthq/geometry": "0.3.0-edge.1516.1b4fb2b",
41
+ "@flighthq/types": "0.3.0-edge.1516.1b4fb2b"
38
42
  },
39
43
  "devDependencies": {
40
44
  "typescript": "^5.3.0"
package/src/basis.test.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { createVector3 } from '@flighthq/geometry';
1
+ import { createVector3 } from '@flighthq/geometry/contract';
2
2
 
3
3
  import { getCamera3DForward, getCamera3DPosition, getCamera3DRight, getCamera3DUp } from './basis';
4
4
  import { createCamera3D, setCamera3DViewMatrix4FromLookAt } from './camera';
@@ -1,4 +1,10 @@
1
- import { createMatrix4, createVector3, inverseMatrix4, multiplyMatrix4, setMatrix4LookAt } from '@flighthq/geometry';
1
+ import {
2
+ createMatrix4,
3
+ createVector3,
4
+ inverseMatrix4,
5
+ multiplyMatrix4,
6
+ setMatrix4LookAt,
7
+ } from '@flighthq/geometry/contract';
2
8
 
3
9
  import {
4
10
  createCamera3D,
@@ -83,6 +89,23 @@ describe('getCamera3DViewProjectionMatrix4', () => {
83
89
  }
84
90
  });
85
91
 
92
+ it('applies the camera jitter as an NDC projection offset', () => {
93
+ const camera = createCamera3D({
94
+ far: 100,
95
+ near: 0.1,
96
+ projection: createPerspectiveProjection({ aspect: 1, fovY: 1 }),
97
+ });
98
+ const base = createMatrix4();
99
+ getCamera3DViewProjectionMatrix4(base, camera, 1);
100
+
101
+ setCamera3DJitter(camera, 0.25, -0.5);
102
+ const jittered = createMatrix4();
103
+ getCamera3DViewProjectionMatrix4(jittered, camera, 1);
104
+
105
+ expect(jittered.m[8]).toBeCloseTo(base.m[8] - 0.25);
106
+ expect(jittered.m[9]).toBeCloseTo(base.m[9] + 0.5);
107
+ });
108
+
86
109
  it('is safe when out aliases the camera view', () => {
87
110
  const projection = createPerspectiveProjection({ aspect: 1, fovY: 1 });
88
111
  const camera = createCamera3D({ far: 100, near: 0.1, projection });
@@ -175,35 +198,32 @@ describe('setCamera3DViewMatrix4FromMatrix4', () => {
175
198
  });
176
199
 
177
200
  describe('updateCamera3DInverseViewProjection', () => {
178
- it('stores the inverse view-projection into camera.inverseViewProjection and returns true', () => {
179
- const projection = createPerspectiveProjection({ aspect: 1, fovY: 1 });
180
- const camera = createCamera3D({ far: 100, near: 0.1, projection });
181
- setCamera3DViewMatrix4FromLookAt(camera, createVector3(1, 2, 5), createVector3(0, 0, 0), createVector3(0, 1, 0));
182
-
183
- const result = updateCamera3DInverseViewProjection(camera, 1.5);
184
- expect(result).toBe(true);
201
+ it('refreshes the required cache from the jittered projection', () => {
202
+ const camera = createCamera3D({
203
+ far: 100,
204
+ near: 0.1,
205
+ projection: createPerspectiveProjection({ aspect: 1, fovY: 1 }),
206
+ });
207
+ setCamera3DJitter(camera, 0.25, -0.5);
208
+ expect(updateCamera3DInverseViewProjection(camera, 1.5)).toBe(true);
185
209
 
186
- // Compute expected inverse independently.
187
210
  const vp = createMatrix4();
188
211
  getCamera3DViewProjectionMatrix4(vp, camera, 1.5);
189
212
  const expected = createMatrix4();
190
213
  inverseMatrix4(expected, vp);
191
-
192
- for (let i = 0; i < 16; i++) {
193
- expect(camera.inverseViewProjection.m[i]).toBeCloseTo(expected.m[i]);
194
- }
214
+ for (let i = 0; i < 16; i++) expect(camera.inverseViewProjection.m[i]).toBeCloseTo(expected.m[i]);
195
215
  });
196
216
 
197
- it('returns false and leaves inverseViewProjection untouched for a non-invertible matrix', () => {
198
- const projection = createPerspectiveProjection({ aspect: 1, fovY: 1 });
199
- const camera = createCamera3D({ far: 100, near: 0.1, projection });
200
- camera.near = 1;
201
- camera.far = 1; // Degenerate.
202
- // Store a known value so we can confirm it was not overwritten.
217
+ it('leaves the last valid cache untouched for a non-invertible projection', () => {
218
+ const camera = createCamera3D({
219
+ far: 100,
220
+ near: 0.1,
221
+ projection: createPerspectiveProjection({ aspect: 1, fovY: 1 }),
222
+ });
203
223
  camera.inverseViewProjection.m[0] = 42;
204
-
205
- const result = updateCamera3DInverseViewProjection(camera, 1);
206
- expect(result).toBe(false);
224
+ camera.near = 1;
225
+ camera.far = 1;
226
+ expect(updateCamera3DInverseViewProjection(camera, 1)).toBe(false);
207
227
  expect(camera.inverseViewProjection.m[0]).toBe(42);
208
228
  });
209
229
  });
@@ -1,4 +1,4 @@
1
- import { createAabb, createBoundingSphere, createFrustum, createVector3 } from '@flighthq/geometry';
1
+ import { createAabb, createBoundingSphere, createFrustum, createVector3 } from '@flighthq/geometry/contract';
2
2
 
3
3
  import { createCamera3D, setCamera3DViewMatrix4FromLookAt } from './camera';
4
4
  import {
@@ -1,5 +1,5 @@
1
- import { createVector3 } from '@flighthq/geometry';
2
- import type { Vector3Like } from '@flighthq/types';
1
+ import { createVector3 } from '@flighthq/geometry/contract';
2
+ import type { Vector3Like } from '@flighthq/types/contract';
3
3
 
4
4
  import { createCamera3D, setCamera3DViewMatrix4FromLookAt } from './camera';
5
5
  import { getCamera3DFrustumCorners } from './frustumCorners';
@@ -1,4 +1,4 @@
1
- import { createBoundingSphere, createPlane, createRay3D, createVector3 } from '@flighthq/geometry';
1
+ import { createBoundingSphere, createPlane, createRay3D, createVector3 } from '@flighthq/geometry/contract';
2
2
 
3
3
  import { createCamera3D, setCamera3DViewMatrix4FromLookAt } from './camera';
4
4
  import { getCamera3DRayThroughBoundingSphere, intersectCamera3DRayWithPlane } from './intersection';
@@ -1,4 +1,4 @@
1
- import { createVector2 } from '@flighthq/geometry';
1
+ import { createVector2 } from '@flighthq/geometry/contract';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
4
  import { createCamera2D } from './camera2d';
@@ -1,4 +1,4 @@
1
- import { createRay3D, createVector3 } from '@flighthq/geometry';
1
+ import { createRay3D, createVector3 } from '@flighthq/geometry/contract';
2
2
 
3
3
  import { createCamera3D, setCamera3DViewMatrix4FromLookAt } from './camera';
4
4
  import { getCamera3DScreenToWorldRay, getCamera3DWorldToScreen } from './picking';
@@ -1,5 +1,5 @@
1
- import { createMatrix4, createPerspectiveMatrix4, setOrthographicMatrix4 } from '@flighthq/geometry';
2
- import type { OrthographicProjection, PerspectiveProjection } from '@flighthq/types';
1
+ import { createMatrix4, createPerspectiveMatrix4, setOrthographicMatrix4 } from '@flighthq/geometry/contract';
2
+ import type { OrthographicProjection, PerspectiveProjection } from '@flighthq/types/contract';
3
3
 
4
4
  import {
5
5
  createOrthographicProjection,
@@ -1,4 +1,4 @@
1
- import { createVector2 } from '@flighthq/geometry';
1
+ import { createVector2 } from '@flighthq/geometry/contract';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
4
  import { createCamera2D } from './camera2d';
@@ -1,5 +1,5 @@
1
- import { createAabb } from '@flighthq/geometry';
2
- import type { OrthographicProjection } from '@flighthq/types';
1
+ import { createAabb } from '@flighthq/geometry/contract';
2
+ import type { OrthographicProjection } from '@flighthq/types/contract';
3
3
 
4
4
  import { createCamera3D } from './camera';
5
5
  import { createPerspectiveProjection } from './projection';
@@ -1,4 +1,4 @@
1
- import { createMatrix, createVector2, matrixTransformPointXY } from '@flighthq/geometry';
1
+ import { createMatrix, createVector2, matrixTransformPointXY } from '@flighthq/geometry/contract';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
4
  import { createCamera2D } from './camera2d';
@@ -1,4 +1,4 @@
1
- import { createRectangle, createVector2 } from '@flighthq/geometry';
1
+ import { createRectangle, createVector2 } from '@flighthq/geometry/contract';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
4
  import { createCamera2D } from './camera2d';
package/src/zoom.test.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { createVector2 } from '@flighthq/geometry';
1
+ import { createVector2 } from '@flighthq/geometry/contract';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
4
  import { createCamera2D } from './camera2d';