@needle-tools/engine 5.1.9 → 5.1.11

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 (105) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/SKILL.md +64 -4
  3. package/components.needle.json +1 -1
  4. package/dist/{needle-engine.bundle-CHq9xqXv.min.js → needle-engine.bundle-d-dLyN3s.min.js} +137 -136
  5. package/dist/{needle-engine.bundle-DYPk7VZg.umd.cjs → needle-engine.bundle-n5YALNtc.umd.cjs} +140 -139
  6. package/dist/{needle-engine.bundle-XZ6cKssu.js → needle-engine.bundle-ue2Lw4bF.js} +5267 -5101
  7. package/dist/needle-engine.d.ts +138 -26
  8. package/dist/needle-engine.js +522 -518
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/dist/three-examples.js +727 -781
  12. package/dist/three-examples.min.js +12 -12
  13. package/dist/three-examples.umd.cjs +9 -9
  14. package/lib/engine/api.d.ts +1 -1
  15. package/lib/engine/api.js +1 -1
  16. package/lib/engine/api.js.map +1 -1
  17. package/lib/engine/engine_init.js +2 -2
  18. package/lib/engine/engine_init.js.map +1 -1
  19. package/lib/engine/engine_license.d.ts +7 -7
  20. package/lib/engine/engine_license.js +71 -71
  21. package/lib/engine/engine_license.js.map +1 -1
  22. package/lib/engine/engine_materialpropertyblock.d.ts +13 -4
  23. package/lib/engine/engine_materialpropertyblock.js +16 -5
  24. package/lib/engine/engine_materialpropertyblock.js.map +1 -1
  25. package/lib/engine/engine_math.d.ts +13 -0
  26. package/lib/engine/engine_math.js +17 -0
  27. package/lib/engine/engine_math.js.map +1 -1
  28. package/lib/engine/engine_networking_blob.js +3 -3
  29. package/lib/engine/engine_networking_blob.js.map +1 -1
  30. package/lib/engine/engine_utils_qrcode.js +2 -2
  31. package/lib/engine/engine_utils_qrcode.js.map +1 -1
  32. package/lib/engine/postprocessing/postprocessing.d.ts +18 -0
  33. package/lib/engine/postprocessing/postprocessing.js +31 -2
  34. package/lib/engine/postprocessing/postprocessing.js.map +1 -1
  35. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
  36. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js.map +1 -1
  37. package/lib/engine/webcomponents/needle menu/needle-menu.js +5 -5
  38. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  39. package/lib/engine/webcomponents/needle-engine.js +2 -2
  40. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  41. package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
  42. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  43. package/lib/engine/xr/TempXRContext.js +2 -2
  44. package/lib/engine/xr/TempXRContext.js.map +1 -1
  45. package/lib/engine/xr/XRHandMeshModel.d.ts +31 -0
  46. package/lib/engine/xr/XRHandMeshModel.js +153 -0
  47. package/lib/engine/xr/XRHandMeshModel.js.map +1 -0
  48. package/lib/engine-components/DragControls.d.ts +0 -5
  49. package/lib/engine-components/DragControls.js +0 -8
  50. package/lib/engine-components/DragControls.js.map +1 -1
  51. package/lib/engine-components/ReflectionProbe.js +3 -3
  52. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  53. package/lib/engine-components/RendererInstancing.d.ts +34 -3
  54. package/lib/engine-components/RendererInstancing.js +92 -11
  55. package/lib/engine-components/RendererInstancing.js.map +1 -1
  56. package/lib/engine-components/RendererLightmap.js +1 -1
  57. package/lib/engine-components/RendererLightmap.js.map +1 -1
  58. package/lib/engine-components/SyncedRoom.js +5 -0
  59. package/lib/engine-components/SyncedRoom.js.map +1 -1
  60. package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
  61. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  62. package/lib/engine-components/postprocessing/Effects/DepthOfField.js +10 -2
  63. package/lib/engine-components/postprocessing/Effects/DepthOfField.js.map +1 -1
  64. package/lib/engine-components/postprocessing/index.d.ts +4 -0
  65. package/lib/engine-components/postprocessing/index.js +7 -0
  66. package/lib/engine-components/postprocessing/index.js.map +1 -1
  67. package/lib/engine-components/splines/SplineWalker.js +9 -3
  68. package/lib/engine-components/splines/SplineWalker.js.map +1 -1
  69. package/lib/engine-components/utils/LookAt.d.ts +13 -4
  70. package/lib/engine-components/utils/LookAt.js +13 -4
  71. package/lib/engine-components/utils/LookAt.js.map +1 -1
  72. package/lib/engine-components/webxr/WebXR.js +1 -1
  73. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  74. package/lib/engine-components/webxr/controllers/XRControllerModel.d.ts +1 -1
  75. package/lib/engine-components/webxr/controllers/XRControllerModel.js +12 -7
  76. package/lib/engine-components/webxr/controllers/XRControllerModel.js.map +1 -1
  77. package/package.json +2 -2
  78. package/plugins/common/license.js +4 -4
  79. package/plugins/vite/license.js +4 -4
  80. package/src/engine/api.ts +1 -1
  81. package/src/engine/engine_init.ts +2 -2
  82. package/src/engine/engine_license.ts +68 -68
  83. package/src/engine/engine_materialpropertyblock.ts +17 -5
  84. package/src/engine/engine_math.ts +17 -0
  85. package/src/engine/engine_networking_blob.ts +3 -3
  86. package/src/engine/engine_utils_qrcode.ts +2 -2
  87. package/src/engine/postprocessing/postprocessing.ts +32 -2
  88. package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
  89. package/src/engine/webcomponents/needle menu/needle-menu.ts +5 -5
  90. package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
  91. package/src/engine/webcomponents/needle-engine.ts +2 -2
  92. package/src/engine/xr/TempXRContext.ts +2 -2
  93. package/src/engine/xr/XRHandMeshModel.ts +179 -0
  94. package/src/engine-components/DragControls.ts +0 -7
  95. package/src/engine-components/ReflectionProbe.ts +3 -3
  96. package/src/engine-components/RendererInstancing.ts +92 -11
  97. package/src/engine-components/RendererLightmap.ts +1 -1
  98. package/src/engine-components/SyncedRoom.ts +5 -0
  99. package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
  100. package/src/engine-components/postprocessing/Effects/DepthOfField.ts +10 -2
  101. package/src/engine-components/postprocessing/index.ts +7 -0
  102. package/src/engine-components/splines/SplineWalker.ts +9 -3
  103. package/src/engine-components/utils/LookAt.ts +13 -4
  104. package/src/engine-components/webxr/WebXR.ts +1 -1
  105. package/src/engine-components/webxr/controllers/XRControllerModel.ts +13 -7
@@ -1,7 +1,6 @@
1
1
  import { AxesHelper, Group, Material, Mesh, Object3D, XRHandSpace } from "three";
2
2
  import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
3
3
  import { XRControllerModelFactory } from "three/examples/jsm/webxr/XRControllerModelFactory.js";
4
- import { XRHandMeshModel } from "three/examples/jsm/webxr/XRHandMeshModel.js";
5
4
 
6
5
  import { AssetReference } from "../../../engine/engine_addressables.js";
7
6
  import { setDontDestroy } from "../../../engine/engine_gameobject.js";
@@ -15,6 +14,7 @@ import { NeedleXRController, type NeedleXRControllerEventArgs, type NeedleXREven
15
14
  import { registerComponentExtension, registerExtensions } from "../../../engine/extensions/extensions.js";
16
15
  import { NEEDLE_progressive } from "../../../engine/extensions/NEEDLE_progressive.js";
17
16
  import { flipForwardMatrix } from "../../../engine/xr/internal.js";
17
+ import { XRHandMeshModel } from "../../../engine/xr/XRHandMeshModel.js";
18
18
  import { Behaviour, Component, GameObject } from "../../Component.js"
19
19
 
20
20
  const debug = getParam("debugwebxr");
@@ -288,8 +288,6 @@ export class XRControllerModel extends Behaviour {
288
288
 
289
289
  const loader = new GLTFLoader();
290
290
  addDracoAndKTX2Loaders(loader, context);
291
- await registerExtensions(loader, context, this.sourceId ?? "", this.sourceId ?? "");
292
- const componentsExtension = registerComponentExtension(loader);
293
291
 
294
292
  let filename = "";
295
293
 
@@ -306,22 +304,30 @@ export class XRControllerModel extends Behaviour {
306
304
  loader.setPath('https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/');
307
305
  }
308
306
 
307
+ // The hand is a separate glTF and needs its own source id: its components resolve their
308
+ // relative uris against it (resolveUrl) and its lightmaps/skybox are keyed by it. Using
309
+ // this component's id resolved the hand's uris next to the HOST glb and let the hand's
310
+ // skybox overwrite the scene's. customHand.url is already resolved, `filename` is not
311
+ // (extension stripped for XRHandMeshModel).
312
+ const handSourceId = customHand?.url ?? `${loader.path}${filename}.glb`;
313
+ await registerExtensions(loader, context, handSourceId, handSourceId);
314
+ const componentsExtension = registerComponentExtension(loader);
315
+
309
316
 
310
317
  const handObject = new Object3D();
311
318
  setDontDestroy(handObject);
312
- // @ts-ignore
313
319
  const handmesh = new XRHandMeshModel(handObject, hand, loader.path, filename, loader, (object: Object3D) => {
314
320
 
315
321
  const gltf = componentsExtension?.gltf;
316
- // The XRHandMeshController removes the hand from the gltf before calling this callback
317
- // we need this in the GLTF scene however for creating the builtin components
322
+ // XRHandMeshModel reparents the hand out of the gltf scene before calling this
323
+ // callback; we need it back in the scene so the builtin components are created on it
318
324
  if (gltf?.scene.children?.length === 0) {
319
325
  gltf.scene.children[0] = object;
320
326
  }
321
327
 
322
328
  // console.log(controller.side, componentsExtension.gltf, object, componentsExtension.gltf.scene?.children)
323
329
  if (componentsExtension?.gltf)
324
- getLoader().createBuiltinComponents(comp.context, comp.sourceId || filename, componentsExtension.gltf, null, componentsExtension);
330
+ getLoader().createBuiltinComponents(comp.context, handSourceId, componentsExtension.gltf, null, componentsExtension);
325
331
 
326
332
  // The hand mesh should not receive raycasts
327
333
  object.traverse(child => {