@flighthq/scene3d 0.3.0 → 0.3.1-next.1041.35b950c

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.
@@ -1,4 +1,5 @@
1
1
  import type { Billboard, Camera3D, Node3D } from '@flighthq/types/contract';
2
- export declare function orientBillboardToCamera(billboard: Billboard, camera: Readonly<Camera3D>): void;
3
- export declare function orientScene3DBillboardsToCamera(scene: Readonly<Node3D>, camera: Readonly<Camera3D>): void;
2
+ export declare function orientBillboardToCamera(billboard: Billboard, camera: Readonly<Camera3D>): boolean;
3
+ export declare function orientScene3DBillboardsToCamera(scene: Readonly<Node3D>, camera: Readonly<Camera3D>): boolean;
4
+ export declare function setBillboardCameraBasisGuard(guard: ((camera: Readonly<Camera3D>) => void) | null): void;
4
5
  //# sourceMappingURL=billboardCamera.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"billboardCamera.d.ts","sourceRoot":"","sources":["../src/billboardCamera.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAiB,QAAQ,EAAW,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAcpG,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAG9F;AAOD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAGzG"}
1
+ {"version":3,"file":"billboardCamera.d.ts","sourceRoot":"","sources":["../src/billboardCamera.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAiB,QAAQ,EAAW,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAcpG,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAIjG;AAOD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAI5G;AAMD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAEvG"}
@@ -12,8 +12,10 @@ import { getNode3DRuntime } from './sceneNode';
12
12
  // whole subtree, orientScene3DBillboardsToCamera walks and orients every Billboard in one pass, deriving
13
13
  // the camera basis a single time.
14
14
  export function orientBillboardToCamera(billboard, camera) {
15
- setBillboardCameraBasis(camera);
15
+ if (!setBillboardCameraBasis(camera))
16
+ return false;
16
17
  applyBillboardFacing(billboard);
18
+ return true;
17
19
  }
18
20
  // Orients every Billboard in the subtree rooted at `scene` to face `camera` in one pass. Non-billboard
19
21
  // nodes are skipped (but still traversed, so billboards nested under group/mesh nodes are found). The
@@ -21,8 +23,17 @@ export function orientBillboardToCamera(billboard, camera) {
21
23
  // descendants (top-down), so a billboard nested under another billboard sees its parent's updated
22
24
  // transform.
23
25
  export function orientScene3DBillboardsToCamera(scene, camera) {
24
- setBillboardCameraBasis(camera);
26
+ if (!setBillboardCameraBasis(camera))
27
+ return false;
25
28
  orientBillboardSubtree(scene);
29
+ return true;
30
+ }
31
+ // The seam the guard layer installs into; `null` keeps this module free of message text and of any
32
+ // dependency on @flighthq/log. The boolean return is the caller's signal and matches the sibling
33
+ // `updateCamera3DInverseViewProjection`; this is the caller-facing REPORT, which that sibling has no
34
+ // equivalent of, so the two are complementary rather than duplicates.
35
+ export function setBillboardCameraBasisGuard(guard) {
36
+ billboardCameraBasisGuard = guard;
26
37
  }
27
38
  // Rewrites `billboard.localMatrix` from the module-scratch camera basis (set by setBillboardCameraBasis)
28
39
  // so the billboard's world transform faces the camera. Reads the billboard's current world matrix for
@@ -66,7 +77,20 @@ function orientBillboardSubtree(node) {
66
77
  // basis. `_back` is the camera's +Z world axis (toward the viewer), which is the facing normal a
67
78
  // screen-aligned billboard adopts.
68
79
  function setBillboardCameraBasis(camera) {
69
- inverseMatrix4(_cameraWorld, camera.view);
80
+ // Matches `updateCamera3DInverseViewProjection`, which already treats a non-invertible view as a real
81
+ // state: report it and leave the prior basis untouched rather than deriving one from a garbage matrix.
82
+ // Reading `m` after a failed inverse would seed every axis and the eye position from NaN, and the
83
+ // billboards would be silently unplaceable rather than simply not re-oriented this frame.
84
+ //
85
+ // Whether a view can BE singular depends on which setter filled it, and the two differ:
86
+ // `setCamera3DViewMatrix4FromLookAt` is safe by construction (`setMatrix4LookAt` reseeds both
87
+ // degenerate bases — coincident eye/target, and `up` parallel to the view direction), while
88
+ // `setCamera3DViewMatrix4FromMatrix4` copies an arbitrary caller matrix with no validation at all and
89
+ // documents deriving it from a scene node's world transform, which a zero-scale node makes singular.
90
+ if (!inverseMatrix4(_cameraWorld, camera.view)) {
91
+ billboardCameraBasisGuard?.(camera);
92
+ return false;
93
+ }
70
94
  const m = _cameraWorld.m;
71
95
  _cameraEyeX = m[12];
72
96
  _cameraEyeY = m[13];
@@ -92,6 +116,7 @@ function setBillboardCameraBasis(camera) {
92
116
  _cameraBackX /= bl;
93
117
  _cameraBackY /= bl;
94
118
  _cameraBackZ /= bl;
119
+ return true;
95
120
  }
96
121
  // Writes a camera-facing world matrix into `out` from the module-scratch camera basis, the billboard's
97
122
  // world position (`_position`) and scale (`_scale`), and its facing `mode`. Local +X maps to the
@@ -235,4 +260,5 @@ let _cameraUpZ = 0;
235
260
  let _cameraBackX = 0;
236
261
  let _cameraBackY = 0;
237
262
  let _cameraBackZ = 1;
263
+ let billboardCameraBasisGuard = null;
238
264
  //# sourceMappingURL=billboardCamera.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"billboardCamera.js","sourceRoot":"","sources":["../src/billboardCamera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billboardCamera.js","sourceRoot":"","sources":["../src/billboardCamera.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,mGAAmG;AACnG,2FAA2F;AAC3F,sGAAsG;AACtG,sGAAsG;AACtG,mGAAmG;AACnG,EAAE;AACF,oGAAoG;AACpG,yGAAyG;AACzG,kCAAkC;AAClC,MAAM,UAAU,uBAAuB,CAAC,SAAoB,EAAE,MAA0B;IACtF,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uGAAuG;AACvG,sGAAsG;AACtG,oGAAoG;AACpG,kGAAkG;AAClG,aAAa;AACb,MAAM,UAAU,+BAA+B,CAAC,KAAuB,EAAE,MAA0B;IACjG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mGAAmG;AACnG,iGAAiG;AACjG,qGAAqG;AACrG,sEAAsE;AACtE,MAAM,UAAU,4BAA4B,CAAC,KAAoD;IAC/F,yBAAyB,GAAG,KAAK,CAAC;AACpC,CAAC;AAED,yGAAyG;AACzG,sGAAsG;AACtG,kGAAkG;AAClG,uGAAuG;AACvG,SAAS,oBAAoB,CAAC,SAAoB;IAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAsB,CAAC;IAClE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7D,0BAA0B,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAmB,CAAkB,CAAC;IACnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAsB,CAAC;QACrE,IAAI,cAAc,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;YACrD,eAAe,CAAC,aAAa,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,8FAA8F;YAC9F,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,uGAAuG;IACvG,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAsB;IACpD,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IACjD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,qGAAqG;AACrG,qGAAqG;AACrG,iGAAiG;AACjG,mCAAmC;AACnC,SAAS,uBAAuB,CAAC,MAA0B;IACzD,sGAAsG;IACtG,uGAAuG;IACvG,kGAAkG;IAClG,0FAA0F;IAC1F,EAAE;IACF,wFAAwF;IACxF,8FAA8F;IAC9F,4FAA4F;IAC5F,sGAAsG;IACtG,qGAAqG;IACrG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,yBAAyB,EAAE,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IACzB,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACpB,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACpB,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACpB,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAErB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACxE,aAAa,IAAI,EAAE,CAAC;IACpB,aAAa,IAAI,EAAE,CAAC;IACpB,aAAa,IAAI,EAAE,CAAC;IACpB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/D,UAAU,IAAI,EAAE,CAAC;IACjB,UAAU,IAAI,EAAE,CAAC;IACjB,UAAU,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACrE,YAAY,IAAI,EAAE,CAAC;IACnB,YAAY,IAAI,EAAE,CAAC;IACnB,YAAY,IAAI,EAAE,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uGAAuG;AACvG,iGAAiG;AACjG,8FAA8F;AAC9F,kGAAkG;AAClG,wGAAwG;AACxG,sGAAsG;AACtG,kEAAkE;AAClE,SAAS,0BAA0B,CAAC,GAAY,EAAE,IAAmB;IACnE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAEpB,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IAEf,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,EAAE,GAAG,aAAa,CAAC;QACnB,EAAE,GAAG,aAAa,CAAC;QACnB,EAAE,GAAG,aAAa,CAAC;QACnB,EAAE,GAAG,UAAU,CAAC;QAChB,EAAE,GAAG,UAAU,CAAC;QAChB,EAAE,GAAG,UAAU,CAAC;QAChB,EAAE,GAAG,YAAY,CAAC;QAClB,EAAE,GAAG,YAAY,CAAC;QAClB,EAAE,GAAG,YAAY,CAAC;IACpB,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,+FAA+F;QAC/F,yDAAyD;QACzD,IAAI,EAAE,GAAG,WAAW,GAAG,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,WAAW,GAAG,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;YACxB,yFAAyF;YACzF,EAAE,GAAG,YAAY,CAAC;YAClB,EAAE,GAAG,YAAY,CAAC;YAClB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;gBACxB,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;YACT,CAAC;QACH,CAAC;QACD,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACb,EAAE,GAAG,CAAC,CAAC;QACP,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACb,4DAA4D;QAC5D,EAAE,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,CAAC,CAAC;QACP,EAAE,GAAG,CAAC,EAAE,CAAC;QACT,EAAE,GAAG,CAAC,CAAC;QACP,EAAE,GAAG,CAAC,CAAC;QACP,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;SAAM,CAAC;QACN,4EAA4E;QAC5E,IAAI,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,GAAG,GAAG,cAAc,EAAE,CAAC;YACzB,GAAG,GAAG,YAAY,CAAC;YACnB,GAAG,GAAG,YAAY,CAAC;YACnB,GAAG,GAAG,YAAY,CAAC;YACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QACf,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QACf,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QACf,wCAAwC;QACxC,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC;QACvC,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC;QACvC,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;YACxB,kGAAkG;YAClG,MAAM,CAAC,GAAG,aAAa,GAAG,EAAE,GAAG,aAAa,GAAG,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC;YACvE,EAAE,GAAG,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,EAAE,GAAG,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,EAAE,GAAG,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;gBACxB,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;YACT,CAAC;QACH,CAAC;QACD,EAAE,IAAI,EAAE,CAAC;QACT,EAAE,IAAI,EAAE,CAAC;QACT,EAAE,IAAI,EAAE,CAAC;QACT,6CAA6C;QAC7C,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACvB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACvB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACT,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACT,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACZ,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;AACrC,MAAM,mBAAmB,GAAG,aAAa,EAAE,CAAC;AAC5C,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;AACrC,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;AACtC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;AAClC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;AAC/B,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtD,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,IAAI,yBAAyB,GAAkD,IAAI,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from './billboard';
2
2
  export * from './billboardCamera';
3
+ export * from './enableScene3DGuards';
3
4
  export * from './mesh';
4
5
  export * from './prepareScene3DMorph';
5
6
  export * from './scene';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
package/dist/contract.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './billboard';
2
2
  export * from './billboardCamera';
3
+ export * from './enableScene3DGuards';
3
4
  export * from './mesh';
4
5
  export * from './prepareScene3DMorph';
5
6
  export * from './scene';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function areScene3DGuardsEnabled(): boolean;
2
+ export declare function disableScene3DGuards(): void;
3
+ export declare function enableScene3DGuards(): void;
4
+ //# sourceMappingURL=enableScene3DGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableScene3DGuards.d.ts","sourceRoot":"","sources":["../src/enableScene3DGuards.ts"],"names":[],"mappings":"AAMA,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAKD,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
@@ -0,0 +1,28 @@
1
+ import { logOnce } from '@flighthq/log/contract';
2
+ import { LogLevel } from '@flighthq/types/contract';
3
+ import { setBillboardCameraBasisGuard } from './billboardCamera';
4
+ export function areScene3DGuardsEnabled() {
5
+ return scene3DGuardsEnabled;
6
+ }
7
+ export function disableScene3DGuards() {
8
+ setBillboardCameraBasisGuard(null);
9
+ scene3DGuardsEnabled = false;
10
+ }
11
+ // Installs opt-in diagnostics for scene operations that decline rather than compute a result. The core
12
+ // modules stay message-free, so an application that omits this one sheds both the text and
13
+ // @flighthq/log.
14
+ export function enableScene3DGuards() {
15
+ setBillboardCameraBasisGuard(warnOnDegenerateBillboardCameraBasis);
16
+ scene3DGuardsEnabled = true;
17
+ }
18
+ // Declining leaves the previous basis in place, so the billboards simply stop tracking the camera —
19
+ // they do not disappear and nothing throws. That is the whole reason this needs a report: the symptom
20
+ // is orientation quietly going stale, which reads as an animation bug rather than a camera one.
21
+ function warnOnDegenerateBillboardCameraBasis(camera) {
22
+ logOnce('scene3d:degenerate-billboard-camera-basis', LogLevel.Warn, () => ({
23
+ message: 'orientBillboardToCamera: the camera view matrix has no inverse, so the camera basis could not be derived and the billboards were left as they were. A view set from setCamera3DViewMatrix4FromMatrix4 is the usual cause — that setter copies an arbitrary matrix without validating it, while setCamera3DViewMatrix4FromLookAt cannot produce a singular view.',
24
+ view: Array.from(camera.view.m),
25
+ }));
26
+ }
27
+ let scene3DGuardsEnabled = false;
28
+ //# sourceMappingURL=enableScene3DGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableScene3DGuards.js","sourceRoot":"","sources":["../src/enableScene3DGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACnC,oBAAoB,GAAG,KAAK,CAAC;AAC/B,CAAC;AAED,uGAAuG;AACvG,2FAA2F;AAC3F,iBAAiB;AACjB,MAAM,UAAU,mBAAmB;IACjC,4BAA4B,CAAC,oCAAoC,CAAC,CAAC;IACnE,oBAAoB,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,oGAAoG;AACpG,sGAAsG;AACtG,gGAAgG;AAChG,SAAS,oCAAoC,CAAC,MAA0B;IACtE,OAAO,CAAC,2CAA2C,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACzE,OAAO,EACL,iWAAiW;QACnW,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,IAAI,oBAAoB,GAAG,KAAK,CAAC"}
@@ -94,6 +94,9 @@ function applyDocumentSkins(document, nodes) {
94
94
  jointMatrices: new Float32Array(joints.length * 16),
95
95
  joints,
96
96
  names: names.some((name) => name.length > 0) ? names : null,
97
+ // Filled per-frame alongside the palette by computeSkeleton3DJointMatrices: one 3x3 per joint as
98
+ // three padded vec4 columns, 12 floats, so it uploads to the GPU data texture without repacking.
99
+ normalMatrices: new Float32Array(joints.length * 12),
97
100
  });
98
101
  return { skeleton, skeletonRoot: null };
99
102
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sceneDocument.js","sourceRoot":"","sources":["../src/sceneDocument.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sceneDocument.js","sourceRoot":"","sources":["../src/sceneDocument.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sceneNode.d.ts","sourceRoot":"","sources":["../src/sceneNode.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAgB,MAAM,0BAA0B,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,wBAAgB,YAAY,CAC1B,IAAI,GAAE,IAAiB,EACvB,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAC9E,MAAM,CAKR;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CASnD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa,CAExE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAEnE"}
1
+ {"version":3,"file":"sceneNode.d.ts","sourceRoot":"","sources":["../src/sceneNode.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAgB,MAAM,0BAA0B,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,wBAAgB,YAAY,CAC1B,IAAI,GAAE,IAAiB,EACvB,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAC9E,MAAM,CAKR;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAMnD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa,CAExE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAEnE"}
package/dist/sceneNode.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createNode, createNodeRuntime, enableNodeSignals, getNodeRuntime, getNodeSignals, initAppearanceTrait, initTransform3DRuntimeTrait, initTransform3DTrait, } from '@flighthq/node/contract';
1
+ import { createNode, createNodeRuntime, enableNodeSignals, getNodeRuntime, getNodeSignals, initAppearanceRuntimeTrait, initAppearanceTrait, initTransform3DRuntimeTrait, initTransform3DTrait, } from '@flighthq/node/contract';
2
2
  import { Node3DKind, Node3DTraitsKey } from '@flighthq/types/contract';
3
3
  export { Node3DKind } from '@flighthq/types/contract';
4
4
  export function createNode3D(kind = Node3DKind, obj) {
@@ -10,10 +10,7 @@ export function createNode3D(kind = Node3DKind, obj) {
10
10
  export function createNode3DRuntime() {
11
11
  const out = createNodeRuntime();
12
12
  out.traits = Node3DTraitsKey;
13
- out.worldAlpha = null;
14
- out.worldAlphaUsingAppearanceId = -1;
15
- out.worldAlphaUsingParentAppearanceId = -1;
16
- out.worldAppearanceId = 0;
13
+ initAppearanceRuntimeTrait(out);
17
14
  initTransform3DRuntimeTrait(out);
18
15
  return out;
19
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sceneNode.js","sourceRoot":"","sources":["../src/sceneNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,UAAU,YAAY,CAC1B,OAAa,UAAU,EACvB,GAA+E;IAE/E,MAAM,IAAI,GAAG,UAAU,CAAe,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACjF,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,iBAAiB,EAAiC,CAAC;IAC/D,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC;IAC7B,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC;IAC3C,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC1B,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,OAAO,cAAc,CAAC,MAAM,CAAkB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"sceneNode.js","sourceRoot":"","sources":["../src/sceneNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,UAAU,YAAY,CAC1B,OAAa,UAAU,EACvB,GAA+E;IAE/E,MAAM,IAAI,GAAG,UAAU,CAAe,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACjF,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,iBAAiB,EAAiC,CAAC;IAC/D,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC;IAC7B,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAChC,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,OAAO,cAAc,CAAC,MAAM,CAAkB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/scene3d",
3
- "version": "0.3.0",
3
+ "version": "0.3.1-next.1041.35b950c",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,15 +38,16 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/adjustments": "0.3.0",
42
- "@flighthq/animation": "0.3.0",
43
- "@flighthq/entity": "0.3.0",
44
- "@flighthq/geometry": "0.3.0",
45
- "@flighthq/lighting": "0.3.0",
46
- "@flighthq/materials": "0.3.0",
47
- "@flighthq/mesh": "0.3.0",
48
- "@flighthq/node": "0.3.0",
49
- "@flighthq/types": "0.3.0"
41
+ "@flighthq/adjustments": "0.3.1-next.1041.35b950c",
42
+ "@flighthq/animation": "0.3.1-next.1041.35b950c",
43
+ "@flighthq/entity": "0.3.1-next.1041.35b950c",
44
+ "@flighthq/geometry": "0.3.1-next.1041.35b950c",
45
+ "@flighthq/lighting": "0.3.1-next.1041.35b950c",
46
+ "@flighthq/log": "0.3.1-next.1041.35b950c",
47
+ "@flighthq/materials": "0.3.1-next.1041.35b950c",
48
+ "@flighthq/mesh": "0.3.1-next.1041.35b950c",
49
+ "@flighthq/node": "0.3.1-next.1041.35b950c",
50
+ "@flighthq/types": "0.3.1-next.1041.35b950c"
50
51
  },
51
52
  "devDependencies": {
52
53
  "@flighthq/camera": "*",
@@ -1,16 +1,27 @@
1
1
  import {
2
2
  createCamera3D,
3
+ setCamera3DViewMatrix4FromMatrix4,
3
4
  createPerspectiveProjection,
4
5
  setCamera3DViewMatrix4FromLookAt,
5
6
  } from '@flighthq/camera/contract';
6
- import { copyQuaternion, createQuaternion, setQuaternionFromAxisAngle, setVector3 } from '@flighthq/geometry/contract';
7
+ import {
8
+ copyQuaternion,
9
+ createMatrix4,
10
+ createQuaternion,
11
+ setQuaternionFromAxisAngle,
12
+ setVector3,
13
+ } from '@flighthq/geometry/contract';
7
14
  import { createPlaneMeshGeometry } from '@flighthq/mesh/contract';
8
15
  import { addNodeChild, getNodeWorldMatrix4, invalidateNodeLocalTransform } from '@flighthq/node/contract';
9
16
  import type { Camera3D } from '@flighthq/types/contract';
10
17
  import { describe, expect, it } from 'vitest';
11
18
 
12
19
  import { createBillboard } from './billboard';
13
- import { orientBillboardToCamera, orientScene3DBillboardsToCamera } from './billboardCamera';
20
+ import {
21
+ orientBillboardToCamera,
22
+ orientScene3DBillboardsToCamera,
23
+ setBillboardCameraBasisGuard,
24
+ } from './billboardCamera';
14
25
  import { createMesh } from './mesh';
15
26
  import { createNode3D } from './sceneNode';
16
27
 
@@ -26,6 +37,32 @@ function cameraLookingFrom(ex: number, ey: number, ez: number): Camera3D {
26
37
  }
27
38
 
28
39
  describe('orientBillboardToCamera', () => {
40
+ // The setter split matters here and is worth keeping visible: a lookAt camera CANNOT reach this branch
41
+ // (setMatrix4LookAt reseeds both degenerate bases), so the only way in is an arbitrary view matrix
42
+ // copied through setCamera3DViewMatrix4FromMatrix4, which validates nothing.
43
+ it('declines and leaves the billboard untouched when the view matrix has no inverse', () => {
44
+ const billboard = createBillboard(createPlaneMeshGeometry(), [null], 'full');
45
+ setVector3(billboard.position, 1, 2, 3);
46
+ invalidateNodeLocalTransform(billboard);
47
+ const before = Array.from(getNodeWorldMatrix4(billboard).m);
48
+
49
+ const camera = createCamera3D({
50
+ far: 100,
51
+ near: 0.1,
52
+ projection: createPerspectiveProjection({ aspect: 1, fovY: 1 }),
53
+ });
54
+ setCamera3DViewMatrix4FromMatrix4(camera, createMatrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
55
+
56
+ expect(orientBillboardToCamera(billboard, camera)).toBe(false);
57
+ expect(Array.from(getNodeWorldMatrix4(billboard).m)).toEqual(before);
58
+ for (const value of getNodeWorldMatrix4(billboard).m) expect(Number.isFinite(value)).toBe(true);
59
+ });
60
+
61
+ it('reports true for an invertible view', () => {
62
+ const billboard = createBillboard(createPlaneMeshGeometry(), [null], 'full');
63
+ expect(orientBillboardToCamera(billboard, cameraLookingFrom(0, 0, 10))).toBe(true);
64
+ });
65
+
29
66
  it('full mode at the origin faces a +Z camera with an identity basis', () => {
30
67
  const billboard = createBillboard(createPlaneMeshGeometry(), [null], 'full');
31
68
  orientBillboardToCamera(billboard, cameraLookingFrom(0, 0, 10));
@@ -154,3 +191,23 @@ describe('orientScene3DBillboardsToCamera', () => {
154
191
  expect(m[8]).toBeCloseTo(0, 5);
155
192
  });
156
193
  });
194
+
195
+ describe('setBillboardCameraBasisGuard', () => {
196
+ it('is notified on the decline and never on an invertible view', () => {
197
+ const seen: number[] = [];
198
+ setBillboardCameraBasisGuard((camera) => seen.push(camera.view.m[0]));
199
+ try {
200
+ const camera = createCamera3D({
201
+ far: 100,
202
+ near: 0.1,
203
+ projection: createPerspectiveProjection({ aspect: 1, fovY: 1 }),
204
+ });
205
+ setCamera3DViewMatrix4FromMatrix4(camera, createMatrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
206
+ orientBillboardToCamera(createBillboard(createPlaneMeshGeometry(), [null], 'full'), camera);
207
+ orientBillboardToCamera(createBillboard(createPlaneMeshGeometry(), [null], 'full'), cameraLookingFrom(0, 0, 10));
208
+ expect(seen).toEqual([0]);
209
+ } finally {
210
+ setBillboardCameraBasisGuard(null);
211
+ }
212
+ });
213
+ });
@@ -0,0 +1,72 @@
1
+ import {
2
+ createCamera3D,
3
+ createPerspectiveProjection,
4
+ setCamera3DViewMatrix4FromMatrix4,
5
+ } from '@flighthq/camera/contract';
6
+ import { createMatrix4 } from '@flighthq/geometry/contract';
7
+ import { setLogSink } from '@flighthq/log/contract';
8
+ import { createPlaneMeshGeometry } from '@flighthq/mesh/contract';
9
+ import type { Camera3D, LogEntry } from '@flighthq/types/contract';
10
+ import { afterEach, describe, expect, test } from 'vitest';
11
+
12
+ import { createBillboard } from './billboard';
13
+ import { orientBillboardToCamera } from './billboardCamera';
14
+ import { areScene3DGuardsEnabled, disableScene3DGuards, enableScene3DGuards } from './enableScene3DGuards';
15
+
16
+ describe('areScene3DGuardsEnabled', () => {
17
+ test('reports whether the guards are installed', () => {
18
+ expect(areScene3DGuardsEnabled()).toBe(false);
19
+ enableScene3DGuards();
20
+ expect(areScene3DGuardsEnabled()).toBe(true);
21
+ disableScene3DGuards();
22
+ expect(areScene3DGuardsEnabled()).toBe(false);
23
+ });
24
+ });
25
+
26
+ describe('disableScene3DGuards', () => {
27
+ test('leaves the core silent again once removed', () => {
28
+ enableScene3DGuards();
29
+ disableScene3DGuards();
30
+ expect(captureLog(() => orientBillboardToCamera(billboard(), singularCamera()))).toHaveLength(0);
31
+ });
32
+ });
33
+
34
+ describe('enableScene3DGuards', () => {
35
+ // `logOnce` keys this condition once and has no reset, so exactly ONE test may trigger it — a second
36
+ // would be deduplicated away and assert nothing while still looking green.
37
+ test('warns, naming the setter that can produce it, when the camera basis cannot be derived', () => {
38
+ enableScene3DGuards();
39
+ const entries = captureLog(() => orientBillboardToCamera(billboard(), singularCamera()));
40
+ expect(entries).toHaveLength(1);
41
+ expect(String((entries[0].data as { message: string }).message)).toContain('setCamera3DViewMatrix4FromMatrix4');
42
+ });
43
+ });
44
+
45
+ afterEach(() => {
46
+ disableScene3DGuards();
47
+ });
48
+
49
+ function billboard(): ReturnType<typeof createBillboard> {
50
+ return createBillboard(createPlaneMeshGeometry(), [null], 'full');
51
+ }
52
+
53
+ function captureLog(run: () => void): LogEntry[] {
54
+ const entries: LogEntry[] = [];
55
+ setLogSink((entry) => entries.push(entry));
56
+ try {
57
+ run();
58
+ } finally {
59
+ setLogSink(null);
60
+ }
61
+ return entries;
62
+ }
63
+
64
+ function singularCamera(): Camera3D {
65
+ const camera = createCamera3D({
66
+ far: 100,
67
+ near: 0.1,
68
+ projection: createPerspectiveProjection({ aspect: 1, fovY: 1 }),
69
+ });
70
+ setCamera3DViewMatrix4FromMatrix4(camera, createMatrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
71
+ return camera;
72
+ }
@@ -14,6 +14,7 @@ import { createNode3D } from './sceneNode';
14
14
 
15
15
  function embeddedRef(mimeType: string | null = 'image/png'): ImageResourceReference {
16
16
  return {
17
+ alphaType: 'straight',
17
18
  bytes: new Uint8Array([1, 2, 3]),
18
19
  failure: null,
19
20
  kind: ImageResourceReferenceKind.Embedded,