@needle-tools/engine 3.37.3-alpha → 3.37.5-alpha

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 (51) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +5 -3
  3. package/dist/needle-engine.js +325 -248
  4. package/dist/needle-engine.light.js +1614 -1537
  5. package/dist/needle-engine.light.min.js +111 -98
  6. package/dist/needle-engine.light.umd.cjs +146 -133
  7. package/dist/needle-engine.min.js +43 -30
  8. package/dist/needle-engine.umd.cjs +64 -51
  9. package/lib/engine/engine_physics.d.ts +2 -2
  10. package/lib/engine/engine_physics.js +4 -4
  11. package/lib/engine/engine_physics.js.map +1 -1
  12. package/lib/engine/engine_physics_rapier.d.ts +24 -4
  13. package/lib/engine/engine_physics_rapier.js +33 -12
  14. package/lib/engine/engine_physics_rapier.js.map +1 -1
  15. package/lib/engine/engine_types.d.ts +27 -4
  16. package/lib/engine/engine_types.js.map +1 -1
  17. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +0 -1
  18. package/lib/engine/extensions/NEEDLE_lighting_settings.js +0 -6
  19. package/lib/engine/extensions/NEEDLE_lighting_settings.js.map +1 -1
  20. package/lib/engine/webcomponents/needle menu/needle-menu.js +14 -1
  21. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  22. package/lib/engine-components/Collider.d.ts +25 -0
  23. package/lib/engine-components/Collider.js +25 -0
  24. package/lib/engine-components/Collider.js.map +1 -1
  25. package/lib/engine-components/OrbitControls.d.ts +16 -3
  26. package/lib/engine-components/OrbitControls.js +25 -9
  27. package/lib/engine-components/OrbitControls.js.map +1 -1
  28. package/lib/engine-components/ParticleSystem.d.ts +31 -1
  29. package/lib/engine-components/ParticleSystem.js +42 -1
  30. package/lib/engine-components/ParticleSystem.js.map +1 -1
  31. package/lib/engine-components/RigidBody.d.ts +3 -0
  32. package/lib/engine-components/RigidBody.js +5 -2
  33. package/lib/engine-components/RigidBody.js.map +1 -1
  34. package/lib/engine-components/SceneSwitcher.d.ts +22 -2
  35. package/lib/engine-components/SceneSwitcher.js +29 -3
  36. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  37. package/lib/engine-components/SyncedTransform.js +3 -15
  38. package/lib/engine-components/SyncedTransform.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/engine/codegen/register_types.ts +2 -2
  41. package/src/engine/engine_physics.ts +4 -4
  42. package/src/engine/engine_physics_rapier.ts +48 -14
  43. package/src/engine/engine_types.ts +29 -6
  44. package/src/engine/extensions/NEEDLE_lighting_settings.ts +0 -5
  45. package/src/engine/webcomponents/needle menu/needle-menu.ts +14 -1
  46. package/src/engine-components/Collider.ts +27 -4
  47. package/src/engine-components/OrbitControls.ts +29 -11
  48. package/src/engine-components/ParticleSystem.ts +44 -4
  49. package/src/engine-components/RigidBody.ts +5 -2
  50. package/src/engine-components/SceneSwitcher.ts +45 -5
  51. package/src/engine-components/SyncedTransform.ts +4 -17
@@ -24508,7 +24508,7 @@ class S_ extends Lh {
24508
24508
  A._backgroundMesh.visible = !(this._input === "none" || this._input === "transparent"), this._input === "inherit" ? this._value.set(this.getInheritedInput(A)) : this._input === "transparent" || this._input === "none" || this._value.set(this._input);
24509
24509
  }
24510
24510
  }
24511
- class On extends kt {
24511
+ class Pn extends kt {
24512
24512
  /**
24513
24513
  *
24514
24514
  * @param {string} propertyId
@@ -24695,7 +24695,7 @@ class k5 extends G_ {
24695
24695
  super.computeOutputValue(A);
24696
24696
  }
24697
24697
  }
24698
- class k_ extends On {
24698
+ class k_ extends Pn {
24699
24699
  constructor() {
24700
24700
  super("textContent"), this._needsUpdate = !1;
24701
24701
  }
@@ -25702,7 +25702,7 @@ class md extends ZA.Object3D {
25702
25702
  fontCastShadow: { m: "castShadow" },
25703
25703
  fontReceiveShadow: { m: "receiveShadow" },
25704
25704
  renderOrder: { m: "renderOrder" }
25705
- }, this._children = e.children ? new e.children() : new On("children"), this._parent = new Lj(), this.addEventListener("added", this._rebuildParentUI), this.addEventListener("removed", this._rebuildParentUI), this._backgroundSide = new lJ("backgroundSide"), this._fontSide = new lJ("fontSide"), this._backgroundAlphaTest = new cJ("backgroundAlphaTest", 0.02), this._fontAlphaTest = new cJ("fontAlphaTest", 0.02), this._visible = new E5("visible", !0), this._backgroundCastShadow = new Cp("backgroundCastShadow"), this._fontCastShadow = new Cp("fontCastShadow"), this._backgroundReceiveShadow = new Cp("backgroundReceiveShadow"), this._fontReceiveShadow = new Cp("fontReceiveShadow"), this._renderOrder = new Rj(), this._segments = e.segments ? new e.segments() : new q_(), this._bounds = e.bounds ? new e.bounds() : new On("bounds"), this._order = new y5(), this._padding = new vj(), this._margin = new qj(), this._position = new m_(), this._flexDirection = e.flexDirection ? new e.flexDirection() : new MU(), this._justifyContent = e.justifyContent ? new e.justifyContent() : new UU(), this._alignItems = e.alignItems ? new e.alignItems() : new GU(), this._display = new Vj("flex"), this._boxSizing = new $j("border-box"), this._width = new G5(), this._height = new k5(), this._backgroundColor = e.backgroundColor ? new e.backgroundColor() : new S_(), this._backgroundOpacity = new m0("backgroundOpacity", 0.5), this._backgroundImage = new i5(), this._backgroundSize = new I5("cover"), this._color = e.color ? new e.color() : new Lh("color", "inherit"), this._fontOpacity = new m0("fontOpacity", "inherit"), this._whiteSpace = e.whiteSpace ? new e.whiteSpace() : new b_(), this._fontFamily = e.fontFamily ? new e.fontFamily() : new K_(), this._fontStyle = e.fontStyle ? new e.fontStyle() : new M_("normal"), this._fontWeight = e.fontWeight ? new e.fontWeight() : new U_(), this._fontSize = e.fontSize ? new e.fontSize() : new sV(), this._lineHeight = e.lineHeight ? new e.lineHeight() : new J_(), this._fontKerning = e.fontKerning ? new e.fontKerning() : new Xw(), this._letterSpacing = e.letterSpacing ? new e.letterSpacing() : new v_(), this._overflow = new n5("visible"), this._borderRadius = new B5(0), this._borderWidth = new Q5(0), this._borderColor = new Lh("borderColor", 16711935), this._borderOpacity = new m0("borderOpacity", 1), this._font = new Wj(), this._lineBreak = e.lineBreak ? new e.lineBreak() : new On("lineBreak"), this._textContent = e.textContent ? new e.textContent() : new k_(), this._glyphs = e.glyphs ? new e.glyphs() : new On("glyphs"), this._inlines = e.inlines ? new e.inlines() : new On("inlines"), this._layouter = e.layouter ? new e.layouter() : new On("layouter"), this._inlineJustificator = new c5(), this._textAlign = e.textAlign ? new e.textAlign() : new kU(), this._autoSize = e.autoSize ? new e.autoSize() : new On("autoSize"), this._renderer = e.renderer ? new e.renderer() : new On("renderer"), this._offset = new Nj(), this._invertAlpha = new nV(), this._fontSmooth = e.fontSmooth ? new e.fontSmooth() : new Fj(), this._components = [
25705
+ }, this._children = e.children ? new e.children() : new Pn("children"), this._parent = new Lj(), this.addEventListener("added", this._rebuildParentUI), this.addEventListener("removed", this._rebuildParentUI), this._backgroundSide = new lJ("backgroundSide"), this._fontSide = new lJ("fontSide"), this._backgroundAlphaTest = new cJ("backgroundAlphaTest", 0.02), this._fontAlphaTest = new cJ("fontAlphaTest", 0.02), this._visible = new E5("visible", !0), this._backgroundCastShadow = new Cp("backgroundCastShadow"), this._fontCastShadow = new Cp("fontCastShadow"), this._backgroundReceiveShadow = new Cp("backgroundReceiveShadow"), this._fontReceiveShadow = new Cp("fontReceiveShadow"), this._renderOrder = new Rj(), this._segments = e.segments ? new e.segments() : new q_(), this._bounds = e.bounds ? new e.bounds() : new Pn("bounds"), this._order = new y5(), this._padding = new vj(), this._margin = new qj(), this._position = new m_(), this._flexDirection = e.flexDirection ? new e.flexDirection() : new MU(), this._justifyContent = e.justifyContent ? new e.justifyContent() : new UU(), this._alignItems = e.alignItems ? new e.alignItems() : new GU(), this._display = new Vj("flex"), this._boxSizing = new $j("border-box"), this._width = new G5(), this._height = new k5(), this._backgroundColor = e.backgroundColor ? new e.backgroundColor() : new S_(), this._backgroundOpacity = new m0("backgroundOpacity", 0.5), this._backgroundImage = new i5(), this._backgroundSize = new I5("cover"), this._color = e.color ? new e.color() : new Lh("color", "inherit"), this._fontOpacity = new m0("fontOpacity", "inherit"), this._whiteSpace = e.whiteSpace ? new e.whiteSpace() : new b_(), this._fontFamily = e.fontFamily ? new e.fontFamily() : new K_(), this._fontStyle = e.fontStyle ? new e.fontStyle() : new M_("normal"), this._fontWeight = e.fontWeight ? new e.fontWeight() : new U_(), this._fontSize = e.fontSize ? new e.fontSize() : new sV(), this._lineHeight = e.lineHeight ? new e.lineHeight() : new J_(), this._fontKerning = e.fontKerning ? new e.fontKerning() : new Xw(), this._letterSpacing = e.letterSpacing ? new e.letterSpacing() : new v_(), this._overflow = new n5("visible"), this._borderRadius = new B5(0), this._borderWidth = new Q5(0), this._borderColor = new Lh("borderColor", 16711935), this._borderOpacity = new m0("borderOpacity", 1), this._font = new Wj(), this._lineBreak = e.lineBreak ? new e.lineBreak() : new Pn("lineBreak"), this._textContent = e.textContent ? new e.textContent() : new k_(), this._glyphs = e.glyphs ? new e.glyphs() : new Pn("glyphs"), this._inlines = e.inlines ? new e.inlines() : new Pn("inlines"), this._layouter = e.layouter ? new e.layouter() : new Pn("layouter"), this._inlineJustificator = new c5(), this._textAlign = e.textAlign ? new e.textAlign() : new kU(), this._autoSize = e.autoSize ? new e.autoSize() : new Pn("autoSize"), this._renderer = e.renderer ? new e.renderer() : new Pn("renderer"), this._offset = new Nj(), this._invertAlpha = new nV(), this._fontSmooth = e.fontSmooth ? new e.fontSmooth() : new Fj(), this._components = [
25706
25706
  this._textContent,
25707
25707
  this._children,
25708
25708
  this._parent,
@@ -28989,7 +28989,7 @@ function FBA(g, A) {
28989
28989
  g.lookAt(A), g.quaternion.multiply(IX);
28990
28990
  }
28991
28991
  function $w(g, A, e = !0, t = !1) {
28992
- const i = xe(A), I = xe(g);
28992
+ const i = _e(A), I = _e(g);
28993
28993
  if (t) {
28994
28994
  if (Ns(g, bt(A)), e) {
28995
28995
  const o = I.y, s = I.sub(aT(g));
@@ -29010,7 +29010,7 @@ function TQ(g) {
29010
29010
  return g instanceof MA ? A.copy(g) : g instanceof DOMPointReadOnly && A.set(g.x, g.y, g.z, g.w), A;
29011
29011
  }
29012
29012
  const ZU = new Rs(() => new w(), 100), yJ = Symbol("lastMatrixWorldUpdateKey");
29013
- function xe(g, A = null, e = !0) {
29013
+ function _e(g, A = null, e = !0) {
29014
29014
  const t = A ?? ZU.get();
29015
29015
  return g ? g.parent ? (e && g.updateWorldMatrix(!0, !1), g.matrixWorldNeedsUpdate && g[yJ] !== Date.now() && (g[yJ] = Date.now(), g.updateMatrixWorld()), t.setFromMatrixPosition(g.matrixWorld), t) : t.copy(g.position) : t.set(0, 0, 0);
29016
29016
  }
@@ -29476,13 +29476,13 @@ function vBA(g) {
29476
29476
  ok = g;
29477
29477
  }
29478
29478
  const lT = IA("debugdefines");
29479
- OE('if(!globalThis[""3.37.3-alpha""]) globalThis[""3.37.3-alpha""] = "0.0.0";');
29479
+ OE('if(!globalThis[""3.37.5-alpha""]) globalThis[""3.37.5-alpha""] = "0.0.0";');
29480
29480
  OE('if(!globalThis[""undefined""]) globalThis[""undefined""] = "unknown";');
29481
- OE('if(!globalThis[""Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)""]) globalThis[""Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)""] = "unknown";');
29482
- OE('globalThis["__NEEDLE_ENGINE_VERSION__"] = "3.37.3-alpha";');
29481
+ OE('if(!globalThis[""Tue Apr 23 2024 09:16:03 GMT+0200 (Central European Summer Time)""]) globalThis[""Tue Apr 23 2024 09:16:03 GMT+0200 (Central European Summer Time)""] = "unknown";');
29482
+ OE('globalThis["__NEEDLE_ENGINE_VERSION__"] = "3.37.5-alpha";');
29483
29483
  OE('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
29484
- OE('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)";');
29485
- const lC = "3.37.3-alpha", jU = "undefined", hT = "Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)";
29484
+ OE('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Tue Apr 23 2024 09:16:03 GMT+0200 (Central European Summer Time)";');
29485
+ const lC = "3.37.5-alpha", jU = "undefined", hT = "Tue Apr 23 2024 09:16:03 GMT+0200 (Central European Summer Time)";
29486
29486
  lT && console.log(`Engine version: ${lC} (generator: ${jU})
29487
29487
  Project built at ${hT}`);
29488
29488
  const Ra = "needle_isActiveInHierarchy", GQ = "builtin_components", hf = "needle_editor_guid";
@@ -30353,24 +30353,24 @@ function ZX(g) {
30353
30353
  const N = a + h._offset, y = N + f, U = y + k, H = U + G, x = new Uint8Array(g.buffer, g.byteOffset + N, f), K = new Uint8Array(g.buffer, g.byteOffset + y, k), O = new Uint8Array(g.buffer, g.byteOffset + U, G), b = new Uint8Array(g.buffer, g.byteOffset + H, M);
30354
30354
  return e.globalData = { endpointCount: p, selectorCount: u, imageDescs: m, endpointsData: x, selectorsData: K, tablesData: O, extendedData: b }, e;
30355
30355
  }
30356
- let J0, Pn, nk;
30356
+ let J0, Wn, nk;
30357
30357
  const b0 = { env: { emscripten_notify_memory_growth: function(g) {
30358
- nk = new Uint8Array(Pn.exports.memory.buffer);
30358
+ nk = new Uint8Array(Wn.exports.memory.buffer);
30359
30359
  } } };
30360
30360
  let jX = class {
30361
30361
  init() {
30362
30362
  return J0 || (J0 = typeof fetch < "u" ? fetch("data:application/wasm;base64," + JJ).then((A) => A.arrayBuffer()).then((A) => WebAssembly.instantiate(A, b0)).then(this._init) : WebAssembly.instantiate(Buffer.from(JJ, "base64"), b0).then(this._init), J0);
30363
30363
  }
30364
30364
  _init(A) {
30365
- Pn = A.instance, b0.env.emscripten_notify_memory_growth(0);
30365
+ Wn = A.instance, b0.env.emscripten_notify_memory_growth(0);
30366
30366
  }
30367
30367
  decode(A, e = 0) {
30368
- if (!Pn)
30368
+ if (!Wn)
30369
30369
  throw new Error("ZSTDDecoder: Await .init() before decoding.");
30370
- const t = A.byteLength, i = Pn.exports.malloc(t);
30371
- nk.set(A, i), e = e || Number(Pn.exports.ZSTD_findDecompressedSize(i, t));
30372
- const I = Pn.exports.malloc(e), o = Pn.exports.ZSTD_decompress(I, e, i, t), s = nk.slice(I, I + o);
30373
- return Pn.exports.free(i), Pn.exports.free(I), s;
30370
+ const t = A.byteLength, i = Wn.exports.malloc(t);
30371
+ nk.set(A, i), e = e || Number(Wn.exports.ZSTD_findDecompressedSize(i, t));
30372
+ const I = Wn.exports.malloc(e), o = Wn.exports.ZSTD_decompress(I, e, i, t), s = nk.slice(I, I + o);
30373
+ return Wn.exports.free(i), Wn.exports.free(I), s;
30374
30374
  }
30375
30375
  };
30376
30376
  const JJ = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", v0 = /* @__PURE__ */ new WeakMap();
@@ -44369,7 +44369,7 @@ const sm = Symbol("assetReference"), vr = class {
44369
44369
  * @returns the AssetReference for the URL
44370
44370
  */
44371
44371
  static getOrCreateFromUrl(A, e) {
44372
- if (!e && (e = Le.Current, !e))
44372
+ if (!e && (e = xe.Current, !e))
44373
44373
  throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.');
44374
44374
  const t = e.addressables, i = t.findAssetReference(A);
44375
44375
  if (i)
@@ -44383,7 +44383,7 @@ const sm = Symbol("assetReference"), vr = class {
44383
44383
  */
44384
44384
  static getOrCreate(A, e, t) {
44385
44385
  if (typeof A == "string") {
44386
- if (!t && (t = Le.Current, !t))
44386
+ if (!t && (t = xe.Current, !t))
44387
44387
  throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.');
44388
44388
  } else
44389
44389
  t = A.context, A = A.sourceId;
@@ -44426,7 +44426,7 @@ const sm = Symbol("assetReference"), vr = class {
44426
44426
  }
44427
44427
  /** frees previously allocated memory and destroys the current `asset` instance (if any) */
44428
44428
  unload() {
44429
- this.asset && (ia && console.log("Unload", this.asset), this.asset.scene && yn(this.asset.scene, !0, !0), yn(this.asset, !0, !0)), this.asset = null, this._rawBinary = void 0, this._glbRoot = null, this._loading = void 0, Le.Current && Le.Current.addressables.unregisterAssetReference(this);
44429
+ this.asset && (ia && console.log("Unload", this.asset), this.asset.scene && yn(this.asset.scene, !0, !0), yn(this.asset, !0, !0)), this.asset = null, this._rawBinary = void 0, this._glbRoot = null, this._loading = void 0, xe.Current && xe.Current.addressables.unregisterAssetReference(this);
44430
44430
  }
44431
44431
  /** loads the asset binary without creating an instance */
44432
44432
  async preload() {
@@ -44449,7 +44449,7 @@ const sm = Symbol("assetReference"), vr = class {
44449
44449
  return this.asset;
44450
44450
  if (A && this._progressListeners.push(A), this._loading !== void 0)
44451
44451
  return this._loading.then((i) => this.asset);
44452
- const e = Le.Current;
44452
+ const e = xe.Current;
44453
44453
  this._rawBinary ? (this._loading = pn().parseSync(e, this._rawBinary, this.uri, null), this.raiseProgressEvent(new ProgressEvent("progress", { loaded: this._rawBinary.byteLength, total: this._rawBinary.byteLength }))) : (ia && console.log("Load async", this.uri), this._loading = pn().loadSync(e, this._hashedUri, this.uri, null, (i) => {
44454
44454
  this.raiseProgressEvent(i);
44455
44455
  }));
@@ -44477,7 +44477,7 @@ const sm = Symbol("assetReference"), vr = class {
44477
44477
  e(this, A);
44478
44478
  }
44479
44479
  async onInstantiate(A, e = !1, t) {
44480
- const i = Le.Current, I = new kn();
44480
+ const i = xe.Current, I = new kn();
44481
44481
  if (A instanceof uA ? I.parent = A : A && I.cloneAssign(A), I.parent || (I.parent = i.scene), this.mustLoad && await this.loadAssetAsync(), ia && console.log("Instantiate", this.uri, "parent:", A), this.asset) {
44482
44482
  ia && console.log("Add to scene", this.asset);
44483
44483
  let o = vr.currentlyInstantiating.get(this.uri);
@@ -44994,7 +44994,7 @@ class Zi {
44994
44994
  this.set({ textContent: B }), C.tmuiNeedsUpdate = !0;
44995
44995
  };
44996
44996
  }
44997
- return this.tmuiNeedsUpdate = !0, this.registerTimedObject(Le.Current, o, A, this.textLabelCache), o;
44997
+ return this.tmuiNeedsUpdate = !0, this.registerTimedObject(xe.Current, o, A, this.textLabelCache), o;
44998
44998
  }
44999
44999
  static getBox(A) {
45000
45000
  let e = this.boxesCache.pop();
@@ -45002,7 +45002,7 @@ class Zi {
45002
45002
  const t = new Yt(1, 1, 1);
45003
45003
  e = new lA(t);
45004
45004
  }
45005
- return this.registerTimedObject(Le.Current, e, A, this.boxesCache), e;
45005
+ return this.registerTimedObject(xe.Current, e, A, this.boxesCache), e;
45006
45006
  }
45007
45007
  static getLine(A) {
45008
45008
  let e = this.linesCache.pop();
@@ -45011,15 +45011,15 @@ class Zi {
45011
45011
  let t = e.geometry.getAttribute("position");
45012
45012
  t || (t = new te(new Float32Array(2 * 3), 3), e.geometry.setAttribute("position", t));
45013
45013
  }
45014
- return e.frustumCulled = !1, this.registerTimedObject(Le.Current, e, A, this.linesCache), e;
45014
+ return e.frustumCulled = !1, this.registerTimedObject(xe.Current, e, A, this.linesCache), e;
45015
45015
  }
45016
45016
  static getSphere(A, e, t) {
45017
45017
  let i = this.spheresCache.pop();
45018
- return i || (i = new lA(new vs(1, 8, 8))), i.scale.set(A, A, A), i.material.wireframe = t, this.registerTimedObject(Le.Current, i, e, this.spheresCache), i;
45018
+ return i || (i = new lA(new vs(1, 8, 8))), i.scale.set(A, A, A), i.material.wireframe = t, this.registerTimedObject(xe.Current, i, e, this.spheresCache), i;
45019
45019
  }
45020
45020
  static getArrowHead(A) {
45021
45021
  let e = this.arrowHeadsCache.pop();
45022
- return e || (e = new lA(new xi(0, 0.5, 1, 8))), this.registerTimedObject(Le.Current, e, A, this.arrowHeadsCache), e;
45022
+ return e || (e = new lA(new xi(0, 0.5, 1, 8))), this.registerTimedObject(xe.Current, e, A, this.arrowHeadsCache), e;
45023
45023
  }
45024
45024
  static registerTimedObject(A, e, t, i) {
45025
45025
  const I = this.contextBeforeRenderCallbacks.get(A), o = this.contextPostRenderCallbacks.get(A);
@@ -45047,7 +45047,7 @@ class Zi {
45047
45047
  }
45048
45048
  e.traverse((s) => {
45049
45049
  s.layers.disableAll(), s.layers.enable(2);
45050
- }), e.renderOrder = 999999, e[Uk] = i, this.timedObjectsBuffer.push(e), this.timesBuffer.push(Le.Current.time.realtimeSinceStartup + t), A.scene.add(e);
45050
+ }), e.renderOrder = 999999, e[Uk] = i, this.timedObjectsBuffer.push(e), this.timesBuffer.push(xe.Current.time.realtimeSinceStartup + t), A.scene.add(e);
45051
45051
  }
45052
45052
  static onBeforeRender(A, e) {
45053
45053
  this.tmuiNeedsUpdate && Lt.update();
@@ -45073,7 +45073,7 @@ class Zi {
45073
45073
  r(Zi, "familyName", "needle-gizmos"), r(Zi, "linesCache", []), r(Zi, "spheresCache", []), r(Zi, "boxesCache", []), r(Zi, "arrowHeadsCache", []), r(Zi, "textLabelCache", []), r(Zi, "timedObjectsBuffer", new Array()), r(Zi, "timesBuffer", new Array()), r(Zi, "contextPostRenderCallbacks", /* @__PURE__ */ new Map()), r(Zi, "contextBeforeRenderCallbacks", /* @__PURE__ */ new Map()), r(Zi, "tmuiNeedsUpdate", !1);
45074
45074
  const eg = IA("debuginput");
45075
45075
  var ER = /* @__PURE__ */ ((g) => (g.Mouse = "mouse", g.Touch = "touch", g.Controller = "controller", g.Hand = "hand", g))(ER || {}), ci = /* @__PURE__ */ ((g) => (g.PointerDown = "pointerdown", g.PointerUp = "pointerup", g.PointerMove = "pointermove", g.KeyDown = "keydown", g.KeyUp = "keyup", g.KeyPressed = "keypress", g))(ci || {});
45076
- class aa extends PointerEvent {
45076
+ class Ca extends PointerEvent {
45077
45077
  constructor(e, t, i) {
45078
45078
  super(e, i);
45079
45079
  /** the device index: mouse and touch are always 0, otherwise e.g. index of the connected Gamepad or XRController */
@@ -45278,7 +45278,7 @@ class GAA {
45278
45278
  return;
45279
45279
  const e = this.getPointerId(A);
45280
45280
  eg && hi(`pointer down #${e}, identifier:${A.pointerId}`);
45281
- const t = this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), i = new aa("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: t, pressure: A.pressure });
45281
+ const t = this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), i = new Ca("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: t, pressure: A.pressure });
45282
45282
  this.onDown(i);
45283
45283
  });
45284
45284
  r(this, "onPointerMove", (A) => {
@@ -45288,13 +45288,13 @@ class GAA {
45288
45288
  A.pointerType === "mouse" && (e = this.getFirstPressedButtonForPointer(0) ?? 0);
45289
45289
  const t = this.getPointerId(A, e);
45290
45290
  e === -1 && (e = t);
45291
- const i = this.getAndUpdateSpatialObjectForScreenPosition(t, A.clientX, A.clientY), I = new aa("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: t, button: e, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: i, pressure: A.pressure });
45291
+ const i = this.getAndUpdateSpatialObjectForScreenPosition(t, A.clientX, A.clientY), I = new Ca("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: t, button: e, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: i, pressure: A.pressure });
45292
45292
  this.onMove(I);
45293
45293
  });
45294
45294
  r(this, "onPointerUp", (A) => {
45295
45295
  if (this.context.isInAR)
45296
45296
  return;
45297
- const e = this.getPointerId(A), t = new aa("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), pressure: A.pressure });
45297
+ const e = this.getPointerId(A), t = new Ca("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), pressure: A.pressure });
45298
45298
  this.onUp(t), this._pointerIds[e] = -1, eg && console.log("ID=" + e, "PointerId=" + A.pointerId, "ALL:", [...this._pointerIds]);
45299
45299
  });
45300
45300
  r(this, "onPointerCancel", (A) => {
@@ -45304,21 +45304,21 @@ class GAA {
45304
45304
  r(this, "onTouchStart", (A) => {
45305
45305
  if (this.context.isInAR)
45306
45306
  for (let e = 0; e < A.changedTouches.length; e++) {
45307
- const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new aa("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45307
+ const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new Ca("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45308
45308
  this.onDown(o);
45309
45309
  }
45310
45310
  });
45311
45311
  r(this, "onTouchMove", (A) => {
45312
45312
  if (this.context.isInAR)
45313
45313
  for (let e = 0; e < A.changedTouches.length; e++) {
45314
- const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new aa("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45314
+ const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new Ca("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45315
45315
  this.onMove(o);
45316
45316
  }
45317
45317
  });
45318
45318
  r(this, "onTouchEnd", (A) => {
45319
45319
  if (this.context.isInAR)
45320
45320
  for (let e = 0; e < A.changedTouches.length; e++) {
45321
- const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = new aa("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), pressure: t.force });
45321
+ const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = new Ca("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), pressure: t.force });
45322
45322
  this.onUp(I), this._pointerIds[i] = -1;
45323
45323
  }
45324
45324
  });
@@ -45380,7 +45380,7 @@ class GAA {
45380
45380
  a.options.once && (n.listeners.splice(C, 1), C--), a.callback(A);
45381
45381
  }
45382
45382
  }
45383
- if (A instanceof aa) {
45383
+ if (A instanceof Ca) {
45384
45384
  const s = this._eventListeners[A.type];
45385
45385
  if (s)
45386
45386
  for (const n of s) {
@@ -45785,11 +45785,11 @@ class GAA {
45785
45785
  return e[A] = t, t;
45786
45786
  }
45787
45787
  onDispatchEvent(A) {
45788
- const e = Le.Current;
45788
+ const e = xe.Current;
45789
45789
  try {
45790
- Le.Current = this.context, this.dispatchEvent(A);
45790
+ xe.Current = this.context, this.dispatchEvent(A);
45791
45791
  } finally {
45792
- Le.Current = e;
45792
+ xe.Current = e;
45793
45793
  }
45794
45794
  }
45795
45795
  }
@@ -46277,8 +46277,8 @@ Pinch: ${(i = this.getGesture("pinch")) == null ? void 0 : i.value.toFixed(3)}`)
46277
46277
  }
46278
46278
  if (this.xr.mode === "immersive-vr" || this.xr.isPassThrough) {
46279
46279
  this.pointerInit.origin = this, this.pointerInit.pointerId = this.index * 10 + e, this.pointerInit.pointerType = this.hand ? "hand" : "controller", this.pointerInit.button = e, this.pointerInit.buttonName = t, this.pointerInit.isPrimary = i, this.pointerInit.mode = this.inputSource.targetRayMode, this.pointerInit.ray = this.ray, this.pointerInit.device = this.object, this.pointerInit.pressure = o;
46280
- const s = Le.Current;
46281
- Le.Current = this.xr.context, ga && A !== "pointermove" && console.warn("Pointer event", A, e, t, { ...this.pointerInit }), this.xr.context.input.createInputEvent(new aa(A, I, this.pointerInit)), Le.Current = s;
46280
+ const s = xe.Current;
46281
+ xe.Current = this.xr.context, ga && A !== "pointermove" && console.warn("Pointer event", A, e, t, { ...this.pointerInit }), this.xr.context.input.createInputEvent(new Ca(A, I, this.pointerInit)), xe.Current = s;
46282
46282
  }
46283
46283
  }
46284
46284
  }
@@ -52794,7 +52794,7 @@ async function meA() {
52794
52794
  const A = sessionStorage.getItem("needle_xr_session_mode"), e = sessionStorage.getItem("needle_xr_session_init") ?? null, t = e ? JSON.parse(e) : null;
52795
52795
  let i = null;
52796
52796
  if (RY() && (await wa.start(A || "immersive-vr", t || Se.getDefaultSessionInit("immersive-vr")), await MeA(), i = await wa.handoff()), i)
52797
- Se.setSession(i.mode, i.session, i.init, Le.Current);
52797
+ Se.setSession(i.mode, i.session, i.init, xe.Current);
52798
52798
  else if (A && e) {
52799
52799
  console.log("Session Granted: Restore last session");
52800
52800
  const I = JSON.parse(e);
@@ -53022,7 +53022,7 @@ const tC = class {
53022
53022
  GeA(A, i.init), this.session = e, this.mode = A, this.context = t, (Bg || IA("console")) && Oh(!0), this._xr_scripts = [...i.scripts], this._xr_update_scripts = this._xr_scripts.filter((s) => typeof s.onUpdateXR == "function"), this._controllerAdded = i.controller_added, this._controllerRemoved = i.controller_removed, WE(this.onBefore, ni.LateUpdate), this.context.pre_render_callbacks.push(this.onBeforeRender), this.context.post_render_callbacks.push(this.onAfterRender), ((I = i.init.optionalFeatures) != null && I.includes("hit-test") || (o = i.init.requiredFeatures) != null && o.includes("hit-test")) && e.requestReferenceSpace("viewer").then((s) => {
53023
53023
  var n, C;
53024
53024
  return (C = (n = e.requestHitTestSource) == null ? void 0 : n.call(e, { space: s })) == null ? void 0 : C.then((a) => this._viewerHitTestSource = a);
53025
- }).catch((s) => console.warn(s)), this.context.mainCamera && (this._originalCameraWorldPosition = xe(this.context.mainCamera, new w()), this._originalCameraWorldRotation = bt(this.context.mainCamera, new MA()), this._originalCameraWorldScale = oi(this.context.mainCamera, new w()), this._originalCameraParent = this.context.mainCamera.parent), this._defaultRig = new MAA(), this.context.scene.add(this._defaultRig.gameObject), this.addRig(this._defaultRig);
53025
+ }).catch((s) => console.warn(s)), this.context.mainCamera && (this._originalCameraWorldPosition = _e(this.context.mainCamera, new w()), this._originalCameraWorldRotation = bt(this.context.mainCamera, new MA()), this._originalCameraWorldScale = oi(this.context.mainCamera, new w()), this._originalCameraParent = this.context.mainCamera.parent), this._defaultRig = new MAA(), this.context.scene.add(this._defaultRig.gameObject), this.addRig(this._defaultRig);
53026
53026
  for (let s = 0; s < e.inputSources.length; s++) {
53027
53027
  const n = e.inputSources[s];
53028
53028
  if (!n.handedness) {
@@ -53163,7 +53163,7 @@ const tC = class {
53163
53163
  return console.warn("A XRSession is already being requested"), (Bg || de()) && Ni("A XRSession is already being requested"), this._currentSessionRequest.then(() => this._activeSession);
53164
53164
  if (this._activeSession)
53165
53165
  return console.error("A XRSession is already running"), this._activeSession;
53166
- if (t || (t = Le.Current), t || (t = rt.All[0]), !t)
53166
+ if (t || (t = xe.Current), t || (t = rt.All[0]), !t)
53167
53167
  throw new Error("No Needle Engine Context found");
53168
53168
  switch (e || (e = {}), A) {
53169
53169
  case "immersive-ar":
@@ -53673,7 +53673,7 @@ let eB = uF;
53673
53673
  /** @deprecated use Application.registerWaitForInteraction instead */
53674
53674
  r(eB, "registerWaitForAllowAudio", uF.registerWaitForInteraction);
53675
53675
  function* ReA(g, A = null) {
53676
- const e = A ? A.time : Le.Current.time, t = e.time;
53676
+ const e = A ? A.time : xe.Current.time, t = e.time;
53677
53677
  for (; e.time - t < g; )
53678
53678
  yield;
53679
53679
  }
@@ -54812,15 +54812,15 @@ class beA {
54812
54812
  r(this, "tempBoundingBox", new wt());
54813
54813
  this.context = A;
54814
54814
  }
54815
- /**@deprecated use this.context.physics.engine.raycast */
54815
+ /**@deprecated use `this.context.physics.engine.raycast` {@link IPhysicsEngine.raycast} */
54816
54816
  raycastPhysicsFast(A, e = void 0, t = 1 / 0, i = !0) {
54817
54817
  var I;
54818
- return ((I = this.context.physics.engine) == null ? void 0 : I.raycast(A, e, t, i)) ?? null;
54818
+ return ((I = this.context.physics.engine) == null ? void 0 : I.raycast(A, e, { maxDistance: t, solid: i })) ?? null;
54819
54819
  }
54820
- /**@deprecated use this.context.physics.engine.raycastAndGetNormal */
54820
+ /**@deprecated use `this.context.physics.engine.raycastAndGetNormal` {@link IPhysicsEngine.raycastAndGetNormal} */
54821
54821
  raycastPhysicsFastAndGetNormal(A, e = void 0, t = 1 / 0, i = !0) {
54822
54822
  var I;
54823
- return ((I = this.context.physics.engine) == null ? void 0 : I.raycastAndGetNormal(A, e, t, i)) ?? null;
54823
+ return ((I = this.context.physics.engine) == null ? void 0 : I.raycastAndGetNormal(A, e, { maxDistance: t, solid: i })) ?? null;
54824
54824
  }
54825
54825
  /**@deprecated use this.context.physics.engine.sphereOverlap */
54826
54826
  sphereOverlapPhysics(A, e) {
@@ -54849,7 +54849,7 @@ class beA {
54849
54849
  o.matrixWorldNeedsUpdate && o.updateMatrixWorld();
54850
54850
  const n = this.tempBoundingBox.copy(s.boundingBox).applyMatrix4(o.matrixWorld);
54851
54851
  if (e.intersectsBox(n)) {
54852
- const C = xe(A), a = C.distanceTo(e.center), B = new JeA(A, a, C);
54852
+ const C = _e(A), a = C.distanceTo(e.center), B = new JeA(A, a, C);
54853
54853
  if (i.push(B), !I)
54854
54854
  return;
54855
54855
  }
@@ -56132,7 +56132,20 @@ class By extends HTMLElement {
56132
56132
  width: 100%;
56133
56133
  }
56134
56134
 
56135
-
56135
+ @media (max-width: 300px) or (max-height: 350px){
56136
+ .options {
56137
+ display: none;
56138
+ padding: 0;
56139
+ margin: 0;
56140
+ border: none;
56141
+ }
56142
+ .logo.any-options {
56143
+ border: none !important;
56144
+ padding: 0;
56145
+ margin-bottom: 0 !important;
56146
+ padding-bottom: 0 !important;
56147
+ }
56148
+ }
56136
56149
 
56137
56150
  /* dark mode */
56138
56151
  /*
@@ -56334,7 +56347,7 @@ The script will be ignored. Please make sure your component extends "Behaviour"
56334
56347
  `, g);
56335
56348
  return;
56336
56349
  }
56337
- const e = (A == null ? void 0 : A.new_scripts) ?? Le.Current.new_scripts;
56350
+ const e = (A == null ? void 0 : A.new_scripts) ?? xe.Current.new_scripts;
56338
56351
  e.includes(g) || e.push(g);
56339
56352
  }
56340
56353
  const Pt = class {
@@ -57106,8 +57119,8 @@ Memory:`, { ...this.renderer.info.memory })), this._dispatchReadyAfterFrame && (
57106
57119
  }
57107
57120
  }
57108
57121
  };
57109
- let Le = Pt;
57110
- r(Le, "_defaultTargetFramerate", { value: 60 }), r(Le, "_defaultWebglRendererParameters", {
57122
+ let xe = Pt;
57123
+ r(xe, "_defaultTargetFramerate", { value: 60 }), r(xe, "_defaultWebglRendererParameters", {
57111
57124
  antialias: !0,
57112
57125
  alpha: !1,
57113
57126
  powerPreference: "high-performance"
@@ -57219,7 +57232,7 @@ function bY(g, A, e, t) {
57219
57232
  const i = g;
57220
57233
  if (!i.guid)
57221
57234
  return console.warn("Can not instantiate: No guid", i), null;
57222
- if (A.context || (A.context = Le.Current), !A.context)
57235
+ if (A.context || (A.context = xe.Current), !A.context)
57223
57236
  return console.error("Missing network instantiate options / reference to network connection in sync instantiate"), null;
57224
57237
  const I = A ? { ...A } : null, { instance: o, seed: s } = ntA(i, A);
57225
57238
  if (o) {
@@ -57419,7 +57432,7 @@ function _Y(g, A, e, t = 0) {
57419
57432
  function Kd(g, A = null) {
57420
57433
  let e = null;
57421
57434
  A !== null && (A.x !== void 0 ? (e = new kn(), e.position = A) : e = A);
57422
- let t = Le.Current;
57435
+ let t = xe.Current;
57423
57436
  e != null && e.context && (t = e.context), Mf && t.alias && console.log("context", t.alias), e && !e.idProvider && (e.idProvider = new Hg(Date.now()));
57424
57437
  const i = [], I = {}, o = {}, s = TY(t, g, e, i, I, o);
57425
57438
  s && (ltA(I), ctA(o, I)), Mf && (Ik(g, !0), Ik(s, !0));
@@ -57653,7 +57666,7 @@ Object.getOwnPropertyDescriptor(uA.prototype, "transform") || Object.definePrope
57653
57666
  });
57654
57667
  Object.getOwnPropertyDescriptor(uA.prototype, "worldPosition") || Object.defineProperty(uA.prototype, "worldPosition", {
57655
57668
  get: function() {
57656
- return this instanceof eR ? xe(this.object) : xe(this);
57669
+ return this instanceof eR ? _e(this.object) : _e(this);
57657
57670
  },
57658
57671
  set: function(g) {
57659
57672
  vI(this, g);
@@ -57749,7 +57762,7 @@ function wtA(g) {
57749
57762
  const A = g.gameObject.userData.components.indexOf(g);
57750
57763
  g.gameObject.userData.components.splice(A, 1);
57751
57764
  }
57752
- g.__internalDisable && g.__internalDisable(), nC(g, g.context ?? Le.Current), g.destroy(), g.gameObject = null;
57765
+ g.__internalDisable && g.__internalDisable(), nC(g, g.context ?? xe.Current), g.destroy(), g.gameObject = null;
57753
57766
  }
57754
57767
  let fv = !1;
57755
57768
  function PY(g, A, e) {
@@ -57827,7 +57840,7 @@ function GR(g, A, e, t = !0) {
57827
57840
  function ytA(g, A = void 0, e = !0) {
57828
57841
  if (!g)
57829
57842
  return null;
57830
- if (!A && (A = Le.Current, !A))
57843
+ if (!A && (A = xe.Current, !A))
57831
57844
  return console.error("Can not search object without any needle context or scene!!!"), null;
57832
57845
  let t = A;
57833
57846
  if (t.isScene || (t = A == null ? void 0 : A.scene), !t)
@@ -57845,7 +57858,7 @@ function ytA(g, A = void 0, e = !0) {
57845
57858
  function StA(g, A, e = void 0) {
57846
57859
  if (!g)
57847
57860
  return A;
57848
- if (A || (A = []), A.length = 0, !e && (e = Le.Current, !e))
57861
+ if (A || (A = []), A.length = 0, !e && (e = xe.Current, !e))
57849
57862
  return console.error("Can not search object without any needle context or scene!!!"), A;
57850
57863
  "scene" in e && (e = e.scene);
57851
57864
  const t = e;
@@ -57866,7 +57879,7 @@ class aA extends uA {
57866
57879
  return GE(e);
57867
57880
  }
57868
57881
  static setActive(e, t, i = !0) {
57869
- e && (Rf(e, t), Df(e), t && i && nH(Le.Current, e));
57882
+ e && (Rf(e, t), Df(e), t && i && nH(xe.Current, e));
57870
57883
  }
57871
57884
  /** If the object is active (same as go.visible) */
57872
57885
  static isActiveSelf(e) {
@@ -57914,7 +57927,7 @@ class aA extends uA {
57914
57927
  if (!e)
57915
57928
  return;
57916
57929
  const I = e;
57917
- t = t ?? Le.Current, wR(I, t.connection, i);
57930
+ t = t ?? xe.Current, wR(I, t.connection, i);
57918
57931
  }
57919
57932
  /** Destroys a object
57920
57933
  * @param instance object to destroy
@@ -57932,7 +57945,7 @@ class aA extends uA {
57932
57945
  console.warn("Can not add object to self", e);
57933
57946
  return;
57934
57947
  }
57935
- i || (i = Le.Current), t.add(e), Rf(e, !0), Df(e), i ? aA.foreachComponent(e, (I) => {
57948
+ i || (i = xe.Current), t.add(e), Rf(e, !0), Df(e), i ? aA.foreachComponent(e, (I) => {
57936
57949
  IR(I, i), !I.__internalDidAwakeAndStart && i.new_script_start.includes(I) === !1 && i.new_script_start.push(I);
57937
57950
  }, !0) : console.warn("Missing context");
57938
57951
  }
@@ -58002,7 +58015,7 @@ class aA extends uA {
58002
58015
  return Qy(e, t);
58003
58016
  }
58004
58017
  static findObjectOfType(e, t, i = !0) {
58005
- return ytA(e, t ?? Le.Current, i);
58018
+ return ytA(e, t ?? xe.Current, i);
58006
58019
  }
58007
58020
  static findObjectsOfType(e, t) {
58008
58021
  const i = [];
@@ -58064,7 +58077,7 @@ let RA = (nn = class {
58064
58077
  }
58065
58078
  /** Use the context to get access to many Needle Engine features and use physics, timing, access the camera or scene */
58066
58079
  get context() {
58067
- return this.__context ?? Le.Current;
58080
+ return this.__context ?? xe.Current;
58068
58081
  }
58069
58082
  set context(A) {
58070
58083
  this.__context = A;
@@ -58234,7 +58247,7 @@ let RA = (nn = class {
58234
58247
  A ? this.__internalEnable() : this.__internalDisable();
58235
58248
  }
58236
58249
  get worldPosition() {
58237
- return xe(this.gameObject);
58250
+ return _e(this.gameObject);
58238
58251
  }
58239
58252
  set worldPosition(A) {
58240
58253
  vI(this.gameObject, A);
@@ -58325,8 +58338,8 @@ class dy extends RA {
58325
58338
  update() {
58326
58339
  if (!this.from || !this.to)
58327
58340
  return;
58328
- const e = xe(this.from).clone(), t = xe(this.to).clone(), i = e.distanceTo(t);
58329
- this._centerPos.copy(e), this._centerPos.add(t), this._centerPos.multiplyScalar(0.5), vI(this.gameObject, this.centered ? this._centerPos : e), this.gameObject.lookAt(xe(this.to).clone()), this.gameObject.scale.set(this.width, this.width, i);
58341
+ const e = _e(this.from).clone(), t = _e(this.to).clone(), i = e.distanceTo(t);
58342
+ this._centerPos.copy(e), this._centerPos.add(t), this._centerPos.multiplyScalar(0.5), vI(this.gameObject, this.centered ? this._centerPos : e), this.gameObject.lookAt(_e(this.to).clone()), this.gameObject.scale.set(this.width, this.width, i);
58330
58343
  }
58331
58344
  }
58332
58345
  WY([
@@ -58661,7 +58674,7 @@ var JtA = Object.defineProperty, btA = Object.getOwnPropertyDescriptor, Mn = (g,
58661
58674
  (o = g[I]) && (i = (t ? o(A, e, i) : o(i)) || i);
58662
58675
  return t && i && JtA(A, e, i), i;
58663
58676
  };
58664
- const AI = IA("debugaudio"), ra = class extends RA {
58677
+ const AI = IA("debugaudio"), aa = class extends RA {
58665
58678
  constructor() {
58666
58679
  super(...arguments);
58667
58680
  r(this, "clip", "");
@@ -58689,7 +58702,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58689
58702
  (this.playInBackground === !1 || Is()) && (this.wasPlaying = this.isPlaying, this.isPlaying && this.pause());
58690
58703
  break;
58691
58704
  case "visible":
58692
- AI && console.log("visible", this.enabled, this.playOnAwake, !this.isPlaying, ra.userInteractionRegistered, this.wasPlaying), this.enabled && this.playOnAwake && !this.isPlaying && ra.userInteractionRegistered && this.wasPlaying && this.play();
58705
+ AI && console.log("visible", this.enabled, this.playOnAwake, !this.isPlaying, aa.userInteractionRegistered, this.wasPlaying), this.enabled && this.playOnAwake && !this.isPlaying && aa.userInteractionRegistered && this.wasPlaying && this.play();
58693
58706
  break;
58694
58707
  }
58695
58708
  });
@@ -58704,7 +58717,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58704
58717
  AI && console.warn("Failed getting sound?", this.name);
58705
58718
  return;
58706
58719
  }
58707
- e.isPlaying && e.stop(), A && e.setBuffer(A), e.loop = this._loop, this.context.application.muted ? e.setVolume(0) : e.setVolume(this.volume), e.autoplay = this.shouldPlay && ra.userInteractionRegistered, this.applySpatialDistanceSettings(), e.isPlaying && e.stop(), ra.registerWaitForAllowAudio(this.__onAllowAudioCallback);
58720
+ e.isPlaying && e.stop(), A && e.setBuffer(A), e.loop = this._loop, this.context.application.muted ? e.setVolume(0) : e.setVolume(this.volume), e.autoplay = this.shouldPlay && aa.userInteractionRegistered, this.applySpatialDistanceSettings(), e.isPlaying && e.stop(), aa.registerWaitForAllowAudio(this.__onAllowAudioCallback);
58708
58721
  });
58709
58722
  r(this, "__onAllowAudioCallback", () => {
58710
58723
  this.shouldPlay && this.play();
@@ -58757,7 +58770,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58757
58770
  }
58758
58771
  get Sound() {
58759
58772
  var A;
58760
- if (!this.sound && ra.userInteractionRegistered) {
58773
+ if (!this.sound && aa.userInteractionRegistered) {
58761
58774
  let e = aA.getComponent(this.context.mainCamera, oB) ?? aA.findObjectOfType(oB, this.context);
58762
58775
  !e && this.context.mainCamera && (e = aA.addNewComponent(this.context.mainCamera, oB)), e != null && e.listener ? (this.sound = new e_(e.listener), (A = this.gameObject) == null || A.add(this.sound)) : AI && console.warn("No audio listener found in scene - can not play audio");
58763
58776
  }
@@ -58804,7 +58817,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58804
58817
  }, console.error);
58805
58818
  }
58806
58819
  onEnable() {
58807
- this.sound && this.gameObject.add(this.sound), ra.userInteractionRegistered ? this.playOnAwake && this.context.application.isVisible && this.play() : ra.registerWaitForAllowAudio(() => {
58820
+ this.sound && this.gameObject.add(this.sound), aa.userInteractionRegistered ? this.playOnAwake && this.context.application.isVisible && this.play() : aa.registerWaitForAllowAudio(() => {
58808
58821
  this.enabled && !this.destroyed && this.shouldPlay && this.onNewClip(this.clip);
58809
58822
  }), globalThis.addEventListener("visibilitychange", this.onVisibilityChanged), this.context.application.addEventListener(Tk.MuteChanged, this.onApplicationMuteChanged);
58810
58823
  }
@@ -58890,7 +58903,7 @@ Using the assigned clip instead:`, this.clip), A = this.clip);
58890
58903
  this.helper && (this.isPlaying && this.helper.update(), this.helper.visible = this.isPlaying), this._needUpdateSpatialDistanceSettings && this.applySpatialDistanceSettings(), this.sound && !this.sound.isPlaying && this.shouldPlay && !this._hasEnded && (this._hasEnded = !0, AI && console.log("Audio clip ended", this.clip), this.dispatchEvent(new CustomEvent("ended", { detail: this })));
58891
58904
  }
58892
58905
  };
58893
- let Fi = ra;
58906
+ let Fi = aa;
58894
58907
  Mn([
58895
58908
  D(URL)
58896
58909
  ], Fi.prototype, "clip", 2);
@@ -59754,7 +59767,7 @@ const zk = (iG = class extends RA {
59754
59767
  r(this, "autoMass", !0);
59755
59768
  r(this, "_mass", 0);
59756
59769
  r(this, "useGravity", !0);
59757
- r(this, "centerOfMass", new w());
59770
+ r(this, "centerOfMass", new w(0, 0, 0));
59758
59771
  r(this, "constraints", Pi.None);
59759
59772
  r(this, "isKinematic", !1);
59760
59773
  r(this, "drag", 0);
@@ -59963,7 +59976,7 @@ const zk = (iG = class extends RA {
59963
59976
  setBodyFromGameObject(A = null) {
59964
59977
  }
59965
59978
  captureVelocity() {
59966
- const A = xe(this.gameObject);
59979
+ const A = _e(this.gameObject);
59967
59980
  zk.tempPosition.copy(A);
59968
59981
  const e = A.sub(this._lastPosition);
59969
59982
  this._lastPosition.copy(zk.tempPosition), this._smoothedVelocity.lerp(e, this.context.time.deltaTime / 0.1);
@@ -59981,7 +59994,7 @@ So([
59981
59994
  D()
59982
59995
  ], _t.prototype, "useGravity", 2);
59983
59996
  So([
59984
- D()
59997
+ D(w)
59985
59998
  ], _t.prototype, "centerOfMass", 2);
59986
59999
  So([
59987
60000
  QI(),
@@ -60017,7 +60030,7 @@ So([
60017
60030
  So([
60018
60031
  QI()
60019
60032
  ], _t.prototype, "dominanceGroup", 2);
60020
- const Wn = IA("debugsync"), Xh = "STRS";
60033
+ const ra = IA("debugsync"), Xh = "STRS";
60021
60034
  LH(Xh, rC.getRootAsSyncedTransformModel);
60022
60035
  const Os = new Ud();
60023
60036
  function zY(g, A, e = !0) {
@@ -60033,7 +60046,7 @@ let Xk = 0, Ch = 0;
60033
60046
  YtA((g) => {
60034
60047
  var t;
60035
60048
  const e = ((t = g.connection.currentServerUrl) == null ? void 0 : t.includes("glitch")) ? 10 : 40;
60036
- Ch = Math.floor(Xk / e), Xk = 0, Wn && Ch > 0 && console.log("Sync Transform Fast Interval", Ch);
60049
+ Ch = Math.floor(Xk / e), Xk = 0, ra && Ch > 0 && console.log("Sync Transform Fast Interval", Ch);
60037
60050
  });
60038
60051
  class hB extends RA {
60039
60052
  constructor() {
@@ -60063,7 +60076,7 @@ class hB extends RA {
60063
60076
  }
60064
60077
  /** Request ownership of an object - you need to be connected to a room */
60065
60078
  requestOwnership() {
60066
- Wn && console.log("Request ownership"), this._model ? this._model.requestOwnership() : (this._shouldRequestOwnership = !0, this._needsUpdate = !0);
60079
+ ra && console.log("Request ownership"), this._model ? this._model.requestOwnership() : (this._shouldRequestOwnership = !0, this._needsUpdate = !0);
60067
60080
  }
60068
60081
  hasOwnership() {
60069
60082
  var e;
@@ -60075,7 +60088,7 @@ class hB extends RA {
60075
60088
  }
60076
60089
  /** @internal */
60077
60090
  awake() {
60078
- Wn && console.log("new instance", this.guid, this), this._receivedDataBefore = !1, this._targetPosition = new w(), this._targetRotation = new MA(), this.lastWorldPos = new w(), this.lastWorldRotation = new MA(), this.rb = aA.getComponentInChildren(this.gameObject, _t), this.rb && (this._wasKinematic = this.rb.isKinematic), this.receivedUpdate = !0, this._model = new UY(this.context.connection, this.guid), this.context.connection.isConnected && this.tryGetLastState(), this.joinedRoomCallback = this.tryGetLastState.bind(this), this.context.connection.beginListen(st.JoinedRoom, this.joinedRoomCallback), this.receivedDataCallback = this.onReceivedData.bind(this), this.context.connection.beginListenBinary(Xh, this.receivedDataCallback);
60091
+ ra && console.log("new instance", this.guid, this), this._receivedDataBefore = !1, this._targetPosition = new w(), this._targetRotation = new MA(), this.lastWorldPos = new w(), this.lastWorldRotation = new MA(), this.rb = aA.getComponentInChildren(this.gameObject, _t), this.rb && (this._wasKinematic = this.rb.isKinematic), this.receivedUpdate = !0, this._model = new UY(this.context.connection, this.guid), this.context.connection.isConnected && this.tryGetLastState(), this.joinedRoomCallback = this.tryGetLastState.bind(this), this.context.connection.beginListen(st.JoinedRoom, this.joinedRoomCallback), this.receivedDataCallback = this.onReceivedData.bind(this), this.context.connection.beginListenBinary(Xh, this.receivedDataCallback);
60079
60092
  }
60080
60093
  /** @internal */
60081
60094
  onDestroy() {
@@ -60088,7 +60101,7 @@ class hB extends RA {
60088
60101
  onReceivedData(e) {
60089
60102
  var t;
60090
60103
  if (!this.destroyed && typeof e.guid == "function" && e.guid() === this.guid) {
60091
- Wn && console.log("new data", this.context.connection.connectionId, this.context.time.frameCount, this.guid, e), this.receivedUpdate = !0, this._receivedFastUpdate = e.fast();
60104
+ ra && console.log("new data", this.context.connection.connectionId, this.context.time.frameCount, this.guid, e), this.receivedUpdate = !0, this._receivedFastUpdate = e.fast();
60092
60105
  const i = e.transform();
60093
60106
  if (i) {
60094
60107
  Us.markDirty(this.gameObject, !0);
@@ -60113,14 +60126,14 @@ class hB extends RA {
60113
60126
  if (!this.activeAndEnabled || !this.context.connection.isConnected)
60114
60127
  return;
60115
60128
  if (!this.context.connection.isInRoom || !this._model) {
60116
- Wn && console.log("no model or room", this.name, this.guid, this.context.connection.isInRoom);
60129
+ ra && console.log("no model or room", this.name, this.guid, this.context.connection.isInRoom);
60117
60130
  return;
60118
60131
  }
60119
60132
  this._shouldRequestOwnership && (this._shouldRequestOwnership = !1, this._model.requestOwnership());
60120
60133
  const e = this.worldPosition, t = this.worldQuaternion;
60121
60134
  if (this._model.isOwned && !this.receivedUpdate) {
60122
60135
  const o = e.distanceTo(this.lastWorldPos), s = t.angleTo(this.lastWorldRotation), n = this._model.hasOwnership || this.fastMode ? 1e-4 : 1e-3;
60123
- (o > n || s > n) && (this._model.hasOwnership ? this._needsUpdate = !0 : (Wn && console.log(this.guid, "reset because not owned but", this.gameObject.name, this.lastWorldPos), this.worldPosition = this.lastWorldPos, e.copy(this.lastWorldPos), this.worldQuaternion = this.lastWorldRotation, t.copy(this.lastWorldRotation), Us.markDirty(this.gameObject, !0), this._needsUpdate = !1));
60136
+ (o > n || s > n) && (this._model.hasOwnership ? this._needsUpdate = !0 : (ra && console.log(this.guid, "reset because not owned but", this.gameObject.name, this.lastWorldPos), this.worldPosition = this.lastWorldPos, e.copy(this.lastWorldPos), this.worldQuaternion = this.lastWorldRotation, t.copy(this.lastWorldRotation), Us.markDirty(this.gameObject, !0), this._needsUpdate = !1));
60124
60137
  }
60125
60138
  if (this._model && !this._model.hasOwnership && this._model.isOwned && this._receivedDataBefore) {
60126
60139
  const s = this._receivedFastUpdate || this.fastMode ? 0.5 : 0.3;
@@ -60135,18 +60148,14 @@ class hB extends RA {
60135
60148
  }
60136
60149
  n && Us.markDirty(this.gameObject, !0);
60137
60150
  }
60138
- if (this.receivedUpdate = !1, this.lastWorldPos.copy(e), this.lastWorldRotation.copy(t), !this._model)
60151
+ if (this.receivedUpdate = !1, this.lastWorldPos.copy(e), this.lastWorldRotation.copy(t), !this._model || !this._model || this._model.hasOwnership === void 0 || !this._model.hasOwnership)
60139
60152
  return;
60140
- if (!this._model || this._model.hasOwnership === void 0 || !this._model.hasOwnership) {
60141
- this.rb && (this.rb.isKinematic = this._model.isOwned ?? !1, this.rb.setVelocity(0, 0, 0));
60142
- return;
60143
- }
60144
- this.rb && (this._wasKinematic !== void 0 && (Wn && console.log("reset kinematic", this.rb.name, this._wasKinematic), this.rb.isKinematic = this._wasKinematic), this.gameObject.position.distanceTo(new w(0, 0, 0)) > 1e3 && (Wn && console.log("RESET", this.name), this.gameObject.position.set(0, 1, 0), this.rb.setVelocity(0, 0, 0)));
60153
+ this.rb && this._wasKinematic !== void 0 && (ra && console.log("reset kinematic", this.rb.name, this._wasKinematic), this.rb.isKinematic = this._wasKinematic);
60145
60154
  const i = 10, I = this.rb || this.fastMode;
60146
60155
  if (this._needsUpdate && (this.context.time.frameCount % i === 0 || I)) {
60147
60156
  if (Xk++, I && Ch > 0 && this.context.time.frameCount % Ch !== 0)
60148
60157
  return;
60149
- Wn && console.log("send update", this.context.connection.connectionId, this.guid, this.gameObject.name, this.gameObject.guid), this.overridePhysics && this.rb, this._needsUpdate = !1;
60158
+ ra && console.log("send update", this.context.connection.connectionId, this.guid, this.gameObject.name, this.gameObject.guid), this.overridePhysics && this.rb, this._needsUpdate = !1;
60150
60159
  const o = zY(this.guid, this, !!I);
60151
60160
  this.context.connection.sendBinary(o);
60152
60161
  }
@@ -60914,7 +60923,7 @@ const An = class extends RA {
60914
60923
  aA.addNewComponent(t, An), e.scene.add(t);
60915
60924
  }
60916
60925
  static get systems() {
60917
- const e = Le.Current;
60926
+ const e = xe.Current;
60918
60927
  return this._eventSystemMap.has(e) || this._eventSystemMap.set(e, []), this._eventSystemMap.get(e);
60919
60928
  }
60920
60929
  static get(e) {
@@ -61355,16 +61364,20 @@ class Nt extends RA {
61355
61364
  set targetLerpSpeed(e) {
61356
61365
  this.targetLerpDuration = 1 / e;
61357
61366
  }
61367
+ /** @internal */
61358
61368
  awake() {
61359
61369
  this._didStart = !1, this._didSetTarget = !1, this._startedListeningToKeyEvents = !1;
61360
61370
  }
61371
+ /** @internal */
61361
61372
  start() {
61362
61373
  this._didStart = !0, this._eventSystem = ho.get(this.context) ?? void 0, this._eventSystem && (this._afterHandleInputFn = this.afterHandleInput.bind(this), this._eventSystem.addEventListener($k.AfterHandleInput, this._afterHandleInputFn));
61363
61374
  }
61375
+ /** @internal */
61364
61376
  onDestroy() {
61365
61377
  var e, t;
61366
61378
  (e = this._controls) == null || e.dispose(), (t = this._eventSystem) == null || t.removeEventListener($k.AfterHandleInput, this._afterHandleInputFn);
61367
61379
  }
61380
+ /** @internal */
61368
61381
  onEnable() {
61369
61382
  this._enableTime = this.context.time.time;
61370
61383
  const e = aA.getComponent(this.gameObject, Xt);
@@ -61377,6 +61390,7 @@ class Nt extends RA {
61377
61390
  }
61378
61391
  this._controls && (Up && (this.enablePan = !0, this.enableZoom = !0, this.middleClickToFocus = !0, Is() && (this.doubleClickToFocus = !0)), this._controls.addEventListener("start", this.onControlsChangeStarted), (t == null ? void 0 : t.type) === "PerspectiveCamera" ? Up || (this._controls.minDistance = this.minZoom, this._controls.maxDistance = this.maxZoom) : Up || (this._controls.minZoom = this.minZoom, this._controls.maxZoom = this.maxZoom), this._startedListeningToKeyEvents || (this._startedListeningToKeyEvents = !0, this._controls.listenToKeyEvents(window.document.body))), this._syncedTransform = aA.getComponent(this.gameObject, hB) ?? void 0;
61379
61392
  }
61393
+ /** @internal */
61380
61394
  onDisable() {
61381
61395
  var e;
61382
61396
  (e = this._camera) != null && e.cam && mv(this._camera.cam, this, !1), this._controls && (this._controls.enabled = !1, this._controls.autoRotate = !1, this._controls.removeEventListener("start", this.onControlsChangeStarted));
@@ -61384,11 +61398,16 @@ class Nt extends RA {
61384
61398
  afterHandleInput(e) {
61385
61399
  e.detail.args.pointerId === 0 && (e.detail.args.isDown ? this._controls && this._eventSystem && (this._shouldDisable = this._eventSystem.hasActiveUI) : (!e.detail.args.isPressed || e.detail.args.isUp) && (this._shouldDisable = !1));
61386
61400
  }
61401
+ /** @internal */
61387
61402
  onBeforeRender() {
61388
61403
  var t, i;
61389
- if (!this._controls || this._cameraObject !== this.context.mainCamera)
61404
+ if (!this._controls)
61405
+ return;
61406
+ if (this._cameraObject !== this.context.mainCamera) {
61407
+ this._controls.enabled = !1;
61390
61408
  return;
61391
- this.__handleSetTargetWhenBecomingActiveTheFirstTime(), (this.context.input.getPointerDown(1) || this.context.input.getPointerDown(2) || this.context.input.mouseWheelChanged || this.context.input.getPointerPressed(0) && ((t = this.context.input.getPointerPositionDelta(0)) != null && t.length()) || 0 > 0.1) && (this._inputs += 1), this._inputs > 0 && this.allowInterrupt && (this.enableRotate && (this.autoRotate = !1), this._cameraLerpActive = !1, this._lookTargetLerpActive = !1), this._inputs = 0;
61409
+ }
61410
+ this._controls.enabled = !0, this.__handleSetTargetWhenBecomingActiveTheFirstTime(), (this.context.input.getPointerDown(1) || this.context.input.getPointerDown(2) || this.context.input.mouseWheelChanged || this.context.input.getPointerPressed(0) && ((t = this.context.input.getPointerPositionDelta(0)) != null && t.length()) || 0 > 0.1) && (this._inputs += 1), this._inputs > 0 && this.allowInterrupt && (this.enableRotate && (this.autoRotate = !1), this._cameraLerpActive = !1, this._lookTargetLerpActive = !1), this._inputs = 0;
61392
61411
  let e = this.middleClickToFocus && this.context.input.getPointerClicked(1);
61393
61412
  if (e || (e = this.doubleClickToFocus && this.context.input.getPointerDoubleClicked(0) && this.context.time.time - this._enableTime > 0.3), e && this.setTargetFromRaycast(), this._lookTargetLerpActive || this._cameraLerpActive) {
61394
61413
  if (this._cameraLerpActive && this._cameraObject)
@@ -61420,7 +61439,7 @@ class Nt extends RA {
61420
61439
  const e = aA.getComponent(this.gameObject, Xt);
61421
61440
  if (e && !this.setLookTargetFromConstraint()) {
61422
61441
  this.debugLog && console.log("NO TARGET");
61423
- const i = xe(e.cam).length(), I = new w(0, 0, -i).applyMatrix4(e.cam.matrixWorld);
61442
+ const i = _e(e.cam).length(), I = new w(0, 0, -i).applyMatrix4(e.cam.matrixWorld);
61424
61443
  this.setLookTargetPosition(I, !0);
61425
61444
  }
61426
61445
  if (!this.autoFit && !this.setLookTargetFromConstraint()) {
@@ -61438,15 +61457,16 @@ class Nt extends RA {
61438
61457
  setCameraAndLookTarget(e) {
61439
61458
  if (!e || !(e instanceof uA))
61440
61459
  return;
61441
- const t = xe(e), i = aT(e);
61460
+ const t = _e(e), i = aT(e);
61442
61461
  this.setTargetFromRaycast(new $I(t, i)), this.setCameraTargetPosition(t);
61443
61462
  }
61444
61463
  /** Moves the camera to position smoothly.
61445
61464
  * @param position The position in local space of the controllerObject to move the camera to. If null the camera will stop lerping to the target.
61465
+ * @param immediateOrDuration If true the camera will move immediately to the new position, otherwise it will lerp. If a number is passed in it will be used as the duration of the lerp.
61446
61466
  */
61447
61467
  setCameraTargetPosition(e, t = !1) {
61448
61468
  var i, I;
61449
- e && (e instanceof uA && (e = xe(e)), this._cameraEndPosition || (this._cameraEndPosition = new w()), this._cameraEndPosition.copy(e), t === !0 ? (this._cameraLerpActive = !1, (i = this.controllerObject) == null || i.position.copy(this._cameraEndPosition)) : this._cameraObject && (this._cameraLerpActive = !0, this._cameraLerp01 = 0, this._cameraStartPosition.copy((I = this._cameraObject) == null ? void 0 : I.position), typeof t == "number" ? this._cameraLerpDuration = t : this._cameraLerpDuration = this.targetLerpDuration));
61469
+ e && (e instanceof uA && (e = _e(e)), this._cameraEndPosition || (this._cameraEndPosition = new w()), this._cameraEndPosition.copy(e), t === !0 ? (this._cameraLerpActive = !1, (i = this.controllerObject) == null || i.position.copy(this._cameraEndPosition)) : this._cameraObject && (this._cameraLerpActive = !0, this._cameraLerp01 = 0, this._cameraStartPosition.copy((I = this._cameraObject) == null ? void 0 : I.position), typeof t == "number" ? this._cameraLerpDuration = t : this._cameraLerpDuration = this.targetLerpDuration));
61450
61470
  }
61451
61471
  /** True while the camera position is being lerped */
61452
61472
  get cameraLerpActive() {
@@ -61456,9 +61476,12 @@ class Nt extends RA {
61456
61476
  stopCameraLerp() {
61457
61477
  this._cameraLerpActive = !1;
61458
61478
  }
61459
- /** Moves the camera look-at target to a position smoothly. */
61479
+ /** Moves the camera look-at target to a position smoothly.
61480
+ * @param position The position in world space to move the camera target to. If null the camera will stop lerping to the target.
61481
+ * @param immediateOrDuration If true the camera target will move immediately to the new position, otherwise it will lerp. If a number is passed in it will be used as the duration of the lerp.
61482
+ */
61460
61483
  setLookTargetPosition(e = null, t = !1) {
61461
- this._controls && e && (e instanceof uA && (e = xe(e)), this._lookTargetEndPosition.copy(e), t === !0 ? this._controls.target.copy(this._lookTargetEndPosition) : (this._lookTargetLerpActive = !0, this._lookTargetLerp01 = 0, this._lookTargetStartPosition.copy(this._controls.target), typeof t == "number" ? this._lookTargetLerpDuration = t : this._lookTargetLerpDuration = this.targetLerpDuration));
61484
+ this._controls && e && (e instanceof uA && (e = _e(e)), this._lookTargetEndPosition.copy(e), t === !0 ? this._controls.target.copy(this._lookTargetEndPosition) : (this._lookTargetLerpActive = !0, this._lookTargetLerp01 = 0, this._lookTargetStartPosition.copy(this._controls.target), typeof t == "number" ? this._lookTargetLerpDuration = t : this._lookTargetLerpDuration = this.targetLerpDuration));
61462
61485
  }
61463
61486
  /** True while the camera look target is being lerped */
61464
61487
  get lookTargetLerpActive() {
@@ -61468,7 +61491,10 @@ class Nt extends RA {
61468
61491
  stopLookTargetLerp() {
61469
61492
  this._lookTargetLerpActive = !1;
61470
61493
  }
61471
- /** Sets the look at target from an assigned lookAtConstraint source by index */
61494
+ /** Sets the look at target from an assigned lookAtConstraint source by index
61495
+ * @param index The index of the source to use
61496
+ * @param t The interpolation factor between the current look at target and the new target
61497
+ */
61472
61498
  setLookTargetFromConstraint(e = 0, t = 1) {
61473
61499
  var I;
61474
61500
  if (!this._controls)
@@ -61489,22 +61515,18 @@ class Nt extends RA {
61489
61515
  this._controls && (t >= 1 ? this._controls.target.copy(e) : this._controls.target.lerp(e, t));
61490
61516
  }
61491
61517
  setTargetFromRaycast(e) {
61492
- var i, I;
61493
61518
  if (!this.controls)
61494
61519
  return;
61495
61520
  const t = e ? this.context.physics.raycastFromRay(e) : this.context.physics.raycast();
61496
- for (const o of t)
61497
- if (o.distance > 0 && aA.isActiveInHierarchy(o.object)) {
61498
- const s = FR(o.object);
61499
- if (s) {
61500
- const n = s.canvas;
61501
- if (n != null && n.screenspace)
61521
+ for (const i of t)
61522
+ if (i.distance > 0 && aA.isActiveInHierarchy(i.object)) {
61523
+ const I = FR(i.object);
61524
+ if (I) {
61525
+ const o = I.canvas;
61526
+ if (o != null && o.screenspace)
61502
61527
  break;
61503
61528
  }
61504
- if (this.setLookTargetPosition(o.point), this.context.mainCamera) {
61505
- const C = xe(this.context.mainCamera).clone().sub(this.controls.target).add(this._lookTargetEndPosition);
61506
- (I = (i = this._cameraObject) == null ? void 0 : i.parent) == null || I.worldToLocal(C), this.setCameraTargetPosition(C);
61507
- }
61529
+ this.setLookTargetPosition(i.point);
61508
61530
  break;
61509
61531
  }
61510
61532
  }
@@ -61568,7 +61590,7 @@ class Nt extends RA {
61568
61590
  il && console.log("Fit camera to objects", d, l, "distance", h), o.maxDistance = h * 10, o.minDistance = h * 0.01;
61569
61591
  const p = 0.05, u = n.clone();
61570
61592
  u.y -= s.y * p, this.setLookTargetPosition(u, i), this.autoTarget = !1, I.near = h / 1e3, I.far = h * 100, I.updateMatrixWorld(), I.updateProjectionMatrix();
61571
- const f = xe(I), k = n.clone();
61593
+ const f = _e(I), k = n.clone();
61572
61594
  if (k.sub(f), k.y = 0, k.normalize(), k.multiplyScalar(h), k.y += -p * 4 * s.y, I.parent) {
61573
61595
  const G = I.parent.worldToLocal(n.clone().sub(k));
61574
61596
  this.setCameraTargetPosition(G, i);
@@ -61784,7 +61806,7 @@ const Rl = (gf = class extends RA {
61784
61806
  screenPointToRay(A, e, t) {
61785
61807
  const i = this.cam, I = Rl._origin;
61786
61808
  I.set(A, e, -1), this.context.input.convertScreenspaceToRaycastSpace(I), Mv && console.log("screenPointToRay", A.toFixed(2), e.toFixed(2), "now:", I.x.toFixed(2), I.y.toFixed(2), "isInXR:" + this.context.isInXR), I.z = -1, I.unproject(i);
61787
- const o = Rl._direction.set(I.x, I.y, I.z), s = xe(i);
61809
+ const o = Rl._direction.set(I.x, I.y, I.z), s = _e(i);
61788
61810
  return o.sub(s), o.normalize(), t ? (t.set(s, o), t) : new $I(s.clone(), o.clone());
61789
61811
  }
61790
61812
  getFrustum() {
@@ -63037,7 +63059,7 @@ class RQA {
63037
63059
  r(this, "_context");
63038
63060
  }
63039
63061
  get context() {
63040
- return this._context ?? Le.Current;
63062
+ return this._context ?? xe.Current;
63041
63063
  }
63042
63064
  get isStateMachineBehaviour() {
63043
63065
  return !0;
@@ -64281,7 +64303,7 @@ var RiA = Object.defineProperty, NiA = Object.getOwnPropertyDescriptor, A2 = (g,
64281
64303
  return t && i && RiA(A, e, i), i;
64282
64304
  };
64283
64305
  const Nv = IA("debugpost");
64284
- class _e {
64306
+ class Le {
64285
64307
  constructor(A) {
64286
64308
  r(this, "_active", !0);
64287
64309
  r(this, "_value");
@@ -64336,10 +64358,10 @@ class _e {
64336
64358
  }
64337
64359
  A2([
64338
64360
  D()
64339
- ], _e.prototype, "overrideState", 1);
64361
+ ], Le.prototype, "overrideState", 1);
64340
64362
  A2([
64341
64363
  D()
64342
- ], _e.prototype, "value", 1);
64364
+ ], Le.prototype, "value", 1);
64343
64365
  var FiA = Object.defineProperty, KiA = Object.getOwnPropertyDescriptor, JiA = (g, A, e, t) => {
64344
64366
  for (var i = t > 1 ? void 0 : t ? KiA(A, e) : A, I = g.length - 1, o; I >= 0; I--)
64345
64367
  (o = g[I]) && (i = (t ? o(A, e, i) : o(i)) || i);
@@ -64357,7 +64379,7 @@ class xI extends RA {
64357
64379
  this.ensureVolumeParameters();
64358
64380
  for (const t of Object.keys(e)) {
64359
64381
  const i = e[t], I = this[t];
64360
- I instanceof _e && (I.value = i);
64382
+ I instanceof Le && (I.value = i);
64361
64383
  }
64362
64384
  }
64363
64385
  }
@@ -64385,7 +64407,7 @@ class xI extends RA {
64385
64407
  const e = Object.keys(this);
64386
64408
  for (const t of e) {
64387
64409
  const i = this[t];
64388
- i instanceof _e && i.__init();
64410
+ i instanceof Le && i.__init();
64389
64411
  }
64390
64412
  }
64391
64413
  onAfterDeserialize(e, t) {
@@ -64393,7 +64415,7 @@ class xI extends RA {
64393
64415
  const i = this.$serializedTypes;
64394
64416
  if (i) {
64395
64417
  for (const I of Object.keys(i))
64396
- if (i[I] === _e) {
64418
+ if (i[I] === Le) {
64397
64419
  const s = e[I];
64398
64420
  if (s !== void 0) {
64399
64421
  const n = this[I];
@@ -64407,7 +64429,7 @@ class xI extends RA {
64407
64429
  // since these handle that already.
64408
64430
  onEditorModification(e) {
64409
64431
  const t = e.propertyName;
64410
- if (this[t] instanceof _e) {
64432
+ if (this[t] instanceof Le) {
64411
64433
  const i = e.value;
64412
64434
  return this[t].value = i, !0;
64413
64435
  }
@@ -64420,7 +64442,7 @@ class xI extends RA {
64420
64442
  const e = this.$serializedTypes;
64421
64443
  if (e)
64422
64444
  for (const t of Object.keys(e))
64423
- e[t] === _e && (this[t] || (this[t] = new _e()));
64445
+ e[t] === Le && (this[t] || (this[t] = new Le()));
64424
64446
  }
64425
64447
  }
64426
64448
  JiA([
@@ -64475,7 +64497,7 @@ class my extends xI {
64475
64497
  }
64476
64498
  }
64477
64499
  YiA([
64478
- D(_e)
64500
+ D(Le)
64479
64501
  ], my.prototype, "preset", 2);
64480
64502
  Ls("Antialiasing", my);
64481
64503
  const OiA = IA("debugusdz");
@@ -65099,7 +65121,7 @@ class fC {
65099
65121
  if (e) {
65100
65122
  for (const i of this.Pois)
65101
65123
  if (i.obj === e) {
65102
- this.Pois.splice(this.Pois.indexOf(i), 1), this.LastChangeTime = (A == null ? void 0 : A.time.time) ?? ((t = Le.Current) == null ? void 0 : t.time.time);
65124
+ this.Pois.splice(this.Pois.indexOf(i), 1), this.LastChangeTime = (A == null ? void 0 : A.time.time) ?? ((t = xe.Current) == null ? void 0 : t.time.time);
65103
65125
  return;
65104
65126
  }
65105
65127
  }
@@ -65146,7 +65168,7 @@ class JD extends RA {
65146
65168
  update() {
65147
65169
  var t;
65148
65170
  if ((!this.context.connection.isConnected || (t = this._model) != null && t.hasOwnership) && (fC.LastChangeTime !== this._lastPoiChangedTime && (this._lastPoiChangedTime = fC.LastChangeTime, this._lookDuration = 0), this.selectTarget(), this._currentTargetObject && this.context.time.frameCount % 10 === 0 && this.target)) {
65149
- const i = xe(this._currentTargetObject);
65171
+ const i = _e(this._currentTargetObject);
65150
65172
  vI(this.target, i), this.context.connection.isConnected && this.avatar && (this.context.connection.send("avatar-look-target-changed", this._targetModel), this._targetModel.guid = this.avatar.guid, this._targetModel.position.copy(i));
65151
65173
  }
65152
65174
  }
@@ -65726,9 +65748,9 @@ const o2 = (IG = class extends RA {
65726
65748
  if (A && this.head) {
65727
65749
  const e = this.eyes;
65728
65750
  if (e) {
65729
- const t = xe(A);
65751
+ const t = _e(A);
65730
65752
  this.currentTargetPoint.lerp(t, this.context.time.deltaTime / 0.1);
65731
- const i = xe(this.head), I = this.vec.copy(this.currentTargetPoint).sub(i).normalize();
65753
+ const i = _e(this.head), I = this.vec.copy(this.currentTargetPoint).sub(i).normalize();
65732
65754
  if (I.length() < 0.1)
65733
65755
  return;
65734
65756
  const o = o2.forward;
@@ -65905,11 +65927,11 @@ class n2 extends RA {
65905
65927
  update() {
65906
65928
  if (!this.from || !this.to || !this.hint)
65907
65929
  return;
65908
- const e = xe(this.to).clone(), t = xe(this.from).clone(), i = e.distanceTo(t), I = e.clone();
65930
+ const e = _e(this.to).clone(), t = _e(this.from).clone(), i = e.distanceTo(t), I = e.clone();
65909
65931
  I.sub(t);
65910
65932
  const o = t.clone();
65911
65933
  o.add(e), o.multiplyScalar(0.5);
65912
- const s = xe(this.hint).clone();
65934
+ const s = _e(this.hint).clone();
65913
65935
  s.sub(o);
65914
65936
  const n = new w();
65915
65937
  n.crossVectors(s, I), n.crossVectors(I, n), n.normalize();
@@ -66047,13 +66069,13 @@ const C2 = (oG = class extends xI {
66047
66069
  r(oG, "useSelectiveBloom", !1), oG);
66048
66070
  let ic = C2;
66049
66071
  HR([
66050
- D(_e)
66072
+ D(Le)
66051
66073
  ], ic.prototype, "threshold", 2);
66052
66074
  HR([
66053
- D(_e)
66075
+ D(Le)
66054
66076
  ], ic.prototype, "intensity", 2);
66055
66077
  HR([
66056
- D(_e)
66078
+ D(Le)
66057
66079
  ], ic.prototype, "scatter", 2);
66058
66080
  Ls("Bloom", ic);
66059
66081
  const ol = "NEEDLE_progressive", eI = IA("debugprogressive"), pm = Symbol("needle-progressive-texture"), IE = /* @__PURE__ */ new Map();
@@ -66474,23 +66496,31 @@ class ss extends RA {
66474
66496
  r(this, "sharedMaterial");
66475
66497
  r(this, "membership", [0]);
66476
66498
  r(this, "filter");
66499
+ /**
66500
+ * Apply the collider properties to the physics engine.
66501
+ */
66477
66502
  r(this, "updateProperties", () => {
66478
66503
  var e;
66479
66504
  (e = this.context.physics.engine) == null || e.updateProperties(this);
66480
66505
  });
66481
66506
  }
66507
+ /** @internal */
66482
66508
  get isCollider() {
66483
66509
  return !0;
66484
66510
  }
66511
+ /** @internal */
66485
66512
  awake() {
66486
66513
  super.awake(), this.attachedRigidbody || (this.attachedRigidbody = this.gameObject.getComponentInParent(_t));
66487
66514
  }
66515
+ /** @internal */
66488
66516
  start() {
66489
66517
  this.attachedRigidbody || (this.attachedRigidbody = this.gameObject.getComponentInParent(_t));
66490
66518
  }
66519
+ /** @internal */
66491
66520
  onEnable() {
66492
66521
  this.attachedRigidbody || (this.attachedRigidbody = this.gameObject.getComponentInParent(_t));
66493
66522
  }
66523
+ /** @internal */
66494
66524
  onDisable() {
66495
66525
  var e;
66496
66526
  (e = this.context.physics.engine) == null || e.removeBody(this);
@@ -66688,7 +66718,7 @@ const KgA = IA("gizmos"), JgA = IA("debugboxhelper"), xo = class extends RA {
66688
66718
  for (let o = 0; o < e.children.length; o++)
66689
66719
  e.children[o].type === "Mesh" && xo.testBox.expandByObject(e);
66690
66720
  } else {
66691
- const o = xe(e, xo._position), s = oi(e, xo._size);
66721
+ const o = _e(e, xo._position), s = oi(e, xo._size);
66692
66722
  t !== void 0 && s.multiplyScalar(t), xo.testBox.setFromCenterAndSize(o, s);
66693
66723
  }
66694
66724
  this.updateBox();
@@ -66702,7 +66732,7 @@ const KgA = IA("gizmos"), JgA = IA("debugboxhelper"), xo = class extends RA {
66702
66732
  if (this.box || (this.box = new wt()), e || this.context.time.frameCount != this._lastMatrixUpdateFrame) {
66703
66733
  const t = this._lastMatrixUpdateFrame < 0;
66704
66734
  this._lastMatrixUpdateFrame = this.context.time.frameCount;
66705
- const i = t, I = xe(this.gameObject, xo._position, i), o = oi(this.gameObject, xo._size);
66735
+ const i = t, I = _e(this.gameObject, xo._position, i), o = oi(this.gameObject, xo._size);
66706
66736
  this.box.setFromCenterAndSize(I, o);
66707
66737
  }
66708
66738
  return this.box;
@@ -67928,7 +67958,7 @@ class sc extends RA {
67928
67958
  *moveToTarget() {
67929
67959
  if (!this.target || !this.object)
67930
67960
  return;
67931
- const e = xe(this.object).clone(), t = xe(this.target).clone(), i = bt(this.object).clone(), I = bt(this.target).clone(), o = oi(this.object).clone(), s = oi(this.target).clone(), n = e.distanceTo(t), C = i.angleTo(I), a = o.distanceTo(s);
67961
+ const e = _e(this.object).clone(), t = _e(this.target).clone(), i = bt(this.object).clone(), I = bt(this.target).clone(), o = oi(this.object).clone(), s = oi(this.target).clone(), n = e.distanceTo(t), C = i.angleTo(I), a = o.distanceTo(s);
67932
67962
  if (n < 0.01 && C < 0.01 && a < 0.01) {
67933
67963
  vI(this.object, t), Ns(this.object, I), QD(this.object, s), this.coroutine = null;
67934
67964
  return;
@@ -68607,7 +68637,7 @@ class Xa extends RA {
68607
68637
  if (this.controller) {
68608
68638
  const l = (E = this.controller) == null ? void 0 : E.rigidbody.getVelocity().y;
68609
68639
  if (l < -1) {
68610
- this._raycastOptions.ray || (this._raycastOptions.ray = new $I()), this._raycastOptions.ray.origin.copy(xe(this.gameObject)), this._raycastOptions.ray.direction.set(0, -1, 0);
68640
+ this._raycastOptions.ray || (this._raycastOptions.ray = new $I()), this._raycastOptions.ray.origin.copy(_e(this.gameObject)), this._raycastOptions.ray.direction.set(0, -1, 0);
68611
68641
  const h = this.layer;
68612
68642
  this.gameObject.layers.disableAll(), this.gameObject.layers.set(2);
68613
68643
  const p = this.context.physics.raycast(this._raycastOptions);
@@ -68659,7 +68689,7 @@ class Jy extends xI {
68659
68689
  }
68660
68690
  }
68661
68691
  oIA([
68662
- D(_e)
68692
+ D(Le)
68663
68693
  ], Jy.prototype, "intensity", 2);
68664
68694
  Ls("ChromaticAberration", Jy);
68665
68695
  const zd = new ue();
@@ -70184,14 +70214,14 @@ class by extends RA {
70184
70214
  vp.set(o, C);
70185
70215
  const a = Object.keys(n);
70186
70216
  for (const B of a)
70187
- n[B] instanceof _e && C.push(B);
70217
+ n[B] instanceof Le && C.push(B);
70188
70218
  }
70189
70219
  if (vp.has(o)) {
70190
70220
  const C = s.toLowerCase(), a = vp.get(o);
70191
70221
  for (const B of a)
70192
70222
  if (B.toLowerCase() === C) {
70193
70223
  const Q = n[B];
70194
- Q instanceof _e && (I.length === 4 && I[3] === "active" ? (Q.overrideState = e.value, this.scheduleRecreate()) : Q && Q.value !== void 0 && (Q.value = e.value));
70224
+ Q instanceof Le && (I.length === 4 && I[3] === "active" ? (Q.overrideState = e.value, this.scheduleRecreate()) : Q && Q.value !== void 0 && (Q.value = e.value));
70195
70225
  return;
70196
70226
  }
70197
70227
  }
@@ -70292,16 +70322,16 @@ class FB extends xI {
70292
70322
  // }
70293
70323
  }
70294
70324
  vy([
70295
- D(_e)
70325
+ D(Le)
70296
70326
  ], FB.prototype, "postExposure", 2);
70297
70327
  vy([
70298
- D(_e)
70328
+ D(Le)
70299
70329
  ], FB.prototype, "contrast", 2);
70300
70330
  vy([
70301
- D(_e)
70331
+ D(Le)
70302
70332
  ], FB.prototype, "hueShift", 2);
70303
70333
  vy([
70304
- D(_e)
70334
+ D(Le)
70305
70335
  ], FB.prototype, "saturation", 2);
70306
70336
  Ls("ColorAdjustments", FB);
70307
70337
  const dIA = (Math.sqrt(5) - 1) / 4, Gg = (5 - Math.sqrt(5)) / 20, qp = (g) => Math.floor(g) | 0, xp = /* @__PURE__ */ new Float64Array([
@@ -70980,8 +71010,6 @@ class tM extends RA {
70980
71010
  r(this, "_hasReflection", !1);
70981
71011
  r(this, "_ambientLightObj");
70982
71012
  r(this, "_hemisphereLightObj");
70983
- // used when skybox is used to support ambient intensity for "non custom shaders"
70984
- r(this, "_lightProbeObj");
70985
71013
  }
70986
71014
  awake() {
70987
71015
  var t;
@@ -71016,7 +71044,7 @@ class tM extends RA {
71016
71044
  const e = this.calculateIntensityFactor(this.ambientLight);
71017
71045
  this._ambientLightObj = new QU(this.ambientLight, this.ambientIntensity * e), FQ && console.log("Created ambient light", this.sourceId, this._ambientLightObj, this.ambientIntensity, e);
71018
71046
  }
71019
- this._ambientLightObj && this.gameObject.add(this._ambientLightObj), this._lightProbeObj && this._lightProbeObj.removeFromParent();
71047
+ this._ambientLightObj && this.gameObject.add(this._ambientLightObj);
71020
71048
  } else if (this.ambientMode === nh.Trilight) {
71021
71049
  if (this.ambientTrilight) {
71022
71050
  const e = this.ambientTrilight[0], t = this.ambientTrilight[this.ambientTrilight.length - 1], i = this.calculateIntensityFactor(t);
@@ -71027,7 +71055,7 @@ class tM extends RA {
71027
71055
  this.sourceId && this.context.sceneLighting.internalEnableReflection(this.sourceId);
71028
71056
  }
71029
71057
  onDisable() {
71030
- FQ && console.warn("💡⚫ <<< Disable lighting:", this.sourceId, this), this._lightProbeObj && this._lightProbeObj.removeFromParent(), this._ambientLightObj && this._ambientLightObj.removeFromParent(), this._hemisphereLightObj && this._hemisphereLightObj.removeFromParent(), this.sourceId && this.context.sceneLighting.internalDisableReflection(this.sourceId);
71058
+ FQ && console.warn("💡⚫ <<< Disable lighting:", this.sourceId, this), this._ambientLightObj && this._ambientLightObj.removeFromParent(), this._hemisphereLightObj && this._hemisphereLightObj.removeFromParent(), this.sourceId && this.context.sceneLighting.internalDisableReflection(this.sourceId);
71031
71059
  }
71032
71060
  }
71033
71061
  var G2 = /* @__PURE__ */ ((g) => (g[g.INT = 5124] = "INT", g[g.FLOAT = 5126] = "FLOAT", g[g.FLOAT_VEC2 = 35664] = "FLOAT_VEC2", g[g.FLOAT_VEC3 = 35665] = "FLOAT_VEC3", g[g.FLOAT_VEC4 = 35666] = "FLOAT_VEC4", g[g.INT_VEC2 = 35667] = "INT_VEC2", g[g.INT_VEC3 = 35668] = "INT_VEC3", g[g.INT_VEC4 = 35669] = "INT_VEC4", g[g.BOOL = 35670] = "BOOL", g[g.BOOL_VEC2 = 35671] = "BOOL_VEC2", g[g.BOOL_VEC3 = 35672] = "BOOL_VEC3", g[g.BOOL_VEC4 = 35673] = "BOOL_VEC4", g[g.FLOAT_MAT2 = 35674] = "FLOAT_MAT2", g[g.FLOAT_MAT3 = 35675] = "FLOAT_MAT3", g[g.FLOAT_MAT4 = 35676] = "FLOAT_MAT4", g[g.SAMPLER_2D = 35678] = "SAMPLER_2D", g[g.SAMPLER_3D = 35680] = "SAMPLER_3D", g[g.SAMPLER_CUBE = 35681] = "SAMPLER_CUBE", g[g.UNKNOWN = 0] = "UNKNOWN", g))(G2 || {});
@@ -71080,7 +71108,7 @@ const ii = class extends Dd {
71080
71108
  r(this, "_viewProjectionName", "hlslcc_mtx4x4unity_MatrixVP");
71081
71109
  r(this, "_viewMatrixName", "hlslcc_mtx4x4unity_MatrixV");
71082
71110
  r(this, "_rendererData", new vIA());
71083
- this.identifier = e, la && console.log(this), this.type = "NEEDLE_CUSTOM_SHADER", this.uniforms[this._objToWorldName] || (this.uniforms[this._objToWorldName] = { value: [] }), this.uniforms[this._worldToObjectName] || (this.uniforms[this._worldToObjectName] = { value: [] }), this.uniforms[this._viewProjectionName] || (this.uniforms[this._viewProjectionName] = { value: [] }), this.uniforms[this._sphericalHarmonicsName], (this.depthTextureUniform || this.opaqueTextureUniform) && Le.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback);
71111
+ this.identifier = e, la && console.log(this), this.type = "NEEDLE_CUSTOM_SHADER", this.uniforms[this._objToWorldName] || (this.uniforms[this._objToWorldName] = { value: [] }), this.uniforms[this._worldToObjectName] || (this.uniforms[this._worldToObjectName] = { value: [] }), this.uniforms[this._viewProjectionName] || (this.uniforms[this._viewProjectionName] = { value: [] }), this.uniforms[this._sphericalHarmonicsName], (this.depthTextureUniform || this.opaqueTextureUniform) && xe.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback);
71084
71112
  }
71085
71113
  clone() {
71086
71114
  const e = super.clone();
@@ -71088,8 +71116,8 @@ const ii = class extends Dd {
71088
71116
  }
71089
71117
  dispose() {
71090
71118
  super.dispose();
71091
- const e = Le.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);
71092
- e >= 0 && Le.Current.pre_render_callbacks.splice(e, 1);
71119
+ const e = xe.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);
71120
+ e >= 0 && xe.Current.pre_render_callbacks.splice(e, 1);
71093
71121
  }
71094
71122
  get depthTextureUniform() {
71095
71123
  if (this.uniforms)
@@ -71100,13 +71128,13 @@ const ii = class extends Dd {
71100
71128
  return this.uniforms._CameraOpaqueTexture;
71101
71129
  }
71102
71130
  onBeforeRenderScene() {
71103
- this.opaqueTextureUniform && Le.Current.setRequireColor(!0), this.depthTextureUniform && Le.Current.setRequireDepth(!0);
71131
+ this.opaqueTextureUniform && xe.Current.setRequireColor(!0), this.depthTextureUniform && xe.Current.setRequireDepth(!0);
71104
71132
  }
71105
71133
  onBeforeRender(e, t, i, I, o, s) {
71106
71134
  I.attributes.tangent || I.computeTangents(), this.onUpdateUniforms(i, o);
71107
71135
  }
71108
71136
  onUpdateUniforms(e, t) {
71109
- const i = Le.Current;
71137
+ const i = xe.Current;
71110
71138
  if (e && (ii.viewProjection && this.uniforms[this._viewProjectionName] && (ii.viewProjection.copy(e.projectionMatrix).multiply(e.matrixWorldInverse), mD(ii.viewProjection, ii._viewProjectionValues)), ii.viewMatrix && this.uniforms[this._viewMatrixName] && (ii.viewMatrix.copy(e.matrixWorldInverse), mD(ii.viewMatrix, ii._viewMatrixValues)), this.uniforms[ii._worldSpaceCameraPosName] && ii._worldSpaceCameraPos.setFromMatrixPosition(e.matrixWorld)), this.uniforms._TimeParameters && (this.uniforms._TimeParameters.value = i.sceneLighting.timeVec4), this.uniforms._Time) {
71111
71139
  const n = this.uniforms._Time.value;
71112
71140
  n.x = i.sceneLighting.timeVec4.x / 20, n.y = i.sceneLighting.timeVec4.x, n.z = i.sceneLighting.timeVec4.x * 2, n.w = i.sceneLighting.timeVec4.x * 3;
@@ -71125,7 +71153,7 @@ const ii = class extends Dd {
71125
71153
  }
71126
71154
  const I = i.mainLight;
71127
71155
  if (I) {
71128
- const n = xe(I.gameObject, ii._mainLightPosition);
71156
+ const n = _e(I.gameObject, ii._mainLightPosition);
71129
71157
  this.uniforms._MainLightPosition = { value: n.normalize() }, ii._mainLightColor.set(I.color.r, I.color.g, I.color.b, 0), this.uniforms._MainLightColor = { value: ii._mainLightColor };
71130
71158
  const C = I.intensity;
71131
71159
  ii._lightData.z = C, this.uniforms.unity_LightData = { value: ii._lightData };
@@ -72270,7 +72298,7 @@ Texture LODs available? ${this.hasTextureLODs ? "YES" : "NO"}`);
72270
72298
  }
72271
72299
  const E = C.geometry.boundingBox;
72272
72300
  if (E && this.context.mainCamera instanceof He) {
72273
- if (C.geometry.attributes.color && C.geometry.attributes.color.count < 100 && C.geometry.boundingSphere && (this._sphere.copy(C.geometry.boundingSphere), this._sphere.applyMatrix4(C.matrixWorld), this._sphere.containsPoint(xe(this.context.mainCamera)))) {
72301
+ if (C.geometry.attributes.color && C.geometry.attributes.color.count < 100 && C.geometry.boundingSphere && (this._sphere.copy(C.geometry.boundingSphere), this._sphere.applyMatrix4(C.matrixWorld), this._sphere.containsPoint(_e(this.context.mainCamera)))) {
72274
72302
  o = 0;
72275
72303
  break;
72276
72304
  }
@@ -75529,7 +75557,7 @@ class Rn extends xI {
75529
75557
  const e = 1 / window.devicePixelRatio;
75530
75558
  if (this.resolutionScale === void 0) {
75531
75559
  let i = 1;
75532
- Is() && (i = 0.6), this.resolutionScale = new _e(i * e);
75560
+ Is() && (i = 0.6), this.resolutionScale = new Le(i * e);
75533
75561
  }
75534
75562
  const t = new fH(this.context.mainCamera, {
75535
75563
  worldFocusRange: 0.2,
@@ -75548,22 +75576,22 @@ xB([
75548
75576
  D()
75549
75577
  ], Rn.prototype, "mode", 2);
75550
75578
  xB([
75551
- D(_e)
75579
+ D(Le)
75552
75580
  ], Rn.prototype, "focusDistance", 2);
75553
75581
  xB([
75554
- D(_e)
75582
+ D(Le)
75555
75583
  ], Rn.prototype, "focalLength", 2);
75556
75584
  xB([
75557
- D(_e)
75585
+ D(Le)
75558
75586
  ], Rn.prototype, "aperture", 2);
75559
75587
  xB([
75560
- D(_e)
75588
+ D(Le)
75561
75589
  ], Rn.prototype, "gaussianMaxRadius", 2);
75562
75590
  xB([
75563
- D(_e)
75591
+ D(Le)
75564
75592
  ], Rn.prototype, "resolutionScale", 2);
75565
75593
  xB([
75566
- D(_e)
75594
+ D(Le)
75567
75595
  ], Rn.prototype, "bokehScale", 2);
75568
75596
  Ls("DepthOfField", Rn);
75569
75597
  var EoA = Object.defineProperty, coA = Object.getOwnPropertyDescriptor, loA = (g, A, e, t) => {
@@ -76080,17 +76108,17 @@ const yF = class {
76080
76108
  onUpdate(A) {
76081
76109
  if (!this._selected)
76082
76110
  return;
76083
- const e = xe(this._selected);
76111
+ const e = _e(this._selected);
76084
76112
  this.onUpdateWorldPosition(e, this._groundPlanePoint, !1), this.onUpdateGroundPlane(), this._didDragOnGroundPlaneLastFrame = !0, this._hasGroundPlane = !0;
76085
76113
  }
76086
76114
  onUpdateWorldPosition(A, e, t) {
76087
76115
  if (this._selected) {
76088
76116
  if (t) {
76089
- const i = xe(this._selected);
76117
+ const i = _e(this._selected);
76090
76118
  i.y = A.y, A = i;
76091
76119
  }
76092
76120
  if (vI(this._selected, A), vI(this._groundLine, A), this._hasGroundPlane ? this._groundLine.scale.y = this._groundDistance : this._groundLine.scale.y = 1e3, this._groundLine.visible = this.showGizmo, this._groundMarker.visible = e !== null && this.showGizmo, e) {
76093
- const i = xe(this._camera).distanceTo(e) * 0.01;
76121
+ const i = _e(this._camera).distanceTo(e) * 0.01;
76094
76122
  this._groundMarker.scale.set(i, i, i), vI(this._groundMarker, e);
76095
76123
  }
76096
76124
  }
@@ -76104,7 +76132,7 @@ const yF = class {
76104
76132
  onUpdateGroundPlane() {
76105
76133
  if (!this._selected || !this._context)
76106
76134
  return;
76107
- const A = xe(this._selected), e = new $I(new w(0, 0.1, 0).add(A), new w(0, -1, 0)), t = new Fs();
76135
+ const A = _e(this._selected), e = new $I(new w(0, 0.1, 0).add(A), new w(0, -1, 0)), t = new Fs();
76108
76136
  t.ignore = [this._selected];
76109
76137
  const i = this._context.physics.raycastFromRay(e, t);
76110
76138
  for (let I = 0; I < i.length; I++) {
@@ -78185,7 +78213,7 @@ const vQ = class extends RA {
78185
78213
  static calculateCenter(A, e) {
78186
78214
  const t = e || new w();
78187
78215
  return t.set(0, 0, 0), A.forEach((i) => {
78188
- t.add(xe(i));
78216
+ t.add(_e(i));
78189
78217
  }), console.log(t), t.divideScalar(A.length), t;
78190
78218
  }
78191
78219
  static filterTopmostParent(A) {
@@ -79030,11 +79058,11 @@ class dc extends RA {
79030
79058
  update() {
79031
79059
  if (!this.from)
79032
79060
  return;
79033
- var e = xe(this.from), t = bt(this.from);
79061
+ var e = _e(this.from), t = bt(this.from);
79034
79062
  this.offset.copy(this.positionOffset);
79035
79063
  const i = this.offset.length();
79036
79064
  if (this.referenceSpace && this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(i), e.add(this.offset), this.levelPosition && this.referenceSpace) {
79037
- const n = new kI(this.gameObject.up, 0), C = xe(this.referenceSpace);
79065
+ const n = new kI(this.gameObject.up, 0), C = _e(this.referenceSpace);
79038
79066
  n.setFromNormalAndCoplanarPoint(this.gameObject.up, C);
79039
79067
  const a = new w(0, 0, 0);
79040
79068
  n.projectPoint(e, a), e.copy(a);
@@ -83782,7 +83810,7 @@ class CCA extends hN {
83782
83810
  r(this, "_lastDistance", 0);
83783
83811
  }
83784
83812
  update() {
83785
- const e = xe(this.system.gameObject);
83813
+ const e = _e(this.system.gameObject);
83786
83814
  this._lastDistance = this._lastPosition.distanceTo(e), this._lastPosition.copy(e);
83787
83815
  }
83788
83816
  genValue() {
@@ -84228,7 +84256,7 @@ const qf = class extends RA {
84228
84256
  return this._worldScale;
84229
84257
  }
84230
84258
  get worldPos() {
84231
- return this._worldPositionFrame !== this.context.time.frame && (this._worldPositionFrame = this.context.time.frame, xe(this.gameObject, this._worldPos)), this._worldPos;
84259
+ return this._worldPositionFrame !== this.context.time.frame && (this._worldPositionFrame = this.context.time.frame, _e(this.gameObject, this._worldPos)), this._worldPos;
84232
84260
  }
84233
84261
  get matrixWorld() {
84234
84262
  return this._container.matrixWorld;
@@ -84236,12 +84264,34 @@ const qf = class extends RA {
84236
84264
  get isSubsystem() {
84237
84265
  return this._isUsedAsSubsystem;
84238
84266
  }
84239
- /** Add a custom quarks behaviour to the particle system. You can add a quarks.Behaviour type.
84240
- * @link https://github.com/Alchemist0823/three.quarks
84267
+ /** Add a custom quarks behaviour to the particle system.
84268
+ * You can add a quarks.Behaviour type or derive from {@link ParticleSystemBaseBehaviour}
84269
+ * @link https://github.com/Alchemist0823/three.quarks
84270
+ * @example
84271
+ * ```typescript
84272
+ * class MyBehaviour extends ParticleSystemBaseBehaviour {
84273
+ * initialize(particle: Particle) {
84274
+ * // initialize the particle
84275
+ * }
84276
+ * update(particle: Particle, delta: number) {
84277
+ * // do something with the particle
84278
+ * }
84279
+ * }
84280
+ *
84281
+ * const system = gameObject.getComponent(ParticleSystem);
84282
+ * system.addBehaviour(new MyBehaviour());
84283
+ * ```
84241
84284
  */
84242
84285
  addBehaviour(A) {
84243
84286
  return this._particleSystem ? (A instanceof _B && (A.system = this), de() && console.log("add behaviour", A), this._particleSystem.addBehavior(A), !0) : !1;
84244
84287
  }
84288
+ /** Remove a custom quarks behaviour from the particle system. **/
84289
+ removeBehaviour(A) {
84290
+ if (!this._particleSystem)
84291
+ return !1;
84292
+ const e = this._particleSystem.behaviors, t = e.indexOf(A);
84293
+ return t !== -1 && e.splice(t, 1), !0;
84294
+ }
84245
84295
  /** Removes all behaviours from the particle system
84246
84296
  * **Note:** this will also remove the default behaviours like SizeBehaviour, ColorBehaviour etc.
84247
84297
  */
@@ -84280,11 +84330,13 @@ const qf = class extends RA {
84280
84330
  }
84281
84331
  bl && A.length > 0 && console.log("SubEmitters: ", A, this), this._subEmitterSystems = A;
84282
84332
  }
84333
+ /** @internal */
84283
84334
  onAfterDeserialize(A) {
84284
84335
  if (this._subEmitterSystems && Array.isArray(this._subEmitterSystems))
84285
84336
  for (const e of this._subEmitterSystems)
84286
84337
  e._deserialize(this.context, this.gameObject);
84287
84338
  }
84339
+ /** @internal */
84288
84340
  awake() {
84289
84341
  if (this._worldPositionFrame = -1, this._renderer = this.gameObject.getComponent(Ts), !this.main)
84290
84342
  throw new Error("Not Supported: ParticleSystem needs a serialized MainModule. Creating new particle systems at runtime is currently not supported.");
@@ -84292,19 +84344,23 @@ const qf = class extends RA {
84292
84344
  const A = this._particleSystem.emitter;
84293
84345
  this.context.scene.add(A), this.inheritVelocity.system && this.inheritVelocity.system !== this && (this.inheritVelocity = this.inheritVelocity.clone()), this.inheritVelocity.awake(this), bl && (console.log(this), this.gameObject.add(new es(1)));
84294
84346
  }
84347
+ /** @internal */
84295
84348
  start() {
84296
84349
  this.addSubParticleSystems(), this.updateLayers();
84297
84350
  }
84351
+ /** @internal */
84298
84352
  onDestroy() {
84299
84353
  var A, e, t, i;
84300
84354
  (A = this._container) == null || A.removeFromParent(), (e = this._batchSystem) == null || e.removeFromParent(), (t = this._particleSystem) == null || t.emitter.removeFromParent(), (i = this._particleSystem) == null || i.dispose();
84301
84355
  }
84356
+ /** @internal */
84302
84357
  onEnable() {
84303
84358
  this.main && (this.inheritVelocity && (this.inheritVelocity.system = this), this._batchSystem && (this._batchSystem.visible = !0), this.playOnAwake && this.play(), this._isPlaying = this.playOnAwake);
84304
84359
  }
84305
84360
  onDisable() {
84306
84361
  this._batchSystem && (this._batchSystem.visible = !1);
84307
84362
  }
84363
+ /** @internal */
84308
84364
  onBeforeRender() {
84309
84365
  var A;
84310
84366
  this.main && (this._didPreWarm === !1 && ((A = this.main) == null ? void 0 : A.prewarm) === !0 && (this._didPreWarm = !0, this.preWarm()), this.onUpdate(), this.onSimulate(this.deltaTime));
@@ -84541,7 +84597,7 @@ class iS extends xI {
84541
84597
  }
84542
84598
  }
84543
84599
  DCA([
84544
- D(_e)
84600
+ D(Le)
84545
84601
  ], iS.prototype, "granularity", 2);
84546
84602
  Ls("PixelationEffect", iS);
84547
84603
  class Id extends RA {
@@ -85029,6 +85085,7 @@ class LI extends RA {
85029
85085
  }
85030
85086
  return e.uri === this.sourceId ? (console.warn("SceneSwitcher: can't load own scene - prevent recursive loading", this.sourceId), !1) : this.__lastSwitchScene === e && this.__lastSwitchScenePromise ? this.__lastSwitchScenePromise : (this.__lastSwitchScene = e, this.__lastSwitchScenePromise = this.__internalSwitchScene(e), await this.__lastSwitchScenePromise);
85031
85087
  }
85088
+ /** @internal */
85032
85089
  async __internalSwitchScene(e) {
85033
85090
  var i, I;
85034
85091
  if (this._currentScene) {
@@ -85121,6 +85178,13 @@ class LI extends RA {
85121
85178
  o instanceof Promise && await o;
85122
85179
  }
85123
85180
  }
85181
+ if (this._isCurrentlyLoading) {
85182
+ const i = this.tryGetSceneEventListener(this.gameObject);
85183
+ if (i && i.sceneOpened) {
85184
+ const I = i.sceneOpened(this);
85185
+ I instanceof Promise && await I;
85186
+ }
85187
+ }
85124
85188
  }
85125
85189
  async onEndLoading() {
85126
85190
  var e;
@@ -85133,6 +85197,13 @@ class LI extends RA {
85133
85197
  }
85134
85198
  aA.remove(t);
85135
85199
  }
85200
+ if (!this._isCurrentlyLoading) {
85201
+ const t = this.tryGetSceneEventListener(this.gameObject);
85202
+ if (t && t.sceneClosing) {
85203
+ const i = t.sceneClosing();
85204
+ i instanceof Promise && await i;
85205
+ }
85206
+ }
85136
85207
  }
85137
85208
  tryGetSceneEventListener(e, t = 0) {
85138
85209
  const i = aA.foreachComponent(e, (I) => I.sceneClosing ? I : void 0);
@@ -86103,19 +86174,19 @@ class Ar extends xI {
86103
86174
  }
86104
86175
  }
86105
86176
  nu([
86106
- D(_e)
86177
+ D(Le)
86107
86178
  ], Ar.prototype, "intensity", 2);
86108
86179
  nu([
86109
- D(_e)
86180
+ D(Le)
86110
86181
  ], Ar.prototype, "falloff", 2);
86111
86182
  nu([
86112
- D(_e)
86183
+ D(Le)
86113
86184
  ], Ar.prototype, "samples", 2);
86114
86185
  nu([
86115
- D(_e)
86186
+ D(Le)
86116
86187
  ], Ar.prototype, "color", 2);
86117
86188
  nu([
86118
- D(_e)
86189
+ D(Le)
86119
86190
  ], Ar.prototype, "luminanceInfluence", 2);
86120
86191
  Ls("ScreenSpaceAmbientOcclusion", Ar);
86121
86192
  var TCA = Object.defineProperty, HCA = Object.getOwnPropertyDescriptor, TB = (g, A, e, t) => {
@@ -86166,20 +86237,20 @@ TB([
86166
86237
  D()
86167
86238
  ], Fn.prototype, "gammaCorrection", 2);
86168
86239
  TB([
86169
- D(_e)
86240
+ D(Le)
86170
86241
  ], Fn.prototype, "intensity", 2);
86171
86242
  TB([
86172
- D(_e)
86243
+ D(Le)
86173
86244
  ], Fn.prototype, "falloff", 2);
86174
86245
  TB([
86175
- D(_e)
86246
+ D(Le)
86176
86247
  ], Fn.prototype, "aoRadius", 2);
86177
86248
  TB([
86178
86249
  QI(),
86179
86250
  D()
86180
86251
  ], Fn.prototype, "screenspaceRadius", 2);
86181
86252
  TB([
86182
- D(_e)
86253
+ D(Le)
86183
86254
  ], Fn.prototype, "color", 2);
86184
86255
  TB([
86185
86256
  QI(),
@@ -86315,7 +86386,7 @@ const sO = (rG = class extends RA {
86315
86386
  updateNow(A) {
86316
86387
  if (!(!this.target || this.target === this.gameObject)) {
86317
86388
  if (this.followFactor > 0) {
86318
- const e = xe(this.target), t = this._firstUpdate || A ? 1 : ie.clamp01(this.context.time.deltaTime * this.followFactor), i = this.worldPosition;
86389
+ const e = _e(this.target), t = this._firstUpdate || A ? 1 : ie.clamp01(this.context.time.deltaTime * this.followFactor), i = this.worldPosition;
86319
86390
  this.positionAxes & Ul.X && (i.x = ie.lerp(i.x, e.x, t)), this.positionAxes & Ul.Y && (i.y = ie.lerp(i.y, e.y, t)), this.positionAxes & Ul.Z && (i.z = ie.lerp(i.z, e.z, t)), this.worldPosition = i;
86320
86391
  }
86321
86392
  if (this.rotateFactor > 0) {
@@ -87335,7 +87406,7 @@ class daA {
87335
87406
  Co.clear();
87336
87407
  const t = Co.createString(this.guid), i = Co.createString(this.userId);
87337
87408
  gn.startSyncedCameraModel(Co), gn.addGuid(Co, t), gn.addUserId(Co, i);
87338
- const I = xe(A), o = Ay(A);
87409
+ const I = _e(A), o = Ay(A);
87339
87410
  gn.addPos(Co, IB.createVec3(Co, I.x, I.y, I.z)), gn.addRot(Co, IB.createVec3(Co, o.x, o.y, o.z));
87340
87411
  const s = gn.endSyncedCameraModel(Co);
87341
87412
  Co.finish(s, HD), e.sendBinary(Co.asUint8Array());
@@ -87392,7 +87463,7 @@ const uM = (QG = class extends RA {
87392
87463
  if (!this.context.connection.isConnected || this.context.connection.connectionId === null)
87393
87464
  return;
87394
87465
  this._model === null && (this._model = new daA(this.context.connection.connectionId, this.context.connection.connectionId + "_camera"));
87395
- const e = xe(A), t = bt(A);
87466
+ const e = _e(A), t = bt(A);
87396
87467
  (e.distanceTo(this._lastWorldPosition) > 1e-3 || t.angleTo(this._lastWorldQuaternion) > 0.01) && (this._needsUpdate = !0), this._lastWorldPosition.copy(e), this._lastWorldQuaternion.copy(t), !((!this._needsUpdate || this.context.time.frameCount % 2 !== 0) && !(this.context.time.realtimeSinceStartup - this._lastUpdateTime > this._camTimeoutInSeconds * 0.5)) && (this._lastUpdateTime = this.context.time.realtimeSinceStartup, this._needsUpdate = !1, this._model.send(A, this.context.connection), this.context.isInXR || this.context.players.setPlayerView(this.context.connection.connectionId, A, tB.Browser));
87397
87468
  }
87398
87469
  onReceivedRemoteCameraInfoBin(A) {
@@ -87698,22 +87769,22 @@ class LC extends xI {
87698
87769
  }
87699
87770
  }
87700
87771
  wc([
87701
- D(_e)
87772
+ D(Le)
87702
87773
  ], LC.prototype, "offset", 2);
87703
87774
  wc([
87704
- D(_e)
87775
+ D(Le)
87705
87776
  ], LC.prototype, "rotation", 2);
87706
87777
  wc([
87707
- D(_e)
87778
+ D(Le)
87708
87779
  ], LC.prototype, "focusArea", 2);
87709
87780
  wc([
87710
- D(_e)
87781
+ D(Le)
87711
87782
  ], LC.prototype, "feather", 2);
87712
87783
  wc([
87713
- D(_e)
87784
+ D(Le)
87714
87785
  ], LC.prototype, "kernelSize", 2);
87715
87786
  wc([
87716
- D(_e)
87787
+ D(Le)
87717
87788
  ], LC.prototype, "resolutionScale", 2);
87718
87789
  Ls("TiltShiftEffect", LC);
87719
87790
  var SaA = Object.defineProperty, maA = Object.getOwnPropertyDescriptor, GaA = (g, A, e, t) => {
@@ -87733,7 +87804,7 @@ class aS extends xI {
87733
87804
  return !0;
87734
87805
  }
87735
87806
  init() {
87736
- this.mode || (this.mode = new _e(jI)), this.mode.defaultValue = jI;
87807
+ this.mode || (this.mode = new Le(jI)), this.mode.defaultValue = jI;
87737
87808
  }
87738
87809
  apply() {
87739
87810
  this.mode || this.init(), this.mode.onValueChanged = this._apply.bind(this), this._apply(this.mode.value);
@@ -87755,7 +87826,7 @@ class aS extends xI {
87755
87826
  }
87756
87827
  }
87757
87828
  GaA([
87758
- D(_e)
87829
+ D(Le)
87759
87830
  ], aS.prototype, "mode", 2);
87760
87831
  Ls("Tonemapping", aS);
87761
87832
  var kaA = Object.defineProperty, MaA = Object.getOwnPropertyDescriptor, rS = (g, A, e, t) => {
@@ -87895,13 +87966,13 @@ class Sc extends xI {
87895
87966
  }
87896
87967
  }
87897
87968
  wN([
87898
- D(_e)
87969
+ D(Le)
87899
87970
  ], Sc.prototype, "color", 2);
87900
87971
  wN([
87901
- D(_e)
87972
+ D(Le)
87902
87973
  ], Sc.prototype, "intensity", 2);
87903
87974
  wN([
87904
- D(_e)
87975
+ D(Le)
87905
87976
  ], Sc.prototype, "center", 2);
87906
87977
  Ls("Vignette", Sc);
87907
87978
  var NaA = Object.defineProperty, FaA = Object.getOwnPropertyDescriptor, KaA = (g, A, e, t) => {
@@ -90308,7 +90379,7 @@ const prA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty(
90308
90379
  VisibilityAction: Ky,
90309
90380
  Voip: ec,
90310
90381
  Volume: by,
90311
- VolumeParameter: _e,
90382
+ VolumeParameter: Le,
90312
90383
  VolumeProfile: Sy,
90313
90384
  WebARCameraBackground: yN,
90314
90385
  WebARSessionRoot: is,
@@ -90537,7 +90608,7 @@ z.add("Vignette", Sc);
90537
90608
  z.add("VisibilityAction", Ky);
90538
90609
  z.add("Voip", ec);
90539
90610
  z.add("Volume", by);
90540
- z.add("VolumeParameter", _e);
90611
+ z.add("VolumeParameter", Le);
90541
90612
  z.add("VolumeProfile", Sy);
90542
90613
  z.add("WebARCameraBackground", yN);
90543
90614
  z.add("WebARSessionRoot", is);
@@ -90771,7 +90842,7 @@ function UrA(g, A, e = !0) {
90771
90842
  }
90772
90843
  }
90773
90844
  function _QA(g, A = null) {
90774
- const e = A ?? Le.Current.scripts;
90845
+ const e = A ?? xe.Current.scripts;
90775
90846
  for (const t in e) {
90776
90847
  const i = e[t];
90777
90848
  if (i && i.guid === g)
@@ -90880,7 +90951,7 @@ class GO extends HTMLElement {
90880
90951
  <div class="content">
90881
90952
  <slot class="overlay-content"></slot>
90882
90953
  </div>
90883
- `, this.shadowRoot && this.shadowRoot.appendChild(e.content.cloneNode(!0)), this._context = new Le({ domElement: this }), this.addEventListener("error", this.onError);
90954
+ `, this.shadowRoot && this.shadowRoot.appendChild(e.content.cloneNode(!0)), this._context = new xe({ domElement: this }), this.addEventListener("error", this.onError);
90884
90955
  }
90885
90956
  static get observedAttributes() {
90886
90957
  return NrA;
@@ -90986,7 +91057,7 @@ class GO extends HTMLElement {
90986
91057
  var E, c;
90987
91058
  if (!this.isConnected)
90988
91059
  return;
90989
- if (this._context || (Qi && console.warn("Create new context"), this._context = new Le({ domElement: this })), !this._context) {
91060
+ if (this._context || (Qi && console.warn("Create new context"), this._context = new xe({ domElement: this })), !this._context) {
90990
91061
  console.error("Needle Engine: Context not initialized");
90991
91062
  return;
90992
91063
  }
@@ -96340,7 +96411,7 @@ class zrA {
96340
96411
  }
96341
96412
  }
96342
96413
  const qi = IA("debugphysics"), AG = IA("debugcolliderplacement"), eG = IA("debugcollisions"), XrA = IA("showcolliders"), tG = IA("debugraycasts"), OI = Symbol("needle component"), yI = Symbol("physics body"), nx = Symbol("rigidbody");
96343
- let Ca;
96414
+ let On;
96344
96415
  globalThis.true = globalThis.true !== void 0 ? globalThis.true : !0;
96345
96416
  qi && console.log("Use Rapier", !0, globalThis.true);
96346
96417
  rt.registerCallback(ki.ContextCreationStart, (g) => {
@@ -96483,10 +96554,10 @@ const Dh = class {
96483
96554
  return qi && console.log("Rapier disabled"), !1;
96484
96555
  if (this._hasCreatedWorld)
96485
96556
  return console.error("Invalid call to create physics world: world is already created"), !0;
96486
- if (this._hasCreatedWorld = !0, Ca === void 0) {
96557
+ if (this._hasCreatedWorld = !0, On === void 0) {
96487
96558
  qi && console.log("Import Rapier");
96488
96559
  const A = await Promise.resolve().then(() => ZrA);
96489
- qi && console.log("Init Rapier"), await A.init(), Ca = A;
96560
+ qi && console.log("Init Rapier"), await A.init(), On = A;
96490
96561
  }
96491
96562
  return qi && console.log("Physics engine initialized, creating world..."), this._world = new Uc(this._gravity), this.enabled = !0, this._isInitialized = !0, qi && console.log("Physics world created"), !0;
96492
96563
  }
@@ -96494,37 +96565,39 @@ const Dh = class {
96494
96565
  validate() {
96495
96566
  this._isInitialized || qi && (this._lastWarnTime = this._lastWarnTime ?? 0, Date.now() - this._lastWarnTime > 1e3 && (this._lastWarnTime = Date.now(), console.warn("Physics engine is not initialized")));
96496
96567
  }
96497
- raycast(A, e, t, i) {
96498
- var s;
96499
- t === void 0 && (t = 1 / 0), i === void 0 && (i = !0);
96500
- const I = this.getPhysicsRay(this.rapierRay, A, e);
96501
- if (!I)
96568
+ raycast(A, e, t) {
96569
+ var n;
96570
+ let i = t == null ? void 0 : t.maxDistance, I = t == null ? void 0 : t.solid;
96571
+ i === void 0 && (i = 1 / 0), I === void 0 && (I = !0);
96572
+ const o = this.getPhysicsRay(this.rapierRay, A, e);
96573
+ if (!o)
96502
96574
  return null;
96503
- (this.debugRenderRaycasts || tG) && ye.DrawRay(I.origin, I.dir, 255, 1);
96504
- const o = (s = this.world) == null ? void 0 : s.castRay(I, t, i, void 0, void 0, void 0, void 0, (n) => {
96505
- var C;
96506
- return !((C = n[OI]) != null && C.gameObject.layers.isEnabled(2));
96575
+ (this.debugRenderRaycasts || tG) && ye.DrawRay(o.origin, o.dir, 255, 1);
96576
+ const s = (n = this.world) == null ? void 0 : n.castRay(o, i, I, t == null ? void 0 : t.queryFilterFlags, t == null ? void 0 : t.filterGroups, void 0, void 0, (C) => {
96577
+ const a = C[OI];
96578
+ return t != null && t.filterPredicate ? t.filterPredicate(a) : !(a != null && a.gameObject.layers.isEnabled(2));
96507
96579
  });
96508
- if (o) {
96509
- const n = I.pointAt(o.toi), C = this.raycastVectorsBuffer.get();
96510
- return C.set(n.x, n.y, n.z), { point: C, collider: o.collider[OI] };
96580
+ if (s) {
96581
+ const C = o.pointAt(s.toi), a = this.raycastVectorsBuffer.get();
96582
+ return a.set(C.x, C.y, C.z), { point: a, collider: s.collider[OI] };
96511
96583
  }
96512
96584
  return null;
96513
96585
  }
96514
- raycastAndGetNormal(A, e, t, i) {
96515
- var s;
96516
- t === void 0 && (t = 1 / 0), i === void 0 && (i = !0);
96517
- const I = this.getPhysicsRay(this.rapierRay, A, e);
96518
- if (!I)
96586
+ raycastAndGetNormal(A, e, t) {
96587
+ var n;
96588
+ let i = t == null ? void 0 : t.maxDistance, I = t == null ? void 0 : t.solid;
96589
+ i === void 0 && (i = 1 / 0), I === void 0 && (I = !0);
96590
+ const o = this.getPhysicsRay(this.rapierRay, A, e);
96591
+ if (!o)
96519
96592
  return null;
96520
- (this.debugRenderRaycasts || tG) && ye.DrawRay(I.origin, I.dir, 255, 1);
96521
- const o = (s = this.world) == null ? void 0 : s.castRayAndGetNormal(I, t, i, void 0, void 0, void 0, void 0, (n) => {
96522
- var C;
96523
- return !((C = n[OI]) != null && C.gameObject.layers.isEnabled(2));
96593
+ (this.debugRenderRaycasts || tG) && ye.DrawRay(o.origin, o.dir, 255, 1);
96594
+ const s = (n = this.world) == null ? void 0 : n.castRayAndGetNormal(o, i, I, t == null ? void 0 : t.queryFilterFlags, t == null ? void 0 : t.filterGroups, void 0, void 0, (C) => {
96595
+ const a = C[OI];
96596
+ return t != null && t.filterPredicate ? t.filterPredicate(a) : !(a != null && a.gameObject.layers.isEnabled(2));
96524
96597
  });
96525
- if (o) {
96526
- const n = I.pointAt(o.toi), C = o.normal, a = this.raycastVectorsBuffer.get(), B = this.raycastVectorsBuffer.get();
96527
- return a.set(n.x, n.y, n.z), B.set(C.x, C.y, C.z), { point: a, normal: B, collider: o.collider[OI] };
96598
+ if (s) {
96599
+ const C = o.pointAt(s.toi), a = s.normal, B = this.raycastVectorsBuffer.get(), Q = this.raycastVectorsBuffer.get();
96600
+ return B.set(C.x, C.y, C.z), Q.set(a.x, a.y, a.z), { point: B, normal: Q, collider: s.collider[OI] };
96528
96601
  }
96529
96602
  return null;
96530
96603
  }
@@ -96553,7 +96626,7 @@ const Dh = class {
96553
96626
  if (!i)
96554
96627
  return console.error("Can not perform raycast - no camera found"), null;
96555
96628
  o.set(A.origin.x, A.origin.y, A.origin.z);
96556
- const a = xe(i);
96629
+ const a = _e(i);
96557
96630
  o.sub(a);
96558
96631
  }
96559
96632
  return o.normalize(), A.dir.x = o.x, A.dir.y = o.y, A.dir.z = o.z, A;
@@ -96718,7 +96791,7 @@ this is not optimal for performance since this isn't supported by the Rapier phy
96718
96791
  throw new Error("Physics world not initialized");
96719
96792
  const t = this._tempMatrix;
96720
96793
  let i;
96721
- A.attachedRigidbody ? i = this.getRigidbody(A, this._tempMatrix) : (qi && console.log("Create collider without rigidbody", A.name), t.makeRotationFromQuaternion(bt(A.gameObject)), t.setPosition(xe(A.gameObject))), t.decompose(this._tempPosition, this._tempQuaternion, this._tempScale), this.tryApplyCenter(A, this._tempPosition), e.setTranslation(this._tempPosition.x, this._tempPosition.y, this._tempPosition.z), e.setRotation(this._tempQuaternion), e.setSensor(A.isTrigger);
96794
+ A.attachedRigidbody ? i = this.getRigidbody(A, this._tempMatrix) : (qi && console.log("Create collider without rigidbody", A.name), t.makeRotationFromQuaternion(bt(A.gameObject)), t.setPosition(_e(A.gameObject))), t.decompose(this._tempPosition, this._tempQuaternion, this._tempScale), this.tryApplyCenter(A, this._tempPosition), e.setTranslation(this._tempPosition.x, this._tempPosition.y, this._tempPosition.z), e.setRotation(this._tempQuaternion), e.setSensor(A.isTrigger);
96722
96795
  const I = A.sharedMaterial;
96723
96796
  if (I) {
96724
96797
  if (I.bounciness !== void 0 && e.setRestitution(I.bounciness), I.bounceCombine !== void 0)
@@ -96761,25 +96834,29 @@ this is not optimal for performance since this isn't supported by the Rapier phy
96761
96834
  Error:`, s), null;
96762
96835
  }
96763
96836
  }
96764
- /** Updates the collision groups */
96837
+ /**
96838
+ * Updates the collision groups of a collider.
96839
+ *
96840
+ * @param collider - The collider to update.
96841
+ */
96765
96842
  updateColliderCollisionGroups(A) {
96766
96843
  const e = A[yI], t = A.membership;
96767
96844
  let i = 0;
96768
96845
  if (t == null)
96769
- i = 4294967295;
96846
+ i = 65535;
96770
96847
  else
96771
96848
  for (let s = 0; s < t.length; s++) {
96772
96849
  const n = t[s];
96773
- i |= 1 << n;
96850
+ n > 31 ? console.error(`Rapier only supports 32 layers, layer ${n} is not supported`) : i |= 1 << Math.floor(n);
96774
96851
  }
96775
96852
  const I = A.filter;
96776
96853
  let o = 0;
96777
96854
  if (I == null)
96778
- o = 4294967295;
96855
+ o = 65535;
96779
96856
  else
96780
96857
  for (let s = 0; s < I.length; s++) {
96781
96858
  const n = I[s];
96782
- o |= 1 << n;
96859
+ n > 31 ? console.error(`Rapier only supports 32 layers, layer ${n} is not supported`) : o |= 1 << Math.floor(n);
96783
96860
  }
96784
96861
  e.setCollisionGroups(i << 16 | o);
96785
96862
  }
@@ -96792,12 +96869,12 @@ Error:`, s), null;
96792
96869
  if (t = i[yI], !t) {
96793
96870
  const I = i.isKinematic && !AG;
96794
96871
  qi && console.log("Create rigidbody", I);
96795
- const o = I ? Ca.RigidBodyDesc.kinematicPositionBased() : Ca.RigidBodyDesc.dynamic(), s = xe(A.attachedRigidbody.gameObject);
96796
- o.setTranslation(s.x, s.y, s.z), o.setRotation(bt(A.attachedRigidbody.gameObject)), t = this.world.createRigidBody(o), this.bodies.push(t), this.objects.push(i);
96872
+ const o = I ? On.RigidBodyDesc.kinematicPositionBased() : On.RigidBodyDesc.dynamic(), s = _e(A.attachedRigidbody.gameObject);
96873
+ o.setTranslation(s.x, s.y, s.z), o.setRotation(bt(A.attachedRigidbody.gameObject)), o.centerOfMass = new On.Vector3(i.centerOfMass.x, i.centerOfMass.y, i.centerOfMass.z), t = this.world.createRigidBody(o), this.bodies.push(t), this.objects.push(i);
96797
96874
  }
96798
96875
  t[OI] = i, i[yI] = t, this.internalUpdateRigidbodyProperties(i, t), this.getRigidbodyRelativeMatrix(A.gameObject, i.gameObject, e), A[nx] = t;
96799
96876
  } else {
96800
- const i = Ca.RigidBodyDesc.kinematicPositionBased(), I = xe(A.gameObject);
96877
+ const i = On.RigidBodyDesc.kinematicPositionBased(), I = _e(A.gameObject);
96801
96878
  i.setTranslation(I.x, I.y, I.z), i.setRotation(bt(A.gameObject)), t = this.world.createRigidBody(i), e.identity(), t[OI] = null;
96802
96879
  }
96803
96880
  return t;
@@ -96840,7 +96917,7 @@ Error:`, s), null;
96840
96917
  e.collider(t).setDensity(1e-7);
96841
96918
  e.recomputeMassPropertiesFromColliders();
96842
96919
  }
96843
- e.setEnabledRotations(!A.lockRotationX, !A.lockRotationY, !A.lockRotationZ, !1), e.setEnabledTranslations(!A.lockPositionX, !A.lockPositionY, !A.lockPositionZ, !1), A.isKinematic ? e.setBodyType(Ca.RigidBodyType.KinematicPositionBased, !1) : e.setBodyType(Ca.RigidBodyType.Dynamic, !1);
96920
+ e.setEnabledRotations(!A.lockRotationX, !A.lockRotationY, !A.lockRotationZ, !1), e.setEnabledTranslations(!A.lockPositionX, !A.lockPositionY, !A.lockPositionZ, !1), A.isKinematic ? e.setBodyType(On.RigidBodyType.KinematicPositionBased, !1) : e.setBodyType(On.RigidBodyType.Dynamic, !1);
96844
96921
  }
96845
96922
  step(A) {
96846
96923
  this.world && this.enabled && (this._isUpdatingPhysicsWorld = !0, this.eventQueue || (this.eventQueue = new QF(!1)), A && (this.world.timestep = ie.lerp(this.world.timestep, A, 0.8)), this.world.step(this.eventQueue), this._isUpdatingPhysicsWorld = !1);
@@ -96891,7 +96968,7 @@ Error:`, s), null;
96891
96968
  }
96892
96969
  syncPhysicsBody(A, e, t, i) {
96893
96970
  if (e instanceof KE) {
96894
- const I = xe(A, this._tempPosition), o = bt(A, this._tempQuaternion);
96971
+ const I = _e(A, this._tempPosition), o = bt(A, this._tempQuaternion);
96895
96972
  switch (e.bodyType()) {
96896
96973
  case GI.Fixed:
96897
96974
  case GI.KinematicPositionBased:
@@ -96903,7 +96980,7 @@ Error:`, s), null;
96903
96980
  break;
96904
96981
  }
96905
96982
  } else if (e instanceof vE) {
96906
- const I = xe(A, this._tempPosition), o = bt(A, this._tempQuaternion), s = e[OI];
96983
+ const I = _e(A, this._tempPosition), o = bt(A, this._tempQuaternion), s = e[OI];
96907
96984
  if (this.tryApplyCenter(s, I), t) {
96908
96985
  const n = e.translation();
96909
96986
  (n.x !== I.x || n.y !== I.y || n.z !== I.z) && e.setTranslation(I);
@@ -96951,7 +97028,7 @@ Error:`, s), null;
96951
97028
  }
96952
97029
  const I = A[yI], o = e[yI];
96953
97030
  this.calculateJointRelativeMatrices(A.gameObject, e.gameObject, this._tempMatrix), this._tempMatrix.decompose(this._tempPosition, this._tempQuaternion, this._tempScale);
96954
- const s = Ca.JointData.revolute(t, this._tempPosition, i), n = this.world.createImpulseJoint(s, I, o, !0);
97031
+ const s = On.JointData.revolute(t, this._tempPosition, i), n = this.world.createImpulseJoint(s, I, o, !0);
96955
97032
  qi && console.log("ADD HINGE JOINT", n);
96956
97033
  }
96957
97034
  calculateJointRelativeMatrices(A, e, t) {
@@ -97183,7 +97260,7 @@ function bO(g, A) {
97183
97260
  console.warn("Missing camera object, can not add orbit controls");
97184
97261
  }
97185
97262
  const cF = {
97186
- Context: Le,
97263
+ Context: xe,
97187
97264
  glTF: {
97188
97265
  loadFromURL: DO
97189
97266
  }
@@ -98244,7 +98321,7 @@ export {
98244
98321
  peA as ConnectionEvents,
98245
98322
  jrA as ContactPoint,
98246
98323
  vB as ContactShadows,
98247
- Le as Context,
98324
+ xe as Context,
98248
98325
  fQA as ContextArgs,
98249
98326
  ki as ContextEvent,
98250
98327
  rt as ContextRegistry,
@@ -98337,7 +98414,7 @@ export {
98337
98414
  ko as MinMaxGradient,
98338
98415
  Jt as NEEDLE_progressive,
98339
98416
  fp as NEKeyboardEvent,
98340
- aa as NEPointerEvent,
98417
+ Ca as NEPointerEvent,
98341
98418
  rt as NeedleEngine,
98342
98419
  GO as NeedleEngineHTMLElement,
98343
98420
  hO as NeedleGltfLoader,
@@ -98493,7 +98570,7 @@ export {
98493
98570
  Ky as VisibilityAction,
98494
98571
  ec as Voip,
98495
98572
  by as Volume,
98496
- _e as VolumeParameter,
98573
+ Le as VolumeParameter,
98497
98574
  Sy as VolumeProfile,
98498
98575
  dQA as WaitForFrames,
98499
98576
  NeA as WaitForPromise,
@@ -98591,7 +98668,7 @@ export {
98591
98668
  Pw as getUrlParams,
98592
98669
  aT as getWorldDirection,
98593
98670
  rT as getWorldEuler,
98594
- xe as getWorldPosition,
98671
+ _e as getWorldPosition,
98595
98672
  bt as getWorldQuaternion,
98596
98673
  Ay as getWorldRotation,
98597
98674
  oi as getWorldScale,