@needle-tools/engine 4.12.0-beta.1 → 4.12.0-beta.3

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 (215) hide show
  1. package/components.needle.json +1 -1
  2. package/dist/generateMeshBVH.worker-iyfPIK6R.js +21 -0
  3. package/dist/{gltf-progressive-DWcmTMCh.umd.cjs → gltf-progressive-Bfpfaz84.umd.cjs} +1 -1
  4. package/dist/{gltf-progressive-DgYz5BYa.js → gltf-progressive-DPunMlEM.js} +24 -24
  5. package/dist/{gltf-progressive-DZrY8VT6.min.js → gltf-progressive-hFPACYio.min.js} +2 -2
  6. package/dist/{loader.worker-Dip-PthR.js → loader.worker-DWzfDpAl.js} +4 -4
  7. package/dist/{needle-engine.bundle-BxG30KEV.js → needle-engine.bundle-BSyNyj9w.js} +9531 -9158
  8. package/dist/needle-engine.bundle-C7MPMJoh.umd.cjs +1647 -0
  9. package/dist/needle-engine.bundle-TCjWAux7.min.js +1647 -0
  10. package/dist/needle-engine.d.ts +105 -33
  11. package/dist/needle-engine.js +48 -48
  12. package/dist/needle-engine.min.js +1 -1
  13. package/dist/needle-engine.umd.cjs +1 -1
  14. package/dist/{postprocessing-CMgoN5t5.umd.cjs → postprocessing-BHQvwehB.umd.cjs} +81 -81
  15. package/dist/{postprocessing-DYDtB188.min.js → postprocessing-ClLv0reO.min.js} +54 -54
  16. package/dist/{postprocessing-BTW9pD_s.js → postprocessing-DLI2N3LL.js} +450 -441
  17. package/dist/{three-DfMvBzXi.js → three-BCCkyCA5.js} +1 -7
  18. package/dist/{three-qj71I7J3.umd.cjs → three-Bf2NBxAw.umd.cjs} +2 -2
  19. package/dist/{three-B7CT31Bt.min.js → three-W7zWTcfP.min.js} +1 -1
  20. package/dist/{three-examples-D1SK93ek.js → three-examples-D4rE49Ui.js} +12 -22
  21. package/dist/{three-examples-D1P7eEhn.min.js → three-examples-DB5Uoja4.min.js} +12 -12
  22. package/dist/{three-examples-CsW4_6LI.umd.cjs → three-examples-Djbk6WA4.umd.cjs} +6 -6
  23. package/dist/{three-mesh-ui-C_uSB5dD.js → three-mesh-ui-3nSSizT4.js} +1 -1
  24. package/dist/{three-mesh-ui-LQ44s0AL.min.js → three-mesh-ui-CIez6qJQ.min.js} +1 -1
  25. package/dist/{three-mesh-ui-DpATDXwU.umd.cjs → three-mesh-ui-zsOOA5Pq.umd.cjs} +1 -1
  26. package/dist/{vendor-D0zoswDa.js → vendor-DMZcbVO1.js} +3707 -3527
  27. package/dist/vendor-sURMCFSI.min.js +1116 -0
  28. package/dist/{vendor-UCpFAwt1.umd.cjs → vendor-tyBvnMF-.umd.cjs} +39 -39
  29. package/lib/engine/codegen/register_types.js +0 -2
  30. package/lib/engine/codegen/register_types.js.map +1 -1
  31. package/lib/engine/debug/debug_console.js +403 -1
  32. package/lib/engine/debug/debug_console.js.map +1 -1
  33. package/lib/engine/engine_components.js +3 -3
  34. package/lib/engine/engine_components.js.map +1 -1
  35. package/lib/engine/engine_context.js +2 -0
  36. package/lib/engine/engine_context.js.map +1 -1
  37. package/lib/engine/engine_input.d.ts +5 -0
  38. package/lib/engine/engine_input.js +6 -0
  39. package/lib/engine/engine_input.js.map +1 -1
  40. package/lib/engine/engine_license.d.ts +18 -0
  41. package/lib/engine/engine_license.js +163 -18
  42. package/lib/engine/engine_license.js.map +1 -1
  43. package/lib/engine/engine_networking.js +20 -5
  44. package/lib/engine/engine_networking.js.map +1 -1
  45. package/lib/engine/engine_physics.js.map +1 -1
  46. package/lib/engine/engine_physics_rapier.js +1 -1
  47. package/lib/engine/engine_physics_rapier.js.map +1 -1
  48. package/lib/engine/engine_serialization_builtin_serializer.js +1 -1
  49. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  50. package/lib/engine/engine_three_utils.js +2 -2
  51. package/lib/engine/engine_three_utils.js.map +1 -1
  52. package/lib/engine/engine_utils.d.ts +4 -1
  53. package/lib/engine/engine_utils.js +28 -4
  54. package/lib/engine/engine_utils.js.map +1 -1
  55. package/lib/engine/extensions/extensions.d.ts +29 -7
  56. package/lib/engine/extensions/extensions.js.map +1 -1
  57. package/lib/engine/webcomponents/WebXRButtons.js +13 -5
  58. package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
  59. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -1
  60. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js.map +1 -1
  61. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +2 -0
  62. package/lib/engine/webcomponents/needle menu/needle-menu.js +45 -7
  63. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  64. package/lib/engine/webcomponents/needle-engine.ar-overlay.js +4 -0
  65. package/lib/engine/webcomponents/needle-engine.ar-overlay.js.map +1 -1
  66. package/lib/engine/webcomponents/needle-engine.js +1 -1
  67. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  68. package/lib/engine/xr/NeedleXRSession.d.ts +1 -1
  69. package/lib/engine/xr/NeedleXRSession.js +106 -22
  70. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  71. package/lib/engine/xr/TempXRContext.js +12 -2
  72. package/lib/engine/xr/TempXRContext.js.map +1 -1
  73. package/lib/engine/xr/usdz.js +6 -2
  74. package/lib/engine/xr/usdz.js.map +1 -1
  75. package/lib/engine-components/AlignmentConstraint.d.ts +1 -1
  76. package/lib/engine-components/AlignmentConstraint.js +1 -1
  77. package/lib/engine-components/Animation.d.ts +1 -1
  78. package/lib/engine-components/Animation.js +1 -1
  79. package/lib/engine-components/Animator.d.ts +1 -1
  80. package/lib/engine-components/Animator.js +1 -1
  81. package/lib/engine-components/AudioListener.d.ts +1 -1
  82. package/lib/engine-components/AudioListener.js +1 -1
  83. package/lib/engine-components/AudioSource.d.ts +1 -1
  84. package/lib/engine-components/AudioSource.js +1 -1
  85. package/lib/engine-components/Camera.d.ts +1 -1
  86. package/lib/engine-components/Camera.js +5 -2
  87. package/lib/engine-components/Camera.js.map +1 -1
  88. package/lib/engine-components/CharacterController.d.ts +6 -2
  89. package/lib/engine-components/CharacterController.js +6 -2
  90. package/lib/engine-components/CharacterController.js.map +1 -1
  91. package/lib/engine-components/Collider.d.ts +1 -1
  92. package/lib/engine-components/Collider.js.map +1 -1
  93. package/lib/engine-components/Component.d.ts +2 -1
  94. package/lib/engine-components/Component.js +3 -2
  95. package/lib/engine-components/Component.js.map +1 -1
  96. package/lib/engine-components/DragControls.js +1 -1
  97. package/lib/engine-components/DragControls.js.map +1 -1
  98. package/lib/engine-components/DropListener.d.ts +1 -0
  99. package/lib/engine-components/DropListener.js +26 -8
  100. package/lib/engine-components/DropListener.js.map +1 -1
  101. package/lib/engine-components/EventList.js +4 -1
  102. package/lib/engine-components/EventList.js.map +1 -1
  103. package/lib/engine-components/Joints.d.ts +14 -0
  104. package/lib/engine-components/Joints.js +14 -0
  105. package/lib/engine-components/Joints.js.map +1 -1
  106. package/lib/engine-components/LookAtConstraint.d.ts +1 -1
  107. package/lib/engine-components/LookAtConstraint.js +1 -1
  108. package/lib/engine-components/OrbitControls.d.ts +1 -1
  109. package/lib/engine-components/OrbitControls.js +1 -1
  110. package/lib/engine-components/Renderer.d.ts +6 -0
  111. package/lib/engine-components/Renderer.js +6 -0
  112. package/lib/engine-components/Renderer.js.map +1 -1
  113. package/lib/engine-components/RendererInstancing.js +5 -3
  114. package/lib/engine-components/RendererInstancing.js.map +1 -1
  115. package/lib/engine-components/SceneSwitcher.d.ts +3 -2
  116. package/lib/engine-components/SceneSwitcher.js +42 -25
  117. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  118. package/lib/engine-components/SpectatorCamera.js +15 -7
  119. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  120. package/lib/engine-components/SpriteRenderer.d.ts +2 -1
  121. package/lib/engine-components/SpriteRenderer.js +2 -1
  122. package/lib/engine-components/SpriteRenderer.js.map +1 -1
  123. package/lib/engine-components/api.d.ts +1 -0
  124. package/lib/engine-components/api.js +1 -0
  125. package/lib/engine-components/api.js.map +1 -1
  126. package/lib/engine-components/codegen/components.d.ts +0 -1
  127. package/lib/engine-components/codegen/components.js +0 -1
  128. package/lib/engine-components/codegen/components.js.map +1 -1
  129. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +8 -0
  130. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -1
  131. package/lib/engine-components/timeline/SignalAsset.d.ts +1 -1
  132. package/lib/engine-components/timeline/SignalAsset.js +1 -1
  133. package/lib/engine-components/ui/Raycaster.d.ts +3 -2
  134. package/lib/engine-components/ui/Raycaster.js +3 -2
  135. package/lib/engine-components/ui/Raycaster.js.map +1 -1
  136. package/lib/engine-components/ui/RectTransform.d.ts +6 -0
  137. package/lib/engine-components/ui/RectTransform.js +6 -0
  138. package/lib/engine-components/ui/RectTransform.js.map +1 -1
  139. package/lib/engine-components/utils/LookAt.d.ts +2 -1
  140. package/lib/engine-components/utils/LookAt.js +2 -1
  141. package/lib/engine-components/utils/LookAt.js.map +1 -1
  142. package/lib/engine-components/web/CursorFollow.d.ts +1 -1
  143. package/lib/engine-components/web/CursorFollow.js +1 -1
  144. package/lib/engine-components/web/HoverAnimation.d.ts +1 -1
  145. package/lib/engine-components/web/HoverAnimation.js +1 -1
  146. package/lib/engine-components/web/ViewBox.d.ts +1 -1
  147. package/lib/engine-components/web/ViewBox.js +1 -1
  148. package/lib/engine-components/webxr/Avatar.js +2 -0
  149. package/lib/engine-components/webxr/Avatar.js.map +1 -1
  150. package/lib/engine-components/webxr/WebARSessionRoot.d.ts +5 -2
  151. package/lib/engine-components/webxr/WebARSessionRoot.js +5 -2
  152. package/lib/engine-components/webxr/WebARSessionRoot.js.map +1 -1
  153. package/lib/engine-components/webxr/WebXR.d.ts +3 -1
  154. package/lib/engine-components/webxr/WebXR.js +21 -13
  155. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  156. package/package.json +4 -4
  157. package/plugins/vite/poster-client.js +8 -1
  158. package/src/engine/codegen/register_types.ts +0 -2
  159. package/src/engine/debug/debug_console.ts +449 -1
  160. package/src/engine/engine_components.ts +4 -4
  161. package/src/engine/engine_context.ts +2 -0
  162. package/src/engine/engine_input.ts +7 -0
  163. package/src/engine/engine_license.ts +180 -17
  164. package/src/engine/engine_networking.ts +20 -5
  165. package/src/engine/engine_physics.ts +3 -3
  166. package/src/engine/engine_physics_rapier.ts +1 -1
  167. package/src/engine/engine_serialization_builtin_serializer.ts +1 -1
  168. package/src/engine/engine_three_utils.ts +4 -2
  169. package/src/engine/engine_utils.ts +23 -4
  170. package/src/engine/extensions/extensions.ts +30 -6
  171. package/src/engine/webcomponents/WebXRButtons.ts +15 -5
  172. package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -1
  173. package/src/engine/webcomponents/needle menu/needle-menu.ts +48 -8
  174. package/src/engine/webcomponents/needle-engine.ar-overlay.ts +6 -0
  175. package/src/engine/webcomponents/needle-engine.ts +2 -2
  176. package/src/engine/xr/NeedleXRSession.ts +120 -24
  177. package/src/engine/xr/TempXRContext.ts +12 -2
  178. package/src/engine/xr/usdz.ts +6 -1
  179. package/src/engine-components/AlignmentConstraint.ts +1 -1
  180. package/src/engine-components/Animation.ts +1 -1
  181. package/src/engine-components/Animator.ts +1 -1
  182. package/src/engine-components/AudioListener.ts +1 -1
  183. package/src/engine-components/AudioSource.ts +1 -1
  184. package/src/engine-components/Camera.ts +5 -2
  185. package/src/engine-components/CharacterController.ts +6 -2
  186. package/src/engine-components/Collider.ts +1 -1
  187. package/src/engine-components/Component.ts +5 -4
  188. package/src/engine-components/DragControls.ts +1 -1
  189. package/src/engine-components/DropListener.ts +29 -8
  190. package/src/engine-components/EventList.ts +5 -1
  191. package/src/engine-components/Joints.ts +14 -0
  192. package/src/engine-components/LookAtConstraint.ts +1 -1
  193. package/src/engine-components/OrbitControls.ts +1 -1
  194. package/src/engine-components/Renderer.ts +6 -0
  195. package/src/engine-components/RendererInstancing.ts +6 -3
  196. package/src/engine-components/SceneSwitcher.ts +43 -30
  197. package/src/engine-components/SpectatorCamera.ts +21 -10
  198. package/src/engine-components/SpriteRenderer.ts +2 -1
  199. package/src/engine-components/api.ts +2 -1
  200. package/src/engine-components/codegen/components.ts +0 -1
  201. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +11 -0
  202. package/src/engine-components/timeline/SignalAsset.ts +1 -1
  203. package/src/engine-components/ui/Raycaster.ts +3 -2
  204. package/src/engine-components/ui/RectTransform.ts +6 -0
  205. package/src/engine-components/utils/LookAt.ts +2 -1
  206. package/src/engine-components/web/CursorFollow.ts +1 -1
  207. package/src/engine-components/web/HoverAnimation.ts +1 -1
  208. package/src/engine-components/web/ViewBox.ts +1 -1
  209. package/src/engine-components/webxr/Avatar.ts +4 -0
  210. package/src/engine-components/webxr/WebARSessionRoot.ts +7 -3
  211. package/src/engine-components/webxr/WebXR.ts +23 -13
  212. package/dist/generateMeshBVH.worker-mO20N_b8.js +0 -21
  213. package/dist/needle-engine.bundle-BeTUOBiO.min.js +0 -1647
  214. package/dist/needle-engine.bundle-C08Ag6_H.umd.cjs +0 -1647
  215. package/dist/vendor-BKGa4GE0.min.js +0 -1116
@@ -10,6 +10,7 @@ import type { IComponent, IGameObject } from "../../engine/engine_types.js";
10
10
  import { DeviceUtilities, getParam } from "../../engine/engine_utils.js";
11
11
  import { NeedleXRController, type NeedleXREventArgs, type NeedleXRHitTestResult, NeedleXRSession } from "../../engine/engine_xr.js";
12
12
  import { Behaviour, GameObject } from "../Component.js";
13
+ import type { WebXR } from "./WebXR.js";
13
14
 
14
15
  // https://github.com/takahirox/takahirox.github.io/blob/master/js.mmdeditor/examples/js/controls/DeviceOrientationControls.js
15
16
 
@@ -20,14 +21,17 @@ const invertForwardMatrix = new Matrix4().makeRotationY(Math.PI);
20
21
 
21
22
  /**
22
23
  * The WebARSessionRoot is the root object for a WebAR session and used to place the scene in AR.
23
- * It is also responsible for scaling the user in AR and to define the center of the AR scene. If not present in the scene it will be created automatically by the WebXR component when entering an AR session.
24
+ * It is also responsible for scaling the user in AR and to define the center of the AR scene.
25
+ * If not present in the scene it will be created automatically by the WebXR component when entering an AR session.
24
26
  *
25
- * @example
27
+ * **Note**: If the WebXR component {@link WebXR.autoCenter} option is enabled the scene will be automatically centered based on the content in the scene.
28
+ *
29
+ * @example Callback when the scene has been placed in AR:
26
30
  * ```ts
27
31
  * WebARSessionRoot.onPlaced((args) => {
28
32
  * console.log("Scene has been placed in AR");
29
33
  * });
30
- * ```
34
+ * ```
31
35
  *
32
36
  * @summary Root object for WebAR sessions, managing scene placement and user scaling in AR.
33
37
  * @category XR
@@ -23,7 +23,7 @@ const debug = getParam("debugwebxr");
23
23
  const debugQuicklook = getParam("debugusdz");
24
24
 
25
25
  /**
26
- * Use the WebXR component to enable VR, AR and Quicklook on iOS in your scene.
26
+ * Use the WebXR component to enable VR and AR on iOS and Android in your scene. VisionOS support is also provided via QuickLook USDZ export.
27
27
  *
28
28
  * The WebXR component is a simple to use wrapper around the {@link NeedleXRSession} API and adds some additional features like creating buttons for AR, VR, enabling default movement behaviour ({@link XRControllerMovement}) and controller rendering ({@link XRControllerModel}), as well as handling AR placement and Quicklook USDZ export.
29
29
  *
@@ -146,7 +146,9 @@ export class WebXR extends Behaviour {
146
146
 
147
147
  /**
148
148
  * When enabled, the AR session root center will be automatically adjusted to place the center of the scene.
149
- * This helps ensure the scene is properly aligned with detected surfaces.
149
+ * This helps ensure the scene is properly aligned with detected surfaces.
150
+ *
151
+ * **Note**: This option overrides the placement of the {@link WebARSessionRoot} component if both are used.
150
152
  */
151
153
  @serializable()
152
154
  autoCenter: boolean = false;
@@ -210,17 +212,25 @@ export class WebXR extends Behaviour {
210
212
  showBalloonWarning("<a href=\"https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API\" target=\"_blank\">WebXR</a> only works on secure connections (https).");
211
213
  }
212
214
 
213
- if (this.useQuicklookExport) {
214
- const existingUSDZExporter = GameObject.findObjectOfType(USDZExporter);
215
- if (!existingUSDZExporter) {
216
- // if no USDZ Exporter is found we add one and assign the scene to be exported
217
- if (debug) console.log("WebXR: Adding USDZExporter");
218
- this._usdzExporter = GameObject.addComponent(this.gameObject, USDZExporter);
219
- this._usdzExporter.objectToExport = this.context.scene;
220
- this._usdzExporter.autoExportAnimations = true;
221
- this._usdzExporter.autoExportAudioSources = true;
215
+ // Showing the QuickLook button depends on whether we're on iOS or visionOS –
216
+ // on iOS we have AppClip support, so we don't need QuickLook button there,
217
+ // while on visionOS we use QuickLook for AR experiences for now (unless it happens to have WebXR support by then).
218
+ navigator.xr?.isSessionSupported("immersive-ar").catch(() => false).then((arSupported) => {
219
+
220
+ const isVisionOSFallback = DeviceUtilities.isVisionOS() && !arSupported;
221
+
222
+ if (this.useQuicklookExport || isVisionOSFallback) {
223
+ const existingUSDZExporter = GameObject.findObjectOfType(USDZExporter);
224
+ if (!existingUSDZExporter) {
225
+ // if no USDZ Exporter is found we add one and assign the scene to be exported
226
+ if (debug) console.log("WebXR: Adding USDZExporter");
227
+ this._usdzExporter = GameObject.addComponent(this.gameObject, USDZExporter);
228
+ this._usdzExporter.objectToExport = this.context.scene;
229
+ this._usdzExporter.autoExportAnimations = true;
230
+ this._usdzExporter.autoExportAudioSources = true;
231
+ }
222
232
  }
223
- }
233
+ });
224
234
 
225
235
  this.handleCreatingHTML();
226
236
  this.handleOfferSession();
@@ -360,7 +370,7 @@ export class WebXR extends Behaviour {
360
370
 
361
371
  // Handle AR session root
362
372
  if (args.xr.isAR) {
363
- let sessionroot = GameObject.findObjectOfType(WebARSessionRoot);
373
+ let sessionroot = GameObject.findObjectOfType(WebARSessionRoot, this.context, false);
364
374
  // Only create a WebARSessionRoot if none is in the scene already
365
375
  if (!sessionroot) {
366
376
  if (this.usePlacementReticle) {