@needle-tools/engine 4.8.6 → 4.8.7-next.3c34e8b

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 (85) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/components.needle.json +1 -1
  3. package/dist/{gltf-progressive-DXRy9EQz.js → gltf-progressive-BcHT3Nyo.js} +1 -1
  4. package/dist/{gltf-progressive-C-U_onhf.umd.cjs → gltf-progressive-CH3Q4H06.umd.cjs} +1 -1
  5. package/dist/{gltf-progressive-DViD_J_l.min.js → gltf-progressive-DR6HqF_h.min.js} +1 -1
  6. package/dist/{needle-engine.bundle-CaNItSG7.umd.cjs → needle-engine.bundle-BgFqEj5W.umd.cjs} +128 -128
  7. package/dist/{needle-engine.bundle-CQIq7Zg-.min.js → needle-engine.bundle-BthqMTPI.min.js} +128 -128
  8. package/dist/{needle-engine.bundle-BTJDRZkJ.js → needle-engine.bundle-Fj5SzBaF.js} +4378 -4355
  9. package/dist/needle-engine.js +402 -400
  10. package/dist/needle-engine.min.js +1 -1
  11. package/dist/needle-engine.umd.cjs +1 -1
  12. package/dist/{postprocessing-61aXdqNz.umd.cjs → postprocessing-CVb_x9YY.umd.cjs} +1 -1
  13. package/dist/{postprocessing-D9jDHD0U.js → postprocessing-ORx-0eCx.js} +1 -1
  14. package/dist/{postprocessing-Be9Ds4NK.min.js → postprocessing-Ywv5oKkX.min.js} +1 -1
  15. package/dist/three-examples-BX_Sktc9.min.js +501 -0
  16. package/dist/{three-examples-BihZ_R96.js → three-examples-CNexix3E.js} +2436 -2781
  17. package/dist/{three-examples-Ce6Th3bv.umd.cjs → three-examples-DWxXVnws.umd.cjs} +21 -21
  18. package/dist/{vendor-BRpzuoJE.min.js → vendor-C43vobGc.min.js} +37 -37
  19. package/dist/{vendor-p_xp9KuJ.js → vendor-Z4SPrTcP.js} +2402 -2047
  20. package/dist/vendor-xfQ8tKF3.umd.cjs +1121 -0
  21. package/lib/engine/api.d.ts +2 -0
  22. package/lib/engine/api.js +2 -0
  23. package/lib/engine/api.js.map +1 -1
  24. package/lib/engine/engine_addressables.d.ts +12 -12
  25. package/lib/engine/engine_addressables.js +30 -23
  26. package/lib/engine/engine_addressables.js.map +1 -1
  27. package/lib/engine/engine_animation.d.ts +1 -3
  28. package/lib/engine/engine_animation.js +15 -9
  29. package/lib/engine/engine_animation.js.map +1 -1
  30. package/lib/engine/engine_feature_flags.d.ts +3 -0
  31. package/lib/engine/engine_feature_flags.js +6 -0
  32. package/lib/engine/engine_feature_flags.js.map +1 -0
  33. package/lib/engine/engine_gameobject.js +0 -4
  34. package/lib/engine/engine_gameobject.js.map +1 -1
  35. package/lib/engine/engine_loaders.js +15 -11
  36. package/lib/engine/engine_loaders.js.map +1 -1
  37. package/lib/engine/engine_mainloop_utils.d.ts +2 -1
  38. package/lib/engine/engine_mainloop_utils.js +18 -6
  39. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  40. package/lib/engine/engine_pmrem.d.ts +6 -0
  41. package/lib/engine/engine_pmrem.js +9 -40
  42. package/lib/engine/engine_pmrem.js.map +1 -1
  43. package/lib/engine/extensions/extensions.js +2 -2
  44. package/lib/engine/extensions/extensions.js.map +1 -1
  45. package/lib/engine/js-extensions/Object3D.js +19 -0
  46. package/lib/engine/js-extensions/Object3D.js.map +1 -1
  47. package/lib/engine-components/Animation.js +2 -1
  48. package/lib/engine-components/Animation.js.map +1 -1
  49. package/lib/engine-components/AnimationUtilsAutoplay.js +1 -6
  50. package/lib/engine-components/AnimationUtilsAutoplay.js.map +1 -1
  51. package/lib/engine-components/DropListener.d.ts +17 -12
  52. package/lib/engine-components/DropListener.js +34 -31
  53. package/lib/engine-components/DropListener.js.map +1 -1
  54. package/lib/engine-components/LookAtConstraint.d.ts +5 -1
  55. package/lib/engine-components/LookAtConstraint.js +8 -0
  56. package/lib/engine-components/LookAtConstraint.js.map +1 -1
  57. package/lib/engine-components/OrbitControls.d.ts +5 -7
  58. package/lib/engine-components/OrbitControls.js +12 -11
  59. package/lib/engine-components/OrbitControls.js.map +1 -1
  60. package/lib/engine-components/Skybox.js +9 -3
  61. package/lib/engine-components/Skybox.js.map +1 -1
  62. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +1 -1
  63. package/lib/engine-components/webxr/WebXRImageTracking.js +12 -10
  64. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  65. package/package.json +4 -3
  66. package/plugins/vite/alias.js +45 -23
  67. package/src/engine/api.ts +3 -1
  68. package/src/engine/engine_addressables.ts +44 -33
  69. package/src/engine/engine_animation.ts +17 -9
  70. package/src/engine/engine_feature_flags.ts +8 -0
  71. package/src/engine/engine_gameobject.ts +0 -4
  72. package/src/engine/engine_loaders.ts +18 -13
  73. package/src/engine/engine_mainloop_utils.ts +24 -8
  74. package/src/engine/engine_pmrem.ts +9 -45
  75. package/src/engine/extensions/extensions.ts +2 -2
  76. package/src/engine/js-extensions/Object3D.ts +25 -2
  77. package/src/engine-components/Animation.ts +1 -1
  78. package/src/engine-components/AnimationUtilsAutoplay.ts +1 -6
  79. package/src/engine-components/DropListener.ts +40 -31
  80. package/src/engine-components/LookAtConstraint.ts +9 -1
  81. package/src/engine-components/OrbitControls.ts +19 -16
  82. package/src/engine-components/Skybox.ts +8 -4
  83. package/src/engine-components/webxr/WebXRImageTracking.ts +16 -14
  84. package/dist/three-examples-DKY9Nfge.min.js +0 -501
  85. package/dist/vendor-Ja-vKV-a.umd.cjs +0 -1121
@@ -12,6 +12,7 @@ import { imageToCanvas, USDObject, USDWriter, USDZExporterContext } from "../../
12
12
  import { USDZExporter } from "../../engine-components/export/usdz/USDZExporter.js";
13
13
  import { Behaviour, GameObject } from "../Component.js";
14
14
  import { Renderer } from "../Renderer.js";
15
+ import { Context } from "../../engine/engine_context.js";
15
16
 
16
17
  // https://github.com/immersive-web/marker-tracking/blob/main/explainer.md
17
18
 
@@ -159,6 +160,10 @@ class ImageTrackingExtension implements IUSDExporterExtension {
159
160
  this.widthInMeters = widthInMeters;
160
161
  }
161
162
 
163
+ private getImageTrackingComponents() {
164
+ return GameObject.findObjectsOfType(WebXRImageTracking, Context.Current).filter(c => c.trackedImages && c.trackedImages.length > 0 && c.activeAndEnabled);
165
+ }
166
+
162
167
  onAfterHierarchy(_context: USDZExporterContext, writer: USDWriter) {
163
168
  const iOSVersion = DeviceUtilities.getiOSVersion();
164
169
  const majorVersion = iOSVersion ? parseInt(iOSVersion.split(".")[0]) : 18;
@@ -171,12 +176,10 @@ class ImageTrackingExtension implements IUSDExporterExtension {
171
176
  }
172
177
 
173
178
  onBeforeBuildDocument(_context: USDZExporterContext) {
174
- const imageTracking = GameObject.findObjectOfType(WebXRImageTracking);
175
- if (!imageTracking || !imageTracking.trackedImages) return;
179
+ const imageTracking = this.getImageTrackingComponents()[0];
176
180
 
177
181
  // Warn if more than one tracked image is used for USDZ; that's not supported at the moment.
178
- if (imageTracking.trackedImages.length > 1)
179
- {
182
+ if (imageTracking && imageTracking.trackedImages?.length > 1) {
180
183
  if (isDevEnvironment()) showBalloonWarning("USDZ: Only one tracked image is supported.");
181
184
  console.warn("USDZ: Only one tracked image is supported.");
182
185
  }
@@ -187,15 +190,14 @@ class ImageTrackingExtension implements IUSDExporterExtension {
187
190
  }
188
191
 
189
192
  onExportObject(object: Object3D<Object3DEventMap>, model: USDObject, _context: USDZExporterContext) {
190
- const imageTracking = GameObject.findObjectOfType(WebXRImageTracking);
191
- if (!imageTracking || !imageTracking.trackedImages) return;
193
+ const imageTracking = this.getImageTrackingComponents()[0];
194
+ if (!imageTracking || !imageTracking.trackedImages?.length) return;
192
195
 
196
+ const exporter = GameObject.findObjectOfType(USDZExporter);
197
+ if (!exporter) return;
193
198
 
194
199
  for (const trackedImage of imageTracking.trackedImages) {
195
200
  if (trackedImage.object?.asset === object) {
196
- const exporter = GameObject.findObjectOfType(USDZExporter);
197
- if (!exporter) continue;
198
-
199
201
  const { scale, target } = exporter.getARScaleAndTarget();
200
202
 
201
203
  // We have to reset the image tracking object's position and rotation, because QuickLook applies them.
@@ -220,8 +222,8 @@ class ImageTrackingExtension implements IUSDExporterExtension {
220
222
  // Thus, we can't have separate transforms for "regularly placing content" and "placing content with an image marker".
221
223
  // model.extraSchemas.push("Preliminary_AnchoringAPI");
222
224
  // model.addEventListener("serialize", (_writer: USDWriter, _context: USDZExporterContext) => {
223
- // writer.appendLine( `token preliminary:anchoring:type = "image"` );
224
- // writer.appendLine( `rel preliminary:imageAnchoring:referenceImage = </${context.document.name}/Scenes/Scene/AnchoringReferenceImage>` );
225
+ // writer.appendLine( `token preliminary:anchoring:type = "image"` );
226
+ // writer.appendLine( `rel preliminary:imageAnchoring:referenceImage = </${context.document.name}/Scenes/Scene/AnchoringReferenceImage>` );
225
227
  // });
226
228
 
227
229
  // We can only apply this to the first tracked image, more are not supported by QuickLook.
@@ -238,7 +240,7 @@ class ImageTrackingExtension implements IUSDExporterExtension {
238
240
  export class WebXRImageTracking extends Behaviour {
239
241
 
240
242
  @serializable(WebXRImageTrackingModel)
241
- trackedImages?: WebXRImageTrackingModel[];
243
+ trackedImages: WebXRImageTrackingModel[] = [];
242
244
 
243
245
  /** Applies smoothing based on detected jitter to the tracked image. */
244
246
  @serializable()
@@ -337,7 +339,7 @@ export class WebXRImageTracking extends Behaviour {
337
339
 
338
340
  onLeaveXR(_args: NeedleXREventArgs): void {
339
341
 
340
- if(!this.supported && DeviceUtilities.isAndroidDevice()) {
342
+ if (!this.supported && DeviceUtilities.isAndroidDevice()) {
341
343
  showBalloonWarning(this.webXRIncubationsWarning);
342
344
  }
343
345
 
@@ -364,7 +366,7 @@ export class WebXRImageTracking extends Behaviour {
364
366
  private readonly imageToObjectMap = new Map<WebXRImageTrackingModel, { object: Object3D | null, frames: number, lastTrackingTime: number }>();
365
367
  private readonly currentImages: WebXRTrackedImage[] = [];
366
368
 
367
-
369
+
368
370
  private readonly webXRIncubationsWarning = "Image tracking is currently not supported on this device. On Chrome for Android, you can enable the <a target=\"_blank\" href=\"#\" onclick=\"() => console.log('I')\">chrome://flags/#webxr-incubations</a> flag.";
369
371
 
370
372
  onUpdateXR(args: NeedleXREventArgs): void {