@needle-tools/engine 4.12.1 → 4.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Vector2 as ee, Vector3 as y, Vector4 as me, Quaternion as V, PlaneGeometry as Jn, WebGLRenderer as Ar, PerspectiveCamera as ce, OrthographicCamera as ou, Scene as ki, Mesh as H, Texture as Fe, Uniform$1 as Hi, Color as se, ShaderMaterial as Gn, Box3 as Ci, ShadowMaterial as Kb, Euler as lt, MeshStandardMaterial as pt, Box3Helper as Wx, GridHelper as Nm, Object3D as M, Material as be, Matrix3 as Zb, Matrix4 as J, Layers as bo, Ray as Rs, MathUtils as Ps, AxesHelper as Pi, MeshBasicMaterial as xe, DoubleSide as Mi, BufferGeometry as gn, Group as Os, CylinderGeometry as Jb, SphereGeometry as ru, BoxGeometry as Ea, SpriteMaterial as Vx, Sprite as Hx, Shape as Gx, ExtrudeGeometry as qx, Fog as e0, DirectionalLight as jp, PointLight as $m, EdgesGeometry as Xx, LineSegments as t0, LineBasicMaterial as Wm, Line as Ta, BufferAttribute as mt, Raycaster as au, Sphere as lu, ArrayCamera as Qx, Plane as wr, SkinnedMesh as fo, InterleavedBufferAttribute as i0, Skeleton as Yx, Bone as Kx, WebGLCubeRenderTarget as Zx, CubeCamera as Jx, AnimationClip as Oi, FileLoader as Vm, TextureLoader as Sc, PropertyBinding as Aa, KeyframeTrack as eS, LinearSRGBColorSpace as Es, ShaderChunk as Kt, UniformsLib as tS, DataTexture as Hm, RGBAFormat as cu, EquirectangularReflectionMapping as Wn, SRGBColorSpace as Ts, Clock as iS, NeutralToneMapping as Ia, AgXToneMapping as hu, ACESFilmicToneMapping as du, NoToneMapping as vd, PCFSoftShadowMap$1 as nS, BasicNodeLibrary as sS, WebGLRenderTarget as qn, DepthTexture as n0, NearestFilter as wd, LoopRepeat as oS, LoopOnce as Bp, AnimationMixer as Gm, CompressedTexture as rS, FrontSide as vo, Camera as aS, Frustum as Ry, AudioListener as lS, PositionalAudio as cS, AudioLoader as Fp, EventDispatcher as qm, BackSide as uu, MeshDepthMaterial as hS, CustomBlending as dS, MaxEquation as uS, AlwaysStencilFunc as fS, GreaterEqualStencilFunc as pS, NotEqualStencilFunc as mS, GreaterStencilFunc as gS, LessEqualStencilFunc as yS, EqualStencilFunc as _S, LessStencilFunc as bS, NeverStencilFunc as Ey, InvertStencilOp as vS, DecrementWrapStencilOp as wS, IncrementWrapStencilOp as xS, DecrementStencilOp as SS, IncrementStencilOp as CS, ReplaceStencilOp as PS, ZeroStencilOp as OS, KeepStencilOp as kS, CubeTexture as s0, AmbientLight as MS, HemisphereLight as RS, RawShaderMaterial as o0, GLSL3 as ES, AlwaysDepth as TS, GreaterEqualDepth as AS, GreaterDepth as IS, LessEqualDepth as LS, LessDepth as DS, NotEqualDepth as jS, EqualDepth as BS, BatchedMesh as Ty, MeshPhysicalMaterial as Up, LinearFilter as xd, UnsignedByteType as FS, RingGeometry as US, Line3 as zS, AdditiveBlending as r0, BoxHelper as NS, SpotLight as $S, DirectionalLightHelper as WS, CameraHelper as VS, LOD as HS, Triangle as GS, NormalBlending as qS, ReinhardToneMapping as Xm, LinearToneMapping as Qm, HalfFloatType as wf, VideoTexture as XS, CubeUVReflectionMapping as a0, CompressedCubeTexture as QS, EquirectangularRefractionMapping as YS, CatmullRomCurve3 as KS, VectorKeyframeTrack as ZS, QuaternionKeyframeTrack as JS, Audio as e1, ShaderLib as Sd, UniformsUtils as l0, MirroredRepeatWrapping as Ay, MeshNormalMaterial as t1, AudioContext as i1, PMREMGenerator$1 as n1 } from "./three-BCCkyCA5.js";
1
+ import { Vector2 as ee, Vector3 as y, Vector4 as me, Quaternion as V, PlaneGeometry as Jn, WebGLRenderer as Ar, PerspectiveCamera as ce, OrthographicCamera as ou, Scene as ki, Mesh as H, Texture as Fe, Uniform$1 as Hi, Color as se, ShaderMaterial as Gn, Box3 as Ci, ShadowMaterial as Kb, Euler as lt, MeshStandardMaterial as pt, Box3Helper as Wx, GridHelper as Nm, Object3D as M, Material as be, Matrix3 as Zb, Matrix4 as J, Layers as bo, Ray as Rs, MathUtils as Ps, AxesHelper as Pi, MeshBasicMaterial as xe, DoubleSide as Mi, BufferGeometry as yn, Group as Os, CylinderGeometry as Jb, SphereGeometry as ru, BoxGeometry as Ea, SpriteMaterial as Vx, Sprite as Hx, Shape as Gx, ExtrudeGeometry as qx, Fog as e0, DirectionalLight as jp, PointLight as $m, EdgesGeometry as Xx, LineSegments as t0, LineBasicMaterial as Wm, Line as Ta, BufferAttribute as mt, Raycaster as au, Sphere as lu, ArrayCamera as Qx, Plane as wr, SkinnedMesh as fo, InterleavedBufferAttribute as i0, Skeleton as Yx, Bone as Kx, WebGLCubeRenderTarget as Zx, CubeCamera as Jx, AnimationClip as Oi, FileLoader as Vm, TextureLoader as Sc, PropertyBinding as Aa, KeyframeTrack as eS, LinearSRGBColorSpace as Es, ShaderChunk as Kt, UniformsLib as tS, DataTexture as Hm, RGBAFormat as cu, EquirectangularReflectionMapping as Wn, SRGBColorSpace as Ts, Clock as iS, NeutralToneMapping as Ia, AgXToneMapping as hu, ACESFilmicToneMapping as du, NoToneMapping as vd, PCFSoftShadowMap$1 as nS, BasicNodeLibrary as sS, WebGLRenderTarget as qn, DepthTexture as n0, NearestFilter as wd, LoopRepeat as oS, LoopOnce as Bp, AnimationMixer as Gm, CompressedTexture as rS, FrontSide as vo, Camera as aS, Frustum as Ry, AudioListener as lS, PositionalAudio as cS, AudioLoader as Fp, EventDispatcher as qm, BackSide as uu, MeshDepthMaterial as hS, CustomBlending as dS, MaxEquation as uS, AlwaysStencilFunc as fS, GreaterEqualStencilFunc as pS, NotEqualStencilFunc as mS, GreaterStencilFunc as gS, LessEqualStencilFunc as yS, EqualStencilFunc as _S, LessStencilFunc as bS, NeverStencilFunc as Ey, InvertStencilOp as vS, DecrementWrapStencilOp as wS, IncrementWrapStencilOp as xS, DecrementStencilOp as SS, IncrementStencilOp as CS, ReplaceStencilOp as PS, ZeroStencilOp as OS, KeepStencilOp as kS, CubeTexture as s0, AmbientLight as MS, HemisphereLight as RS, RawShaderMaterial as o0, GLSL3 as ES, AlwaysDepth as TS, GreaterEqualDepth as AS, GreaterDepth as IS, LessEqualDepth as LS, LessDepth as DS, NotEqualDepth as jS, EqualDepth as BS, BatchedMesh as Ty, MeshPhysicalMaterial as Up, LinearFilter as xd, UnsignedByteType as FS, RingGeometry as US, Line3 as zS, AdditiveBlending as r0, BoxHelper as NS, SpotLight as $S, DirectionalLightHelper as WS, CameraHelper as VS, LOD as HS, Triangle as GS, NormalBlending as qS, ReinhardToneMapping as Xm, LinearToneMapping as Qm, HalfFloatType as wf, VideoTexture as XS, CubeUVReflectionMapping as a0, CompressedCubeTexture as QS, EquirectangularRefractionMapping as YS, CatmullRomCurve3 as KS, VectorKeyframeTrack as ZS, QuaternionKeyframeTrack as JS, Audio as e1, ShaderLib as Sd, UniformsUtils as l0, MirroredRepeatWrapping as Ay, MeshNormalMaterial as t1, AudioContext as i1, PMREMGenerator$1 as n1 } from "./three-BCCkyCA5.js";
2
2
  import { createLoaders as Ym, getRaycastMesh as c0, LODsManager as Go, NEEDLE_progressive as We, addDracoAndKTX2Loaders as s1, configureLoader as o1, setKTX2TranscoderLocation as r1, setDracoDecoderLocation as a1 } from "./gltf-progressive-DPunMlEM.js";
3
3
  import { GroundedSkybox as La, Font as l1, TextGeometry as c1, FontLoader as h1, GLTFLoader as As, TransformControlsGizmo as h0, EXRLoader as Km, RGBELoader as d0, Stats as d1, nodeFrame as Iy, OrbitControls as u0, PositionalAudioHelper as u1, HorizontalBlurShader as f1, VerticalBlurShader as p1, GLTFExporter as f0, strToU8 as p0, zipSync as m1, XRControllerModelFactory as g1, XRHandMeshModel as y1, Line2 as _1, LineGeometry as b1, LineMaterial as v1, TransformControls as w1, InteractiveGroup as x1, HTMLMesh as S1, VertexNormalsHelper as C1, OBJLoader as Zm, FBXLoader as m0, mergeVertices as P1 } from "./three-examples-D4rE49Ui.js";
4
4
  import { fetchProfile as O1, MotionController as k1, $70d766613f57b014$export$2e2bcd8739ae039 as Ly, ByteBuffer as M1, v5 as Dy, md5 as jy, SIZE_PREFIX_LENGTH as g0, Builder as Jm, createNoise4D as R1, Matrix4 as xf, BatchedParticleRenderer as E1, ParticleSystem as T1, RenderMode as gs, ConstantColor as A1, Vector4 as I1, ConstantValue as L1, TrailParticle as By, WorkerBase as D1, MeshBVH as j1 } from "./vendor-DMZcbVO1.js";
@@ -580,8 +580,9 @@ function tC(s) {
580
580
  }
581
581
  function cr(s, e, t, i) {
582
582
  if (tg) return;
583
- const o = pe.Current?.domElement ?? document.querySelector("needle-engine");
584
- if (o) {
583
+ const n = pe.Current;
584
+ let o = n?.domElement ?? document.querySelector("needle-engine");
585
+ if (n.isInAR && (o = n.arOverlayElement), !!o) {
585
586
  if (Array.isArray(e)) {
586
587
  let r = "";
587
588
  for (let a = 0; a < e.length; a++) {
@@ -920,7 +921,7 @@ function JL(s, e, t) {
920
921
  return s.lerp(e, t).normalize().multiplyScalar(o);
921
922
  }
922
923
  const Mf = new V(), R0 = new V().setFromAxisAngle(new y(0, 1, 0), Math.PI);
923
- function e2(s, e) {
924
+ function eD(s, e) {
924
925
  s.lookAt(e), s.quaternion.multiply(R0);
925
926
  }
926
927
  function gu(s, e, t = !0, i = !1) {
@@ -937,7 +938,7 @@ function gu(s, e, t = !0, i = !1) {
937
938
  }
938
939
  t && (n.y = o.y), s.lookAt(n), Number.isNaN(s.quaternion.x) && s.quaternion.copy(Mf);
939
940
  }
940
- function t2(s, e, t, i = 1) {
941
+ function tD(s, e, t, i = 1) {
941
942
  if (t) {
942
943
  const n = z(0, 0, 0), o = e.x / window.innerWidth * 2 - 1, r = -(e.y / window.innerHeight) * 2 + 1;
943
944
  n.set(
@@ -1012,7 +1013,7 @@ function Pc(s, e) {
1012
1013
  s.parent.getWorldScale(t), s.scale.copy(e), s.scale.divide(t);
1013
1014
  }
1014
1015
  const bC = new y(), Qy = new V();
1015
- function i2(s) {
1016
+ function iD(s) {
1016
1017
  return ve(s, Qy), bC.set(0, 0, 1).applyQuaternion(Qy);
1017
1018
  }
1018
1019
  const vC = new Yi(() => new y(), 100), Yy = new V();
@@ -1047,7 +1048,7 @@ function Vp(s, e = !0) {
1047
1048
  console.log(i + t.name + " <" + t.type + ">");
1048
1049
  }));
1049
1050
  }
1050
- function n2(s) {
1051
+ function nD(s) {
1051
1052
  let e = s?.name || "";
1052
1053
  if (!s) return e;
1053
1054
  let t = s.parent;
@@ -1170,7 +1171,7 @@ class xr {
1170
1171
  function PC(s) {
1171
1172
  return xr.copyTexture(s);
1172
1173
  }
1173
- function s2(s, e = !1) {
1174
+ function sD(s, e = !1) {
1174
1175
  return xr.textureToCanvas(s, e);
1175
1176
  }
1176
1177
  function OC(s) {
@@ -1544,10 +1545,10 @@ function L() {
1544
1545
  let s = Qi();
1545
1546
  return s || (s = window.location.hostname.endsWith(".local-credentialless.webcontainer.io")), Ef = s, s;
1546
1547
  }
1547
- function o2(s) {
1548
+ function oD(s) {
1548
1549
  Hp = s;
1549
1550
  }
1550
- let ri, qo = null, Un = null, Ol = !1, Jy = null;
1551
+ let ri, qo = null, zn = null, Ol = !1, Jy = null;
1551
1552
  const j0 = "terminal", DC = x("console");
1552
1553
  DC && B0();
1553
1554
  const jC = /* @__PURE__ */ Symbol("consoleParent");
@@ -1570,10 +1571,10 @@ function UC() {
1570
1571
  e_ = s, e && zC();
1571
1572
  }
1572
1573
  function zC() {
1573
- B0(), Un && (Un.setAttribute("error", "true"), Un.innerText = "🤬");
1574
+ B0(), zn && (zn.setAttribute("error", "true"), zn.innerText = "🤬");
1574
1575
  }
1575
1576
  function NC() {
1576
- Un && (Un.removeAttribute("error"), Un.innerText = j0);
1577
+ zn && (zn.removeAttribute("error"), zn.innerText = j0);
1577
1578
  }
1578
1579
  function $C(s = !1) {
1579
1580
  if (ri !== void 0 || Ol) return;
@@ -1589,8 +1590,8 @@ function $C(s = !1) {
1589
1590
  pluginOrder: ["default", "needle-console"]
1590
1591
  });
1591
1592
  const t = globalThis["needle:codegen_files"];
1592
- if (t && t.length > 0 && ri.addPlugin(WC()), ri.addPlugin(qC()), ri.addPlugin(XC()), qo = oP(), qo && (qo[jC] = qo.parentElement, qo.style.position = "absolute", qo.style.zIndex = Number.MAX_SAFE_INTEGER.toString()), ri.setSwitchPosition(20, 30), Un = sP(), Un) {
1593
- Un.innerText = j0, Un.addEventListener("click", NC);
1593
+ if (t && t.length > 0 && ri.addPlugin(WC()), ri.addPlugin(qC()), ri.addPlugin(XC()), qo = oP(), qo && (qo[jC] = qo.parentElement, qo.style.position = "absolute", qo.style.zIndex = Number.MAX_SAFE_INTEGER.toString()), ri.setSwitchPosition(20, 30), zn = sP(), zn) {
1594
+ zn.innerText = j0, zn.addEventListener("click", NC);
1594
1595
  const i = document.createElement("style"), n = 40;
1595
1596
  i.innerHTML = `
1596
1597
  #__vconsole .vc-switch {
@@ -1699,7 +1700,7 @@ function WC() {
1699
1700
  }), s;
1700
1701
  }
1701
1702
  const Gp = "padding: 10px; font-family: monospace;", t_ = "margin-bottom: 10px;", Xo = "margin-bottom: 10px; margin-top: 15px;", VC = "width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;", F0 = "border: 1px solid rgba(0,0,0,0.1); padding: 5px;", HC = F0, GC = F0 + " word-break: break-all;";
1702
- function In(s, e = !1) {
1703
+ function Ln(s, e = !1) {
1703
1704
  e && s.sort((i, n) => (n.value ? 1 : 0) - (i.value ? 1 : 0));
1704
1705
  let t = `<table style='${VC}'>`;
1705
1706
  t += "<tbody>";
@@ -1723,7 +1724,7 @@ function qC() {
1723
1724
  return s.on("renderTab", function(e) {
1724
1725
  let t = `<div style='${Gp}'>`;
1725
1726
  const i = nP();
1726
- t += `<h3 style='${t_}'>Device: ${i}</h3>`, t += In([
1727
+ t += `<h3 style='${t_}'>Device: ${i}</h3>`, t += Ln([
1727
1728
  { label: "💻 Desktop", value: j.isDesktop() },
1728
1729
  { label: "📱 Mobile Device", value: j.isMobileDevice() },
1729
1730
  { label: "🍎 iOS", value: j.isiOS() },
@@ -1742,7 +1743,7 @@ function qC() {
1742
1743
  const r = j.getChromeVersion();
1743
1744
  r && n.push({ label: "🌐 Chrome Version", value: r });
1744
1745
  const a = j.getSafariVersion();
1745
- a && n.push({ label: "🧭 Safari Version", value: a }), n.length > 0 && (t += In(n, !1)), t += "</div>", t += `<div style='${Gp} margin-top: 20px;'>`, t += `<h3 style='${t_}'>User Agent Info</h3>`;
1746
+ a && n.push({ label: "🧭 Safari Version", value: a }), n.length > 0 && (t += Ln(n, !1)), t += "</div>", t += `<div style='${Gp} margin-top: 20px;'>`, t += `<h3 style='${t_}'>User Agent Info</h3>`;
1746
1747
  const l = [
1747
1748
  { label: "User Agent", value: navigator.userAgent },
1748
1749
  { label: "Platform", value: navigator.platform },
@@ -1753,7 +1754,7 @@ function qC() {
1753
1754
  { label: "WebGPU", value: "gpu" in navigator ? "✅" : "❌" },
1754
1755
  { label: "WebGL 2", value: U0() }
1755
1756
  ];
1756
- t += In(l, !1), t += "</div>", e(t);
1757
+ t += Ln(l, !1), t += "</div>", e(t);
1757
1758
  }), s;
1758
1759
  }
1759
1760
  function XC() {
@@ -1762,19 +1763,19 @@ function XC() {
1762
1763
  return s.on("renderTab", async function(e) {
1763
1764
  let t = `<div style='${Gp}'>`;
1764
1765
  const i = QC();
1765
- i.length > 0 && (t += `<h3 style='${Xo}'>General GPU Info</h3>`, t += In(i, !1));
1766
+ i.length > 0 && (t += `<h3 style='${Xo}'>General GPU Info</h3>`, t += Ln(i, !1));
1766
1767
  const n = KC();
1767
- n.length > 0 && (t += `<h3 style='${Xo}'>WebGL</h3>`, t += In(n, !1));
1768
+ n.length > 0 && (t += `<h3 style='${Xo}'>WebGL</h3>`, t += Ln(n, !1));
1768
1769
  const o = ZC();
1769
- o.length > 0 && (t += `<h3 style='${Xo}'>WebGL 2 Features</h3>`, t += In(o, !1));
1770
+ o.length > 0 && (t += `<h3 style='${Xo}'>WebGL 2 Features</h3>`, t += Ln(o, !1));
1770
1771
  const r = JC();
1771
- r.length > 0 && (t += `<h3 style='${Xo}'>WebGL Limits</h3>`, t += In(r, !1));
1772
+ r.length > 0 && (t += `<h3 style='${Xo}'>WebGL Limits</h3>`, t += Ln(r, !1));
1772
1773
  const a = eP();
1773
- a.length > 0 && (t += `<h3 style='${Xo}'>Texture Formats</h3>`, t += In(a, !1));
1774
+ a.length > 0 && (t += `<h3 style='${Xo}'>Texture Formats</h3>`, t += Ln(a, !1));
1774
1775
  const l = await tP();
1775
- if (l.length > 0 && (t += `<h3 style='${Xo}'>WebGPU</h3>`, t += In(l, !1)), j.isSafari()) {
1776
+ if (l.length > 0 && (t += `<h3 style='${Xo}'>WebGPU</h3>`, t += Ln(l, !1)), j.isSafari()) {
1776
1777
  const c = iP();
1777
- c.length > 0 && (t += `<h3 style='${Xo}'>Safari GPU Info</h3>`, t += In(c, !1));
1778
+ c.length > 0 && (t += `<h3 style='${Xo}'>Safari GPU Info</h3>`, t += Ln(c, !1));
1778
1779
  }
1779
1780
  t += "</div>", e(t);
1780
1781
  }), s;
@@ -1912,11 +1913,11 @@ Co('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"]
1912
1913
  Co('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');
1913
1914
  Co('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');
1914
1915
  Co('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');
1915
- Co('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.12.1";');
1916
+ Co('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.12.2";');
1916
1917
  Co('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
1917
- Co('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Jan 30 2026 15:20:40 GMT+0000 (Coordinated Universal Time)";');
1918
+ Co('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Tue Feb 03 2026 12:48:47 GMT+0000 (Coordinated Universal Time)";');
1918
1919
  Co('globalThis["__NEEDLE_PUBLIC_KEY__"] = "' + NEEDLE_PUBLIC_KEY + '";');
1919
- const Xi = "4.12.1", Oc = "undefined", Md = "Fri Jan 30 2026 15:20:40 GMT+0000 (Coordinated Universal Time)";
1920
+ const Xi = "4.12.2", Oc = "undefined", Md = "Tue Feb 03 2026 12:48:47 GMT+0000 (Coordinated Universal Time)";
1920
1921
  N0 && console.log(`Engine version: ${Xi} (generator: ${Oc})
1921
1922
  Project built at ${Md}`);
1922
1923
  const hr = NEEDLE_PUBLIC_KEY, mo = "needle_isActiveInHierarchy", oa = "builtin_components", id = "needle_editor_guid";
@@ -1979,7 +1980,7 @@ function sg(s, e, t, i) {
1979
1980
  }
1980
1981
  }));
1981
1982
  }
1982
- function r2(s, e, t) {
1983
+ function rD(s, e, t) {
1983
1984
  const i = og(s, e);
1984
1985
  if (i)
1985
1986
  for (let n = i.length - 1; n >= 0; n--) {
@@ -2033,7 +2034,7 @@ const ja = [];
2033
2034
  function rg(s) {
2034
2035
  ja.indexOf(s) === -1 && ja.push(s);
2035
2036
  }
2036
- function a2(s) {
2037
+ function aD(s) {
2037
2038
  const e = ja.indexOf(s);
2038
2039
  e !== -1 && ja.splice(e, 1);
2039
2040
  }
@@ -2041,7 +2042,7 @@ const Ba = [];
2041
2042
  function G0(s) {
2042
2043
  Ba.indexOf(s) === -1 && Ba.push(s);
2043
2044
  }
2044
- function l2(s) {
2045
+ function lD(s) {
2045
2046
  const e = Ba.indexOf(s);
2046
2047
  e !== -1 && Ba.splice(e, 1);
2047
2048
  }
@@ -2160,7 +2161,7 @@ class wh extends KeyboardEvent {
2160
2161
  super.stopImmediatePropagation(), this.source?.stopImmediatePropagation();
2161
2162
  }
2162
2163
  }
2163
- class c2 {
2164
+ class cD {
2164
2165
  key;
2165
2166
  keyType;
2166
2167
  source;
@@ -3591,7 +3592,7 @@ function Po(s, e) {
3591
3592
  }
3592
3593
  }
3593
3594
  }
3594
- function kn(s, e) {
3595
+ function Mn(s, e) {
3595
3596
  e === ue.ContextCreated && Qp.delete(s), X0(s, e);
3596
3597
  }
3597
3598
  function X0(s, e) {
@@ -3642,10 +3643,10 @@ function bP(s) {
3642
3643
  return typeof s.guid == "function" ? s.guid() : null;
3643
3644
  }
3644
3645
  let lg;
3645
- function h2() {
3646
+ function hD() {
3646
3647
  return lg;
3647
3648
  }
3648
- function d2(s) {
3649
+ function dD(s) {
3649
3650
  lg = s;
3650
3651
  }
3651
3652
  function vP(s, e) {
@@ -3734,12 +3735,12 @@ class SP extends xP {
3734
3735
  }
3735
3736
  }
3736
3737
  }
3737
- var Ln = /* @__PURE__ */ ((s) => (s[s.OnConnection = 0] = "OnConnection", s[s.OnRoomJoin = 1] = "OnRoomJoin", s[s.Queued = 2] = "Queued", s[s.Immediate = 3] = "Immediate", s))(Ln || {});
3738
+ var Dn = /* @__PURE__ */ ((s) => (s[s.OnConnection = 0] = "OnConnection", s[s.OnRoomJoin = 1] = "OnRoomJoin", s[s.Queued = 2] = "Queued", s[s.Immediate = 3] = "Immediate", s))(Dn || {});
3738
3739
  const d_ = "https://urls.needle.tools/default-networking-backend/index";
3739
3740
  let ji = "wss://networking.needle.tools/socket";
3740
3741
  const gi = !!x("debugnet"), Ch = !!(gi || x("debugowner")), Ph = x("debugnetbin");
3741
3742
  var CP = /* @__PURE__ */ ((s) => (s.ConnectionInfo = "connection-start-info", s))(CP || {}), ie = /* @__PURE__ */ ((s) => (s.Join = "join-room", s.Leave = "leave-room", s.JoinedRoom = "joined-room", s.LeftRoom = "left-room", s.UserJoinedRoom = "user-joined-room", s.UserLeftRoom = "user-left-room", s.RoomStateSent = "room-state-sent", s))(ie || {});
3742
- class u2 {
3743
+ class uD {
3743
3744
  room;
3744
3745
  // room name
3745
3746
  viewId;
@@ -3747,11 +3748,11 @@ class u2 {
3747
3748
  inRoom;
3748
3749
  // connection ids
3749
3750
  }
3750
- class f2 {
3751
+ class fD {
3751
3752
  room;
3752
3753
  // room name
3753
3754
  }
3754
- class p2 {
3755
+ class pD {
3755
3756
  userId;
3756
3757
  }
3757
3758
  var PP = /* @__PURE__ */ ((s) => (s.RequestHasOwner = "request-has-owner", s.ResponseHasOwner = "response-has-owner", s.RequestIsOwner = "request-is-owner", s.ResponseIsOwner = "response-is-owner", s.RequestOwnership = "request-ownership", s.GainedOwnership = "gained-ownership", s.RemoveOwnership = "remove-ownership", s.LostOwnership = "lost-ownership", s.GainedOwnershipBroadcast = "gained-ownership-broadcast", s.LostOwnershipBroadcast = "lost-ownership-broadcast", s))(PP || {});
@@ -3912,15 +3913,15 @@ class OP {
3912
3913
  }
3913
3914
  /** Joins a networked room. If you don't want to manage a connection yourself you can use a `SyncedRoom` component as well */
3914
3915
  joinRoom(e, t = !1) {
3915
- return e ? e.length > 1024 ? (console.error('Room name too long, can not join: "' + e + '". Max length is 1024 characters.'), !1) : (this.isInRoom && this.currentRoomName !== e && console.warn("Needle Engine is already connected to a networking room. Connecting to multiple rooms is not supported"), this.connect(), gi && console.log("join: " + e), this.send("join-room", { room: e, viewOnly: t }, Ln.OnConnection), !0) : (console.error('Missing room name, can not join: "' + e + '"'), !1);
3916
+ return e ? e.length > 1024 ? (console.error('Room name too long, can not join: "' + e + '". Max length is 1024 characters.'), !1) : (this.isInRoom && this.currentRoomName !== e && console.warn("Needle Engine is already connected to a networking room. Connecting to multiple rooms is not supported"), this.connect(), gi && console.log("join: " + e), this.send("join-room", { room: e, viewOnly: t }, Dn.OnConnection), !0) : (console.error('Missing room name, can not join: "' + e + '"'), !1);
3916
3917
  }
3917
3918
  /** Use to leave a room that you are currently connected to (use `leaveRoom()` to disconnect from the currently active room but you can also specify a room name) */
3918
3919
  leaveRoom(e = null) {
3919
3920
  return e || (e = this.currentRoomName), e ? (this.send("leave-room", { room: e }), !0) : (console.error('Missing room name, can not join: "' + e + '"'), !1);
3920
3921
  }
3921
3922
  /** Send a message to the networking backend - it will broadcasted to all connected users in the same room by default */
3922
- send(e, t = null, i = Ln.Queued) {
3923
- if (t === null && (t = {}), i === Ln.Queued) {
3923
+ send(e, t = null, i = Dn.Queued) {
3924
+ if (t === null && (t = {}), i === Dn.Queued) {
3924
3925
  this._defaultMessagesBuffer.push({ key: e, value: t });
3925
3926
  return;
3926
3927
  }
@@ -3947,7 +3948,7 @@ class OP {
3947
3948
  for (const i in this._defaultMessagesBuffer) {
3948
3949
  const n = this._defaultMessagesBuffer[i];
3949
3950
  if (e <= 1) {
3950
- this.sendWithWebsocket(n.key, n.value, Ln.Immediate);
3951
+ this.sendWithWebsocket(n.key, n.value, Dn.Immediate);
3951
3952
  break;
3952
3953
  }
3953
3954
  const o = this.toMessage(n.key, n.value);
@@ -4070,7 +4071,7 @@ class OP {
4070
4071
  ` + ji);
4071
4072
  const o = await import("./vendor-DMZcbVO1.js").then((c) => c.index), r = o.default?.WebsocketBuilder ?? o.WebsocketBuilder, a = o.default?.ExponentialBackoff ?? o.ExponentialBackoff, l = new r(ji).withMaxRetries(10).withBackoff(new a(2e3, 4)).onOpen(() => {
4072
4073
  this._connectingToWebsocketPromise = null, this._ws = l, this.connected = !0, L() || gi ? console.log(`Connected to networking backend
4073
- ` + ji) : console.debug("Connected to networking backend", ji), n(!0), this.onSendQueued(Ln.OnConnection);
4074
+ ` + ji) : console.debug("Connected to networking backend", ji), n(!0), this.onSendQueued(Dn.OnConnection);
4074
4075
  }).onClose((c) => {
4075
4076
  this._connectingToWebsocketPromise = null, this.connected = !1, this._isInRoom = !1, n(!1);
4076
4077
  let h = "Websocket connection closed...";
@@ -4138,7 +4139,7 @@ class OP {
4138
4139
  a.searchParams.has("room") && a.searchParams.delete("room"), a.searchParams.set("view", this._currentRoomViewId), console.debug(`Room view id: ${this._currentRoomViewId}
4139
4140
  ${a.href}`);
4140
4141
  }
4141
- this.onSendQueued(Ln.OnRoomJoin), li.sendEvent(this.context, "networking", {
4142
+ this.onSendQueued(Dn.OnRoomJoin), li.sendEvent(this.context, "networking", {
4142
4143
  event: "joined_room",
4143
4144
  room: this._currentRoomName
4144
4145
  });
@@ -4190,7 +4191,7 @@ ${a.href}`);
4190
4191
  data: t
4191
4192
  };
4192
4193
  }
4193
- sendWithWebsocket(e, t, i = Ln.OnRoomJoin) {
4194
+ sendWithWebsocket(e, t, i = Dn.OnRoomJoin) {
4194
4195
  if (!this._ws) {
4195
4196
  const o = this._waitingForSocket[i] || [];
4196
4197
  o.push(() => this.sendWithWebsocket(e, t, i)), this._waitingForSocket[i] = o;
@@ -4368,7 +4369,7 @@ class Xa {
4368
4369
  static createText(e, t) {
4369
4370
  let i = null;
4370
4371
  const n = t?.font || RP(t?.familyFamily || null);
4371
- n instanceof l1 ? i = this.#t(e, n, t) : i == null && (i = new gn());
4372
+ n instanceof l1 ? i = this.#t(e, n, t) : i == null && (i = new yn());
4372
4373
  const o = t?.color || 16777215, r = new H(i, t?.material ?? new pt({ color: o }));
4373
4374
  return this.applyDefaultObjectOptions(r, t), n instanceof Promise ? n.then((a) => {
4374
4375
  r.geometry = this.#t(e, a, t), t?.onGeometry && t.onGeometry(r);
@@ -6404,7 +6405,7 @@ function ev() {
6404
6405
  }
6405
6406
  let jr = !0;
6406
6407
  bu === 0 && (jr = !1);
6407
- function m2(s) {
6408
+ function mD(s) {
6408
6409
  jr = s;
6409
6410
  }
6410
6411
  function HP() {
@@ -6415,7 +6416,7 @@ function GP(s, e) {
6415
6416
  s && (s[tv] = e, mr && console.warn("Set disposable", e, s));
6416
6417
  }
6417
6418
  const iv = /* @__PURE__ */ Symbol("disposed");
6418
- function g2(s) {
6419
+ function gD(s) {
6419
6420
  return s[iv] === !0;
6420
6421
  }
6421
6422
  function Te(s) {
@@ -6432,7 +6433,7 @@ function Te(s) {
6432
6433
  Te(s.geometry), Te(s.material), Te(s.customDepthMaterial), Te(s.customDistanceMaterial), s.visible = !1;
6433
6434
  else if (s instanceof M)
6434
6435
  s.visible = !1;
6435
- else if (s instanceof gn) {
6436
+ else if (s instanceof yn) {
6436
6437
  Xr(s);
6437
6438
  for (const e of Object.keys(s.attributes)) {
6438
6439
  const t = s.attributes[e];
@@ -6461,7 +6462,7 @@ function Te(s) {
6461
6462
  function Xr(s) {
6462
6463
  s && ((mr || ev() || bu) && console.warn("🧨 FREE", s), s instanceof ImageBitmap || "dispose" in s && typeof s.dispose == "function" && s.dispose());
6463
6464
  }
6464
- function y2(s) {
6465
+ function yD(s) {
6465
6466
  }
6466
6467
  const qP = /* @__PURE__ */ new Set();
6467
6468
  function nv(s, e, t = null, i) {
@@ -6472,7 +6473,7 @@ function nv(s, e, t = null, i) {
6472
6473
  i.has(o) || t?.call(null, o) !== !1 && (i.add(o), e && nv(o, !0, t, i));
6473
6474
  return i;
6474
6475
  }
6475
- function _2(s) {
6476
+ function _D(s) {
6476
6477
  return s[Vl];
6477
6478
  }
6478
6479
  const mr = x("debugresourceusers") || x("debugmemory"), Ec = /* @__PURE__ */ Symbol("needle-resource-users"), Vl = /* @__PURE__ */ Symbol("needle-resource-users-count");
@@ -6551,7 +6552,7 @@ class dg {
6551
6552
  }
6552
6553
  }
6553
6554
  const Tc = /* @__PURE__ */ Symbol("NEEDLE_NEED_UPDATE_INSTANCE"), sv = /* @__PURE__ */ Symbol("isUsingInstancing"), ov = /* @__PURE__ */ Symbol("instancingRenderer"), Hl = /* @__PURE__ */ Symbol("instancingAutoUpdateBounds");
6554
- class yn {
6555
+ class _n {
6555
6556
  /** Is this object rendered using a InstancedMesh */
6556
6557
  static isUsingInstancing(e) {
6557
6558
  return e[sv] === !0;
@@ -6563,7 +6564,7 @@ class yn {
6563
6564
  return e[ov] || null;
6564
6565
  }
6565
6566
  setAutoUpdateBounds(e, t) {
6566
- const i = yn.getRenderer(e);
6567
+ const i = _n.getRenderer(e);
6567
6568
  i && (i[Hl] = t);
6568
6569
  }
6569
6570
  // TODO: change this so it does not set matrix world directly but some flag that is only used by instancing
@@ -6571,7 +6572,7 @@ class yn {
6571
6572
  static markDirty(e, t = !0) {
6572
6573
  if (e && (this.isUsingInstancing(e) && (e[Tc] = !0, e.matrixWorldNeedsUpdate = !0), t))
6573
6574
  for (const i of e.children)
6574
- yn.markDirty(i, !0);
6575
+ _n.markDirty(i, !0);
6575
6576
  }
6576
6577
  }
6577
6578
  var Td;
@@ -6834,7 +6835,7 @@ function vu(s, e, t = !0, i) {
6834
6835
  }
6835
6836
  function cv(s, e, t) {
6836
6837
  const i = new iO(s);
6837
- t?.saveInRoom === !1 && (i.dontSave = !0), e.send("instance-destroyed", i, Ln.Queued);
6838
+ t?.saveInRoom === !1 && (i.dontSave = !0), e.send("instance-destroyed", i, Dn.Queued);
6838
6839
  }
6839
6840
  function nO(s) {
6840
6841
  s.connection.beginListen("instance-destroyed", (e) => {
@@ -6843,7 +6844,7 @@ function nO(s) {
6843
6844
  t && Ki(t);
6844
6845
  });
6845
6846
  }
6846
- class b2 {
6847
+ class bD {
6847
6848
  /** File to download */
6848
6849
  filename;
6849
6850
  /** Checksum to verify its the correct file */
@@ -7117,15 +7118,15 @@ class yO {
7117
7118
  return null;
7118
7119
  }
7119
7120
  }
7120
- const Dn = x("debugserializer");
7121
+ const jn = x("debugserializer");
7121
7122
  class _O {
7122
7123
  register(e, t) {
7123
7124
  if (this.typeMap.has(e)) {
7124
7125
  const i = this.typeMap.get(e);
7125
7126
  if (i === t) return;
7126
- Dn && console.warn("Type: " + e + " is already registered", t, i);
7127
+ jn && console.warn("Type: " + e + " is already registered", t, i);
7127
7128
  }
7128
- Dn && console.log("Register type serializer", t.name, t, e), this.typeMap.set(e, t);
7129
+ jn && console.log("Register type serializer", t.name, t, e), this.typeMap.set(e, t);
7129
7130
  }
7130
7131
  /** type > serializer map */
7131
7132
  typeMap = /* @__PURE__ */ new Map();
@@ -7136,22 +7137,22 @@ class _O {
7136
7137
  getSerializerForConstructor(e, t = 0) {
7137
7138
  if (t > 20) return;
7138
7139
  if (!e || !e.constructor) {
7139
- Dn && console.log("invalid type");
7140
+ jn && console.log("invalid type");
7140
7141
  return;
7141
7142
  }
7142
7143
  const i = e.name, n = this.getSerializer(e);
7143
7144
  if (n !== void 0)
7144
- return Dn && console.log("FOUND SERIALIZER", n?.name, e.name, e.constructor.name, "for type: " + i, n, e, this.typeMap), n;
7145
+ return jn && console.log("FOUND SERIALIZER", n?.name, e.name, e.constructor.name, "for type: " + i, n, e, this.typeMap), n;
7145
7146
  const o = Object.getPrototypeOf(e);
7146
7147
  if (o && o !== e) {
7147
7148
  const r = this.getSerializerForConstructor(o, ++t);
7148
7149
  if (r) {
7149
7150
  const a = o.constructor || o.prototype;
7150
- Dn && console.log("FOUND SERIALIZER(in constructor) " + a.constructor.name, a.name, a, r), this.register(a, r);
7151
+ jn && console.log("FOUND SERIALIZER(in constructor) " + a.constructor.name, a.name, a, r), this.register(a, r);
7151
7152
  }
7152
7153
  return r;
7153
7154
  }
7154
- Dn && console.warn("No serializer found for " + i, e, e.name, e.constructor.name);
7155
+ jn && console.warn("No serializer found for " + i, e, e.name, e.constructor.name);
7155
7156
  }
7156
7157
  }
7157
7158
  const Ld = new _O();
@@ -7184,7 +7185,7 @@ class bO {
7184
7185
  if (this.isDevMode && this.cache[e] === void 0) {
7185
7186
  this.cache[e] = Object.keys(t);
7186
7187
  const i = t;
7187
- i.$serializedTypes && Object.keys(i.$serializedTypes) && this.cache[e].push(...Object.keys(i.$serializedTypes)), Dn && console.log("registerDefinedKeys for " + e, this.cache[e], t);
7188
+ i.$serializedTypes && Object.keys(i.$serializedTypes) && this.cache[e].push(...Object.keys(i.$serializedTypes)), jn && console.log("registerDefinedKeys for " + e, this.cache[e], t);
7188
7189
  }
7189
7190
  }
7190
7191
  getDefinedKey(e, t) {
@@ -7258,7 +7259,7 @@ function nm(s, e, t) {
7258
7259
  return h ? sm(a, h, t, void 0, s[n]) : sm(a, l, t, void 0, s[n]);
7259
7260
  };
7260
7261
  const r = i[n], a = e[n];
7261
- if (Dn && console.log(n, a, s, r), !(s[n] !== void 0 && a === void 0) && (t.type = void 0, t.path = n, t.serializable = r, !(s.onBeforeDeserializeMember !== void 0 && s.onBeforeDeserializeMember(n, a, t) === !0))) {
7262
+ if (jn && console.log(n, a, s, r), !(s[n] !== void 0 && a === void 0) && (t.type = void 0, t.path = n, t.serializable = r, !(s.onBeforeDeserializeMember !== void 0 && s.onBeforeDeserializeMember(n, a, t) === !0))) {
7262
7263
  if (r === null)
7263
7264
  s[n] = a;
7264
7265
  else {
@@ -7341,14 +7342,14 @@ function SO(s, e) {
7341
7342
  if (typeof i == "object" && i !== null && i !== void 0) {
7342
7343
  const n = s[t];
7343
7344
  if (!n) {
7344
- Dn && console.log(t, "is undefined on", s);
7345
+ jn && console.log(t, "is undefined on", s);
7345
7346
  continue;
7346
7347
  }
7347
7348
  for (const o of Object.keys(i))
7348
7349
  if (n[o] === void 0 && k_(i[o]) && !k_(n)) {
7349
7350
  const a = CO(n, o);
7350
7351
  if (a && (a?.writable === void 0 || a?.writable === !1) && a.set === void 0) {
7351
- Dn && console.warn('Property is not writable "' + o + '"', n, a, i[o], n[o]);
7352
+ jn && console.warn('Property is not writable "' + o + '"', n, a, i[o], n[o]);
7352
7353
  continue;
7353
7354
  }
7354
7355
  n[o] = i[o];
@@ -7380,7 +7381,7 @@ function sm(s, e, t, i, n) {
7380
7381
  } catch (h) {
7381
7382
  console.error("Error in callback", h, s);
7382
7383
  }
7383
- if (t.type = r, !o && n && (n instanceof be || n instanceof H || n instanceof gn || n instanceof Oi))
7384
+ if (t.type = r, !o && n && (n instanceof be || n instanceof H || n instanceof yn || n instanceof Oi))
7384
7385
  return n;
7385
7386
  if (i || (i = {
7386
7387
  serializer: Ld.getSerializerForConstructor(r)
@@ -7833,7 +7834,7 @@ function zO(s, e) {
7833
7834
  s[sv] = e;
7834
7835
  }
7835
7836
  function yg(s) {
7836
- return yn.isUsingInstancing(s);
7837
+ return _n.isUsingInstancing(s);
7837
7838
  }
7838
7839
  function xv(s, e) {
7839
7840
  return Cc(s, e, !0, !0);
@@ -8727,7 +8728,7 @@ function* Ov(s, e = null) {
8727
8728
  for (; t.time - i < s; )
8728
8729
  yield;
8729
8730
  }
8730
- function* v2(s) {
8731
+ function* vD(s) {
8731
8732
  for (let e = 0; e < s; e++)
8732
8733
  yield;
8733
8734
  }
@@ -8737,7 +8738,7 @@ function* KO(s) {
8737
8738
  yield;
8738
8739
  }
8739
8740
  const A_ = "NEEDLE_lightmaps", Qr = x("debuglightmapsextension") || x("debuglightmaps");
8740
- var jn = /* @__PURE__ */ ((s) => (s[s.Lightmap = 0] = "Lightmap", s[s.Skybox = 1] = "Skybox", s[s.Reflection = 2] = "Reflection", s))(jn || {});
8741
+ var Bn = /* @__PURE__ */ ((s) => (s[s.Lightmap = 0] = "Lightmap", s[s.Skybox = 1] = "Skybox", s[s.Reflection = 2] = "Reflection", s))(Bn || {});
8741
8742
  class ZO {
8742
8743
  get name() {
8743
8744
  return A_;
@@ -8780,7 +8781,7 @@ class ZO {
8780
8781
  }
8781
8782
  resolveTexture(e, t) {
8782
8783
  const i = t;
8783
- Qr && console.log("Light Texture loaded:", i), i?.isTexture && (this.registry ? (i.colorSpace = Es, this.registry.registerTexture(this.source, e.type, i, e.index)) : console.log(jn[e.type], e.pointer, i));
8784
+ Qr && console.log("Light Texture loaded:", i), i?.isTexture && (this.registry ? (i.colorSpace = Es, this.registry.registerTexture(this.source, e.type, i, e.index)) : console.log(Bn[e.type], e.pointer, i));
8784
8785
  }
8785
8786
  }
8786
8787
  const Yr = !!x("debuglightmaps");
@@ -8794,27 +8795,27 @@ class JO {
8794
8795
  this.context = e;
8795
8796
  }
8796
8797
  registerTexture(e, t, i, n) {
8797
- Yr && console.log("Registering ", jn[t] + ' "' + e + '"', i), this.map.has(e) || this.map.set(e, /* @__PURE__ */ new Map());
8798
+ Yr && console.log("Registering ", Bn[t] + ' "' + e + '"', i), this.map.has(e) || this.map.set(e, /* @__PURE__ */ new Map());
8798
8799
  const o = this.map.get(e), r = o?.get(t) ?? [];
8799
8800
  r.length < n && (r.length = n + 1), GP(i, !1), r[n] = i, o?.set(t, r);
8800
8801
  }
8801
8802
  tryGetLightmap(e, t = 0) {
8802
- return this.tryGet(e, jn.Lightmap, t);
8803
+ return this.tryGet(e, Bn.Lightmap, t);
8803
8804
  }
8804
8805
  tryGetSkybox(e) {
8805
- return Yr && console.log("[Get Skybox]", e, this.map), this.tryGet(e, jn.Skybox, 0);
8806
+ return Yr && console.log("[Get Skybox]", e, this.map), this.tryGet(e, Bn.Skybox, 0);
8806
8807
  }
8807
8808
  tryGetReflection(e) {
8808
- return Yr && console.log("[Get Reflection]", e, this.map), this.tryGet(e, jn.Reflection, 0);
8809
+ return Yr && console.log("[Get Reflection]", e, this.map), this.tryGet(e, Bn.Reflection, 0);
8809
8810
  }
8810
8811
  tryGet(e, t, i) {
8811
8812
  if (!e)
8812
8813
  return Yr && console.warn("Missing source id"), null;
8813
8814
  const n = this.map.get(e);
8814
8815
  if (!n)
8815
- return Yr && console.warn(`[Lighting] No ${jn[t]} texture entry for`, e), null;
8816
+ return Yr && console.warn(`[Lighting] No ${Bn[t]} texture entry for`, e), null;
8816
8817
  const o = n.get(t);
8817
- return o === void 0 ? (Yr && console.warn(`[Lighting] No ${jn[t]} texture for`, e, "index", i), null) : !o?.length || o.length <= i ? null : o[i];
8818
+ return o === void 0 ? (Yr && console.warn(`[Lighting] No ${Bn[t]} texture for`, e, "index", i), null) : !o?.length || o.length <= i ? null : o[i];
8818
8819
  }
8819
8820
  }
8820
8821
  Kt.lights_fragment_maps = Kt.lights_fragment_maps.replace("vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );", `
@@ -9632,7 +9633,7 @@ async function F_(s) {
9632
9633
  }
9633
9634
  return Th.set(s, null), null;
9634
9635
  }
9635
- class zn {
9636
+ class mn {
9636
9637
  static _instance;
9637
9638
  /**
9638
9639
  * Get access to the default HTML button factory.
@@ -9648,11 +9649,11 @@ class zn {
9648
9649
  * If you want to create a new factory and create new button instances instead of shared buttons, use `ButtonsFactory.create()` instead
9649
9650
  */
9650
9651
  static getOrCreate() {
9651
- return this._instance || (this._instance = new zn()), this._instance;
9652
+ return this._instance || (this._instance = new mn()), this._instance;
9652
9653
  }
9653
9654
  /** create a new buttons factory */
9654
9655
  static create() {
9655
- return new zn();
9656
+ return new mn();
9656
9657
  }
9657
9658
  _fullscreenButton;
9658
9659
  /**
@@ -9720,12 +9721,12 @@ class zn {
9720
9721
  * The QR code will be generated with the current URL when the button is clicked
9721
9722
  * @returns the QR code button element
9722
9723
  */
9723
- createQRCode() {
9724
+ createQRCode(e) {
9724
9725
  if (this._qrButton) return this._qrButton;
9725
- const e = this, t = document.createElement("button");
9726
- this._qrButton = t, t.innerText = "QR Code", t.prepend(Ft("qr_code")), t.title = "Scan this QR code with your phone to open this page", this.hideElementDuringXRSession(t);
9727
- const i = document.createElement("div");
9728
- i.style.cssText = `
9726
+ const t = this, i = document.createElement("button");
9727
+ this._qrButton = i, i.innerText = "QR Code", i.prepend(Ft("qr_code")), i.title = "Scan this QR code with your phone to open this page", this.hideElementDuringXRSession(i);
9728
+ const n = document.createElement("div");
9729
+ n.style.cssText = `
9729
9730
  position: fixed;
9730
9731
  display: inline-block;
9731
9732
  padding: 0.5rem;
@@ -9735,36 +9736,36 @@ class zn {
9735
9736
  z-index: 1000;
9736
9737
  box-shadow: 0 0 12px rgba(0, 0, 0, 0.2);
9737
9738
  `;
9738
- const n = document.createElement("div");
9739
- n.classList.add("qr-code-container"), i.appendChild(n), t.addEventListener("click", () => {
9740
- if (i.parentNode) return r();
9741
- L() && window.location.href.includes("://localhost") && _e("To access your website from another device in the same local network you have to use the IP address instead of localhost. The IP address is logged in your development server console when you start the server."), o();
9739
+ const o = document.createElement("div");
9740
+ o.classList.add("qr-code-container"), n.appendChild(o), i.addEventListener("click", () => {
9741
+ if (n.parentNode) return a();
9742
+ L() && window.location.href.includes("://localhost") && _e("To access your website from another device in the same local network you have to use the IP address instead of localhost. The IP address is logged in your development server console when you start the server."), r();
9742
9743
  });
9743
- async function o() {
9744
- await a();
9745
- const c = document.body.querySelector("needle-engine") || document.body;
9746
- c.appendChild(i);
9747
- const h = n.getBoundingClientRect(), d = t.getBoundingClientRect();
9748
- i.style.left = d.left + d.width * 0.5 - h.width * 0.5 + "px";
9749
- const f = d.top < h.height, p = "1.3rem";
9750
- f ? i.style.top = `calc(${d.bottom}px + ${i.style.padding} + 0.0rem)` : i.style.top = `calc(${d.top - h.height}px - ${i.style.padding} - ${p})`, i.style.opacity = "0", i.style.pointerEvents = "all", i.style.transition = "opacity 0.2s ease-in-out", setTimeout(() => {
9751
- i.style.opacity = "1", window.addEventListener("click", r, { once: !0 });
9752
- }), window.addEventListener("resize", r), window.addEventListener("scroll", r), document.fullscreenElement ? document.fullscreenElement.appendChild(i) : c.appendChild(i);
9753
- }
9754
- function r() {
9755
- i.style.pointerEvents = "none", i.style.transition = "opacity 0.2s", i.style.opacity = "0", setTimeout(() => i.parentNode?.removeChild(i), 500), window.removeEventListener("click", r), window.removeEventListener("resize", r), window.removeEventListener("scroll", r);
9756
- }
9757
- async function a() {
9758
- const c = await xk({
9759
- text: e.qrButtonUrl,
9744
+ async function r() {
9745
+ await l();
9746
+ const c = document.body.querySelector("needle-engine"), h = e?.anchorElement?.parentElement || c || document.body;
9747
+ h.appendChild(n);
9748
+ const d = o.getBoundingClientRect(), f = i.getBoundingClientRect();
9749
+ n.style.left = f.left + f.width * 0.5 - d.width * 0.5 + "px";
9750
+ const p = f.top < d.height, g = "1.3rem";
9751
+ p ? n.style.top = `calc(${f.bottom}px + ${n.style.padding} + 0.0rem)` : n.style.top = `calc(${f.top - d.height}px - ${n.style.padding} - ${g})`, n.style.opacity = "0", n.style.pointerEvents = "all", n.style.transition = "opacity 0.2s ease-in-out", setTimeout(() => {
9752
+ n.style.opacity = "1", window.addEventListener("click", a, { once: !0 });
9753
+ }), window.addEventListener("resize", a), window.addEventListener("scroll", a), document.fullscreenElement ? document.fullscreenElement.appendChild(n) : h.appendChild(n);
9754
+ }
9755
+ function a() {
9756
+ n.style.pointerEvents = "none", n.style.transition = "opacity 0.2s", n.style.opacity = "0", setTimeout(() => n.parentNode?.removeChild(n), 500), window.removeEventListener("click", a), window.removeEventListener("resize", a), window.removeEventListener("scroll", a);
9757
+ }
9758
+ async function l() {
9759
+ const h = await xk({
9760
+ text: t.qrButtonUrl,
9760
9761
  width: 200,
9761
9762
  height: 200
9762
9763
  });
9763
- n.innerHTML = "", n.appendChild(c);
9764
+ o.innerHTML = "", o.appendChild(h);
9764
9765
  }
9765
- return t.addEventListener("pointerenter", () => {
9766
- a();
9767
- }, { once: !0 }), t;
9766
+ return i.addEventListener("pointerenter", () => {
9767
+ l();
9768
+ }, { once: !0 }), i;
9768
9769
  }
9769
9770
  hideElementDuringXRSession(e) {
9770
9771
  rg((t) => {
@@ -10254,10 +10255,10 @@ let kk = class {
10254
10255
  */
10255
10256
  showQRCodeButton(e) {
10256
10257
  if (e === "desktop-only" && (e = !j.isMobileDevice()), e) {
10257
- const t = zn.getOrCreate().createQRCode();
10258
+ const t = mn.getOrCreate().createQRCode();
10258
10259
  return t.style.display = "", this._menu.appendChild(t), t;
10259
10260
  } else {
10260
- const t = zn.getOrCreate().qrButton;
10261
+ const t = mn.getOrCreate().qrButton;
10261
10262
  return t && (t.style.display = "none"), t ?? null;
10262
10263
  }
10263
10264
  }
@@ -10269,7 +10270,7 @@ let kk = class {
10269
10270
  this._muteButton?.remove();
10270
10271
  return;
10271
10272
  }
10272
- this._muteButton = zn.getOrCreate().createMuteButton(this._context), this._muteButton.setAttribute("priority", "100"), this._menu.appendChild(this._muteButton);
10273
+ this._muteButton = mn.getOrCreate().createMuteButton(this._context), this._muteButton.setAttribute("priority", "100"), this._menu.appendChild(this._muteButton);
10273
10274
  }
10274
10275
  _muteButton;
10275
10276
  showFullscreenOption(e) {
@@ -10277,7 +10278,7 @@ let kk = class {
10277
10278
  this._fullscreenButton?.remove();
10278
10279
  return;
10279
10280
  }
10280
- this._fullscreenButton = zn.getOrCreate().createFullscreenButton(this._context), this._fullscreenButton && (this._fullscreenButton.setAttribute("priority", "150"), this._menu.appendChild(this._fullscreenButton));
10281
+ this._fullscreenButton = mn.getOrCreate().createFullscreenButton(this._context), this._fullscreenButton && (this._fullscreenButton.setAttribute("priority", "150"), this._menu.appendChild(this._fullscreenButton));
10281
10282
  }
10282
10283
  _fullscreenButton;
10283
10284
  appendChild(e) {
@@ -10947,8 +10948,8 @@ class Cu extends HTMLElement {
10947
10948
  }
10948
10949
  }
10949
10950
  customElements.get(or) || customElements.define(or, Cu);
10950
- const Ye = x("debugcontext"), Mk = x("stats"), Rk = x("debugactive"), Ek = x("debugframerate"), Tk = x("debugcoroutine"), x2 = {};
10951
- class S2 {
10951
+ const Ye = x("debugcontext"), Mk = x("stats"), Rk = x("debugactive"), Ek = x("debugframerate"), Tk = x("debugcoroutine"), xD = {};
10952
+ class SD {
10952
10953
  name;
10953
10954
  /** for debugging only */
10954
10955
  alias;
@@ -11435,7 +11436,7 @@ class N {
11435
11436
  * or when the web component is removed from the DOM
11436
11437
  */
11437
11438
  clear() {
11438
- pe.dispatchCallback(ue.ContextClearing, this), kn(this, ue.ContextClearing), Ki(this.scene, !0, !0), this.scene = new ki(), this.addressables?.dispose(), this.lightmaps?.clear(), this.physics?.engine?.clearCaches(), this.lodsManager.disable(), this._onBeforeRenderListeners.clear(), this._onAfterRenderListeners.clear(), this.isManagedExternally || this.renderer && (this.renderer.renderLists.dispose(), this.renderer.state.reset(), this.renderer.resetState()), pe.dispatchCallback(ue.ContextCleared, this);
11439
+ pe.dispatchCallback(ue.ContextClearing, this), Mn(this, ue.ContextClearing), Ki(this.scene, !0, !0), this.scene = new ki(), this.addressables?.dispose(), this.lightmaps?.clear(), this.physics?.engine?.clearCaches(), this.lodsManager.disable(), this._onBeforeRenderListeners.clear(), this._onAfterRenderListeners.clear(), this.isManagedExternally || this.renderer && (this.renderer.renderLists.dispose(), this.renderer.state.reset(), this.renderer.resetState()), pe.dispatchCallback(ue.ContextCleared, this);
11439
11440
  }
11440
11441
  /**
11441
11442
  * Dispose all allocated resources and clears the scene. This is automatically called e.g. when the `<needle-engine>` component is removed from the DOM.
@@ -11448,14 +11449,14 @@ class N {
11448
11449
  this.internalOnDestroy();
11449
11450
  }
11450
11451
  internalOnDestroy() {
11451
- N.Current = this, pe.dispatchCallback(ue.ContextDestroying, this), kn(this, ue.ContextDestroying), this.clear(), this.renderer?.setAnimationLoop(null), this.renderer && (this.renderer.setClearAlpha(0), this.renderer.clear(), this.isManagedExternally || (Ye && console.log("Disposing renderer"), this.renderer.dispose())), this.scene = null, this.renderer = null, this.input.dispose(), this.menu.onDestroy(), this.animations.onDestroy();
11452
+ N.Current = this, pe.dispatchCallback(ue.ContextDestroying, this), Mn(this, ue.ContextDestroying), this.clear(), this.renderer?.setAnimationLoop(null), this.renderer && (this.renderer.setClearAlpha(0), this.renderer.clear(), this.isManagedExternally || (Ye && console.log("Disposing renderer"), this.renderer.dispose())), this.scene = null, this.renderer = null, this.input.dispose(), this.menu.onDestroy(), this.animations.onDestroy();
11452
11453
  for (const e of this._disposeCallbacks)
11453
11454
  try {
11454
11455
  e();
11455
11456
  } catch (t) {
11456
11457
  console.error("Error in on dispose callback:", t, e);
11457
11458
  }
11458
- this.domElement?.parentElement && this.domElement.parentElement.removeChild(this.domElement), this._isCreated = !1, pe.dispatchCallback(ue.ContextDestroyed, this), kn(this, ue.ContextDestroyed), pe.unregister(this), N.Current === this && (N.Current = null);
11459
+ this.domElement?.parentElement && this.domElement.parentElement.removeChild(this.domElement), this._isCreated = !1, pe.dispatchCallback(ue.ContextDestroyed, this), Mn(this, ue.ContextDestroyed), pe.unregister(this), N.Current === this && (N.Current = null);
11459
11460
  }
11460
11461
  /** @internal Automatically called by components when you call `startCoroutine`. Use `startCoroutine` instead */
11461
11462
  registerCoroutineUpdate(e, t, i) {
@@ -11665,7 +11666,7 @@ Possible solutions:
11665
11666
  if (e?.abortSignal?.aborted)
11666
11667
  return !1;
11667
11668
  const c = this.rootSourceId;
11668
- return c && this.sceneLighting.enable(c), kn(this, ue.ContextCreated), Ye && console.log("Context Created...", this.renderer, this.renderer.domElement), this._isCreating = !1, !this.isManagedExternally && !e?.abortSignal?.aborted && this.restartRenderLoop(), !0;
11669
+ return c && this.sceneLighting.enable(c), Mn(this, ue.ContextCreated), Ye && console.log("Context Created...", this.renderer, this.renderer.domElement), this._isCreating = !1, !this.isManagedExternally && !e?.abortSignal?.aborted && this.restartRenderLoop(), !0;
11669
11670
  }
11670
11671
  rootSceneSourceIdentifiers = [];
11671
11672
  async internalLoadInitialContent(e, t) {
@@ -11823,7 +11824,7 @@ Possible solutions:
11823
11824
  this._accumulatedTime = 0;
11824
11825
  }
11825
11826
  if (this._stats?.begin(), N.Current = this, this.onHandlePaused()) return !1;
11826
- for (N.Current = this, this.time.update(), Ek && console.log("FPS", this.time.smoothedFps.toFixed(0)), Ad(this), nd(this.scene), rv(this), kn(
11827
+ for (N.Current = this, this.time.update(), Ek && console.log("FPS", this.time.smoothedFps.toFixed(0)), Ad(this), nd(this.scene), rv(this), Mn(
11827
11828
  this,
11828
11829
  -1
11829
11830
  /* Start */
@@ -11848,7 +11849,7 @@ Possible solutions:
11848
11849
  this.executeCoroutines(
11849
11850
  0
11850
11851
  /* EarlyUpdate */
11851
- ), kn(
11852
+ ), Mn(
11852
11853
  this,
11853
11854
  0
11854
11855
  /* EarlyUpdate */
@@ -11860,7 +11861,7 @@ Possible solutions:
11860
11861
  this.executeCoroutines(
11861
11862
  1
11862
11863
  /* Update */
11863
- ), kn(
11864
+ ), Mn(
11864
11865
  this,
11865
11866
  1
11866
11867
  /* Update */
@@ -11872,7 +11873,7 @@ Possible solutions:
11872
11873
  if (this.executeCoroutines(
11873
11874
  2
11874
11875
  /* LateUpdate */
11875
- ), kn(
11876
+ ), Mn(
11876
11877
  this,
11877
11878
  2
11878
11879
  /* LateUpdate */
@@ -11885,7 +11886,7 @@ Possible solutions:
11885
11886
  if (this.executeCoroutines(
11886
11887
  3
11887
11888
  /* OnBeforeRender */
11888
- ), kn(
11889
+ ), Mn(
11889
11890
  this,
11890
11891
  3
11891
11892
  /* OnBeforeRender */
@@ -11924,7 +11925,7 @@ Possible solutions:
11924
11925
  if (this.executeCoroutines(
11925
11926
  4
11926
11927
  /* OnAfterRender */
11927
- ), kn(
11928
+ ), Mn(
11928
11929
  this,
11929
11930
  4
11930
11931
  /* OnAfterRender */
@@ -12031,10 +12032,10 @@ Target Framerate: ` + this.targetFrameRate);
12031
12032
  function Tv(s, e) {
12032
12033
  return Ds(s, ue.ContextCreated, e), () => Po(s, ue.ContextCreated);
12033
12034
  }
12034
- function C2(s, e) {
12035
+ function CD(s, e) {
12035
12036
  return Ds(s, ue.ContextClearing, e), () => Po(s, ue.ContextClearing);
12036
12037
  }
12037
- function P2(s, e) {
12038
+ function PD(s, e) {
12038
12039
  return Ds(s, ue.ContextDestroying, e), () => Po(s, ue.ContextDestroying);
12039
12040
  }
12040
12041
  function wg(s, e) {
@@ -12043,17 +12044,17 @@ function wg(s, e) {
12043
12044
  function Ak(s, e) {
12044
12045
  return Ds(s, Se.Update, e), () => Po(s, Se.Update);
12045
12046
  }
12046
- function O2(s, e) {
12047
+ function OD(s, e) {
12047
12048
  return Ds(s, Se.OnBeforeRender, e), () => Po(s, Se.OnBeforeRender);
12048
12049
  }
12049
- function k2(s, e) {
12050
+ function kD(s, e) {
12050
12051
  return Ds(s, Se.OnAfterRender, e), () => Po(s, Se.OnAfterRender);
12051
12052
  }
12052
12053
  const Rt = x("debuglicense"), Av = [];
12053
- let _n = "basic";
12054
- Rt && console.log("License Type: " + _n);
12054
+ let bn = "basic";
12055
+ Rt && console.log("License Type: " + bn);
12055
12056
  function ks() {
12056
- switch (_n) {
12057
+ switch (bn) {
12057
12058
  case "pro":
12058
12059
  case "enterprise":
12059
12060
  return !0;
@@ -12061,10 +12062,10 @@ function ks() {
12061
12062
  return !1;
12062
12063
  }
12063
12064
  function Pu() {
12064
- return _n === "indie";
12065
+ return bn === "indie";
12065
12066
  }
12066
12067
  function xg() {
12067
- return _n === "edu";
12068
+ return bn === "edu";
12068
12069
  }
12069
12070
  function yo() {
12070
12071
  return ks() || Pu() || xg();
@@ -12127,7 +12128,7 @@ var li;
12127
12128
  let l = a?.domElement;
12128
12129
  if (l || (l = document.querySelector("needle-engine")), !l && !a) return !1;
12129
12130
  const c = l?.getAttribute("no-telemetry");
12130
- return (c === "" || c === "true" || c === "1") && (_n === "pro" || _n === "enterprise") ? (Rt && console.debug("Telemetry is disabled via no-telemetry attribute"), !1) : !0;
12131
+ return (c === "" || c === "true" || c === "1") && (bn === "pro" || bn === "enterprise") ? (Rt && console.debug("Telemetry is disabled via no-telemetry attribute"), !1) : !0;
12131
12132
  }
12132
12133
  s.isAllowed = t;
12133
12134
  const i = "dabb8317376f";
@@ -12210,18 +12211,18 @@ pe.registerCallback(ue.ContextRegistered, (s) => {
12210
12211
  let zd, dm = !1, um = "";
12211
12212
  async function Lk() {
12212
12213
  if (zd) return zd;
12213
- if (_n === "basic")
12214
+ if (bn === "basic")
12214
12215
  try {
12215
12216
  const s = "https://needle.tools/api/v1/needle-engine/check?location=" + encodeURIComponent(window.location.href) + "&version=" + Xi + "&generator=" + encodeURIComponent(Oc), e = await fetch(s, {
12216
12217
  method: "GET"
12217
12218
  }).catch((t) => {
12218
12219
  Rt && console.error("License check failed", t);
12219
12220
  });
12220
- e?.status === 200 ? (dm = !1, Rt && console.log("License check succeeded"), _n = "pro", Ah(!0)) : e?.status === 403 ? (Ah(!1), dm = !0, um = await e.text()) : (Ah(!1), Rt && console.log("License check failed with status " + e?.status));
12221
+ e?.status === 200 ? (dm = !1, Rt && console.log("License check succeeded"), bn = "pro", Ah(!0)) : e?.status === 403 ? (Ah(!1), dm = !0, um = await e.text()) : (Ah(!1), Rt && console.log("License check failed with status " + e?.status));
12221
12222
  } catch (s) {
12222
12223
  Ah(!1), Rt && console.error("License check failed", s);
12223
12224
  }
12224
- else Rt && console.log('Runtime license check is skipped because license is already applied as "' + _n + '"');
12225
+ else Rt && console.log('Runtime license check is skipped because license is already applied as "' + bn + '"');
12225
12226
  }
12226
12227
  zd = Lk();
12227
12228
  async function Dk(s) {
@@ -12297,7 +12298,7 @@ function fm(s) {
12297
12298
  padding: 10px;
12298
12299
  padding-left: 30px;
12299
12300
  `;
12300
- if (_n === "edu")
12301
+ if (bn === "edu")
12301
12302
  console.log("%c This project is supported by Needle for Education – https://needle.tools", e);
12302
12303
  else
12303
12304
  return;
@@ -12373,7 +12374,7 @@ async function Fk(s) {
12373
12374
  const e = "https://needle.tools/api/v1/needle-engine/ping";
12374
12375
  if (e) {
12375
12376
  const t = window.location.href.split("?")[0], n = {
12376
- license: _n,
12377
+ license: bn,
12377
12378
  url: t,
12378
12379
  hostname: window.location.hostname,
12379
12380
  pathname: window.location.pathname,
@@ -12451,7 +12452,7 @@ function H_(s) {
12451
12452
  const _o = x("debughotreload");
12452
12453
  let Ac = !1;
12453
12454
  const dc = /* @__PURE__ */ new Map();
12454
- function M2() {
12455
+ function MD() {
12455
12456
  return Ac;
12456
12457
  }
12457
12458
  function G_() {
@@ -12493,7 +12494,7 @@ function $k() {
12493
12494
  s.apply(console, e);
12494
12495
  };
12495
12496
  }
12496
- function R2(s) {
12497
+ function RD(s) {
12497
12498
  _o && console.log("[HMR] Apply changes", s, Object.keys(s)), $k();
12498
12499
  for (const e of Object.keys(s))
12499
12500
  try {
@@ -13247,7 +13248,7 @@ class E {
13247
13248
  return !1;
13248
13249
  }
13249
13250
  }
13250
- const E2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
13251
+ const ED = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
13251
13252
  __proto__: null,
13252
13253
  Behaviour: E,
13253
13254
  Component: E,
@@ -13608,7 +13609,7 @@ function Xk(s) {
13608
13609
  const e = s[hd];
13609
13610
  return e !== void 0 && e.size > 0;
13610
13611
  }
13611
- class A2 {
13612
+ class AD {
13612
13613
  _context;
13613
13614
  get context() {
13614
13615
  return this._context ?? N.Current;
@@ -13649,7 +13650,7 @@ function Qk(s, e) {
13649
13650
  }
13650
13651
  var ir = /* @__PURE__ */ ((s) => (s[s.If = 1] = "If", s[s.IfNot = 2] = "IfNot", s[s.Greater = 3] = "Greater", s[s.Less = 4] = "Less", s[s.Equals = 6] = "Equals", s[s.NotEqual = 7] = "NotEqual", s))(ir || {}), Bv = /* @__PURE__ */ ((s) => (s[s.Float = 1] = "Float", s[s.Int = 3] = "Int", s[s.Bool = 4] = "Bool", s[s.Trigger = 9] = "Trigger", s))(Bv || {});
13651
13652
  const it = x("debuganimatorcontroller"), Lh = x("debugrootmotion");
13652
- class bn {
13653
+ class vn {
13653
13654
  /**
13654
13655
  * Creates an AnimatorController from a set of animation clips.
13655
13656
  * Each clip becomes a state in the controller's state machine.
@@ -13700,7 +13701,7 @@ class bn {
13700
13701
  }
13701
13702
  }]
13702
13703
  };
13703
- return new bn(n);
13704
+ return new vn(n);
13704
13705
  }
13705
13706
  /**
13706
13707
  * Plays an animation state by name or hash.
@@ -13956,8 +13957,8 @@ class bn {
13956
13957
  if (typeof this.model == "string")
13957
13958
  return console.warn("AnimatorController has not been resolved, can not create model from string", this.model), null;
13958
13959
  it && console.warn("AnimatorController clone()", this.model);
13959
- const e = pu(this.model, (i, n, o) => o == null ? !0 : !(o.type === "Object3D" || o.isObject3D === !0 || CC(o) || o.tracks !== void 0 || o instanceof bn));
13960
- return console.assert(e !== this.model), new bn(e);
13960
+ const e = pu(this.model, (i, n, o) => o == null ? !0 : !(o.type === "Object3D" || o.isObject3D === !0 || CC(o) || o.tracks !== void 0 || o instanceof vn));
13961
+ return console.assert(e !== this.model), new vn(e);
13961
13962
  }
13962
13963
  /**
13963
13964
  * Updates the controller's state machine and animations.
@@ -14353,11 +14354,11 @@ class Kk extends sn {
14353
14354
  onSerialize(e, t) {
14354
14355
  }
14355
14356
  onDeserialize(e, t) {
14356
- if (t.type === bn && e?.__type === "AnimatorController")
14357
- return new bn(e);
14357
+ if (t.type === vn && e?.__type === "AnimatorController")
14358
+ return new vn(e);
14358
14359
  }
14359
14360
  }
14360
- new Kk(bn);
14361
+ new Kk(vn);
14361
14362
  var Zk = Object.defineProperty, Jk = Object.getOwnPropertyDescriptor, ku = (s, e, t, i) => {
14362
14363
  for (var n = i > 1 ? void 0 : i ? Jk(e, t) : e, o = s.length - 1, r; o >= 0; o--)
14363
14364
  (r = s[o]) && (n = (i ? r(e, t, n) : r(n)) || n);
@@ -14375,7 +14376,7 @@ class Tt extends E {
14375
14376
  hasRootMotion = !1;
14376
14377
  keepAnimatorControllerStateOnDisable = !1;
14377
14378
  set runtimeAnimatorController(e) {
14378
- this._animatorController && this._animatorController.model === e || (e ? e instanceof bn ? (e.animator && e.animator !== this && (console.warn("AnimatorController can not be bound to multiple animators", e.model?.name), e.model || console.error("AnimatorController has no model"), e = new bn(e.model)), this._animatorController = e, this._animatorController.bind(this)) : (Ui && console.log("Assign animator controller", e, this), this._animatorController = new bn(e), this.__didAwake && this._animatorController.bind(this)) : this._animatorController = null);
14379
+ this._animatorController && this._animatorController.model === e || (e ? e instanceof vn ? (e.animator && e.animator !== this && (console.warn("AnimatorController can not be bound to multiple animators", e.model?.name), e.model || console.error("AnimatorController has no model"), e = new vn(e.model)), this._animatorController = e, this._animatorController.bind(this)) : (Ui && console.log("Assign animator controller", e, this), this._animatorController = new vn(e), this.__didAwake && this._animatorController.bind(this)) : this._animatorController = null);
14379
14380
  }
14380
14381
  /**
14381
14382
  * Gets the current animator controller instance
@@ -15141,7 +15142,7 @@ function rM(s, e, t, i, n) {
15141
15142
  };
15142
15143
  }
15143
15144
  }
15144
- const L2 = function(s) {
15145
+ const LD = function(s) {
15145
15146
  return function(e, t, i) {
15146
15147
  let n = "";
15147
15148
  typeof t == "string" ? n = t : n = t.name;
@@ -15499,15 +15500,15 @@ new y();
15499
15500
  new y();
15500
15501
  const eo = x("debugsync"), Ic = "STRS";
15501
15502
  Y0(Ic, vs.getRootAsSyncedTransformModel);
15502
- const Mn = new Jm();
15503
+ const Rn = new Jm();
15503
15504
  function Uv(s, e, t = !0) {
15504
- Mn.clear();
15505
- const i = Mn.createString(s);
15506
- vs.startSyncedTransformModel(Mn), vs.addGuid(Mn, i), vs.addFast(Mn, t);
15505
+ Rn.clear();
15506
+ const i = Rn.createString(s);
15507
+ vs.startSyncedTransformModel(Rn), vs.addGuid(Rn, i), vs.addFast(Rn, t);
15507
15508
  const n = e.worldPosition, o = e.worldEuler, r = e.gameObject.scale;
15508
- vs.addTransform(Mn, Fv.createTransform(Mn, n.x, n.y, n.z, o.x, o.y, o.z, r.x, r.y, r.z));
15509
- const a = vs.endSyncedTransformModel(Mn);
15510
- return Mn.finish(a, Ic), Mn.asUint8Array();
15509
+ vs.addTransform(Rn, Fv.createTransform(Rn, n.x, n.y, n.z, o.x, o.y, o.z, r.x, r.y, r.z));
15510
+ const a = vs.endSyncedTransformModel(Rn);
15511
+ return Rn.finish(a, Ic), Rn.asUint8Array();
15511
15512
  }
15512
15513
  let pm = 0, uc = 0;
15513
15514
  Ak((s) => {
@@ -15592,7 +15593,7 @@ class Kn extends E {
15592
15593
  eo && console.log("new data", this.context.connection.connectionId, this.context.time.frameCount, this.guid, e), this.receivedUpdate = !0, this._receivedFastUpdate = e.fast();
15593
15594
  const t = e.transform();
15594
15595
  if (t) {
15595
- yn.markDirty(this.gameObject, !0);
15596
+ _n.markDirty(this.gameObject, !0);
15596
15597
  const i = t.position();
15597
15598
  i && (this.interpolatePosition && this._targetPosition?.set(i.x(), i.y(), i.z()), (!this.interpolatePosition || !this._receivedDataBefore) && this.setWorldPosition(i.x(), i.y(), i.z()));
15598
15599
  const n = t.rotation();
@@ -15636,7 +15637,7 @@ class Kn extends E {
15636
15637
  const e = this.worldPosition, t = this.worldQuaternion, i = this.gameObject.scale;
15637
15638
  if (this._model.isOwned && !this.receivedUpdate) {
15638
15639
  const r = this._model.hasOwnership || this.fastMode ? 1e-4 : 1e-3;
15639
- (e.distanceTo(this.lastPosition) > r || t.angleTo(this.lastRotation) > r || i.distanceTo(this.lastScale) > r) && (this._model.hasOwnership ? this._needsUpdate = !0 : (eo && console.log(this.guid, "reset because not owned but", this.gameObject.name, this.lastPosition), this.worldPosition = this.lastPosition, e.copy(this.lastPosition), this.worldQuaternion = this.lastRotation, t.copy(this.lastRotation), this.gameObject.scale.copy(this.lastScale), yn.markDirty(this.gameObject, !0), this._needsUpdate = !1));
15640
+ (e.distanceTo(this.lastPosition) > r || t.angleTo(this.lastRotation) > r || i.distanceTo(this.lastScale) > r) && (this._model.hasOwnership ? this._needsUpdate = !0 : (eo && console.log(this.guid, "reset because not owned but", this.gameObject.name, this.lastPosition), this.worldPosition = this.lastPosition, e.copy(this.lastPosition), this.worldQuaternion = this.lastRotation, t.copy(this.lastRotation), this.gameObject.scale.copy(this.lastScale), _n.markDirty(this.gameObject, !0), this._needsUpdate = !1));
15640
15641
  }
15641
15642
  if (this._model && !this._model.hasOwnership && this._model.isOwned && this._receivedDataBefore) {
15642
15643
  const r = this._receivedFastUpdate || this.fastMode ? 0.5 : 0.3;
@@ -15649,7 +15650,7 @@ class Kn extends E {
15649
15650
  const l = this.worldQuaternion;
15650
15651
  l.slerp(this._targetRotation, r), this.worldQuaternion = l, a = !0;
15651
15652
  }
15652
- a && yn.markDirty(this.gameObject, !0);
15653
+ a && _n.markDirty(this.gameObject, !0);
15653
15654
  }
15654
15655
  if (this.receivedUpdate = !1, this.lastPosition.copy(e), this.lastRotation.copy(t), this.lastScale.copy(i), !this._model || !this._model || this._model.hasOwnership === void 0 || !this._model.hasOwnership)
15655
15656
  return;
@@ -15928,7 +15929,7 @@ class dM extends sn {
15928
15929
  return e.a !== void 0 ? { r: e.r, g: e.g, b: e.b, a: e.a } : { r: e.r, g: e.g, b: e.b };
15929
15930
  }
15930
15931
  }
15931
- const D2 = new dM();
15932
+ const DD = new dM();
15932
15933
  class uM extends sn {
15933
15934
  constructor() {
15934
15935
  super([lt], "EulerSerializer");
@@ -15945,7 +15946,7 @@ class uM extends sn {
15945
15946
  return { x: e.x, y: e.y, z: e.z, order: e.order };
15946
15947
  }
15947
15948
  }
15948
- const j2 = new uM();
15949
+ const jD = new uM();
15949
15950
  class fM extends sn {
15950
15951
  constructor() {
15951
15952
  super(M, "ObjectSerializer");
@@ -16123,7 +16124,7 @@ Could not find method ${r.method} on object ${l.name}`, l, typeof l[r.method]);
16123
16124
  // };
16124
16125
  // }
16125
16126
  }
16126
- const B2 = new gM(), Nd = /* @__PURE__ */ new WeakMap(), yM = Fe.prototype.clone;
16127
+ const BD = new gM(), Nd = /* @__PURE__ */ new WeakMap(), yM = Fe.prototype.clone;
16127
16128
  Fe.prototype.clone = function() {
16128
16129
  const s = yM.call(this);
16129
16130
  return Nd.has(s) || Nd.set(s, this), s;
@@ -17676,7 +17677,7 @@ class co extends E {
17676
17677
  e && (e.removeFromParent(), e.filter && e.filter.disconnect(), e.gain && e.gain.disconnect());
17677
17678
  }
17678
17679
  }
17679
- var AM = Object.defineProperty, IM = Object.getOwnPropertyDescriptor, wn = (s, e, t, i) => {
17680
+ var AM = Object.defineProperty, IM = Object.getOwnPropertyDescriptor, xn = (s, e, t, i) => {
17680
17681
  for (var n = i > 1 ? void 0 : i ? IM(e, t) : e, o = s.length - 1, r; o >= 0; o--)
17681
17682
  (r = s[o]) && (n = (i ? r(e, t, n) : r(n)) || n);
17682
17683
  return i && n && AM(e, t, n), n;
@@ -17975,37 +17976,37 @@ Using the assigned clip instead:`, this.clip), e = this.clip);
17975
17976
  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, xt && console.log("Audio clip ended", this.clip), this.dispatchEvent(new CustomEvent("ended", { detail: this })));
17976
17977
  }
17977
17978
  };
17978
- wn([
17979
+ xn([
17979
17980
  u(URL)
17980
17981
  ], on.prototype, "clip", 2);
17981
- wn([
17982
+ xn([
17982
17983
  u()
17983
17984
  ], on.prototype, "playOnAwake", 2);
17984
- wn([
17985
+ xn([
17985
17986
  u()
17986
17987
  ], on.prototype, "preload", 2);
17987
- wn([
17988
+ xn([
17988
17989
  u()
17989
17990
  ], on.prototype, "playInBackground", 2);
17990
- wn([
17991
+ xn([
17991
17992
  u()
17992
17993
  ], on.prototype, "loop", 1);
17993
- wn([
17994
+ xn([
17994
17995
  u()
17995
17996
  ], on.prototype, "spatialBlend", 1);
17996
- wn([
17997
+ xn([
17997
17998
  u()
17998
17999
  ], on.prototype, "minDistance", 1);
17999
- wn([
18000
+ xn([
18000
18001
  u()
18001
18002
  ], on.prototype, "maxDistance", 1);
18002
- wn([
18003
+ xn([
18003
18004
  u()
18004
18005
  ], on.prototype, "volume", 1);
18005
- wn([
18006
+ xn([
18006
18007
  u()
18007
18008
  ], on.prototype, "pitch", 1);
18008
- wn([
18009
+ xn([
18009
18010
  u()
18010
18011
  ], on.prototype, "rollOffMode", 2);
18011
18012
  let Ji = on;
@@ -18118,7 +18119,7 @@ var Rg = /* @__PURE__ */ ((s) => (s[s.None = 0] = "None", s[s.DontExport = 1] =
18118
18119
  function BM(s) {
18119
18120
  return s && s.isComponent;
18120
18121
  }
18121
- const F2 = /* @__PURE__ */ Symbol("object"), Kf = new Yi(() => new y(), 20);
18122
+ const FD = /* @__PURE__ */ Symbol("object"), Kf = new Yi(() => new y(), 20);
18122
18123
  class FM {
18123
18124
  _point;
18124
18125
  _normal;
@@ -19090,7 +19091,7 @@ var nR = Object.defineProperty, fi = (s, e, t, i) => {
19090
19091
  (r = s[o]) && (n = r(e, t, n) || n);
19091
19092
  return n && nR(e, t, n), n;
19092
19093
  };
19093
- class xn extends E {
19094
+ class Sn extends E {
19094
19095
  /**
19095
19096
  * Identifies this component as a collider.
19096
19097
  * @internal
@@ -19143,20 +19144,20 @@ class xn extends E {
19143
19144
  }
19144
19145
  fi([
19145
19146
  u(Ke)
19146
- ], xn.prototype, "attachedRigidbody");
19147
+ ], Sn.prototype, "attachedRigidbody");
19147
19148
  fi([
19148
19149
  u()
19149
- ], xn.prototype, "isTrigger");
19150
+ ], Sn.prototype, "isTrigger");
19150
19151
  fi([
19151
19152
  u()
19152
- ], xn.prototype, "sharedMaterial");
19153
+ ], Sn.prototype, "sharedMaterial");
19153
19154
  fi([
19154
19155
  u()
19155
- ], xn.prototype, "membership");
19156
+ ], Sn.prototype, "membership");
19156
19157
  fi([
19157
19158
  u()
19158
- ], xn.prototype, "filter");
19159
- class qc extends xn {
19159
+ ], Sn.prototype, "filter");
19160
+ class qc extends Sn {
19160
19161
  radius = 0.5;
19161
19162
  center = new y(0, 0, 0);
19162
19163
  /**
@@ -19185,7 +19186,7 @@ fi([
19185
19186
  fi([
19186
19187
  u(y)
19187
19188
  ], qc.prototype, "center");
19188
- const Ig = class Qv extends xn {
19189
+ const Ig = class Qv extends Sn {
19189
19190
  /**
19190
19191
  * Creates and adds a BoxCollider to the given object.
19191
19192
  * @param obj The object to add the collider to
@@ -19239,7 +19240,7 @@ fi([
19239
19240
  u(y)
19240
19241
  ], Ig.prototype, "center");
19241
19242
  let Lg = Ig;
19242
- class Ur extends xn {
19243
+ class Ur extends Sn {
19243
19244
  sharedMesh;
19244
19245
  convex = !1;
19245
19246
  /**
@@ -19281,7 +19282,7 @@ fi([
19281
19282
  fi([
19282
19283
  u()
19283
19284
  ], Ur.prototype, "convex");
19284
- class xo extends xn {
19285
+ class xo extends Sn {
19285
19286
  center = new y(0, 0, 0);
19286
19287
  radius = 0.5;
19287
19288
  height = 2;
@@ -19912,7 +19913,7 @@ const ko = class zi extends E {
19912
19913
  for (const t of this._draggingRigidbodies)
19913
19914
  t.wakeUp(), t.resetVelocities(), t.resetForcesAndTorques();
19914
19915
  const e = this._targetObject || this.gameObject;
19915
- yn.markDirty(e);
19916
+ _n.markDirty(e);
19916
19917
  }
19917
19918
  /**
19918
19919
  * Called when the last pointer has been removed from this object.
@@ -20301,7 +20302,7 @@ class ew {
20301
20302
  _rbs = [];
20302
20303
  _groundLine;
20303
20304
  _groundMarker;
20304
- static geometry = new gn().setFromPoints([new y(0, 0, 0), new y(0, -1, 0)]);
20305
+ static geometry = new yn().setFromPoints([new y(0, 0, 0), new y(0, -1, 0)]);
20305
20306
  constructor(e) {
20306
20307
  this._camera = e;
20307
20308
  const t = new Ta(ew.geometry), i = t.material;
@@ -20369,7 +20370,7 @@ class ew {
20369
20370
  }
20370
20371
  }
20371
20372
  var dR = /* @__PURE__ */ ((s) => (s.File_Spawned = "file-spawned", s))(dR || {});
20372
- class U2 {
20373
+ class UD {
20373
20374
  guid;
20374
20375
  file_name;
20375
20376
  file_hash;
@@ -20807,7 +20808,7 @@ class vR {
20807
20808
  }
20808
20809
  typeof window < "u" && window.addEventListener("unhandledrejection", (s) => {
20809
20810
  });
20810
- const Rn = gt, Bh = "$___Export_Components", wR = "NEEDLE_components";
20811
+ const En = gt, Bh = "$___Export_Components", wR = "NEEDLE_components";
20811
20812
  class xR {
20812
20813
  [oa];
20813
20814
  }
@@ -20852,18 +20853,18 @@ class iw {
20852
20853
  return !i || i.length <= 0 ? !1 : (delete e.userData.components, e[Bh] = i, !0);
20853
20854
  }
20854
20855
  afterSerializeUserData(e, t) {
20855
- if (e.type === "Scene" && Rn && console.log("DONE", JSON.stringify(t)), e[Bh] === void 0) return;
20856
+ if (e.type === "Scene" && En && console.log("DONE", JSON.stringify(t)), e[Bh] === void 0) return;
20856
20857
  const i = e[Bh];
20857
20858
  delete e[Bh], i !== null && (e.userData.components = i);
20858
20859
  }
20859
20860
  writeNode(e, t) {
20860
20861
  const i = this.writer.json.nodes.length;
20861
- Rn && console.log(e.name, i, e.uuid);
20862
+ En && console.log(e.name, i, e.uuid);
20862
20863
  const n = new SR(e, i, t);
20863
20864
  this.exportContext[i] = n, this.objectToNodeMap[e.uuid] = i;
20864
20865
  }
20865
20866
  afterParse(e) {
20866
- Rn && console.log("AFTER", e);
20867
+ En && console.log("AFTER", e);
20867
20868
  for (const t in this.exportContext) {
20868
20869
  const i = this.exportContext[t], n = i.node, o = i.nodeDef, r = i.nodeIndex, a = n.userData?.components;
20869
20870
  if (!a || a.length <= 0) continue;
@@ -20875,7 +20876,7 @@ class iw {
20875
20876
  const d = Qn().writeBuiltinComponentData(h, this.context);
20876
20877
  d !== null && c.push(d);
20877
20878
  }
20878
- c.length > 0 && (l[oa] = c, Rn && console.log("DID WRITE", n, "nodeIndex", r, c));
20879
+ c.length > 0 && (l[oa] = c, En && console.log("DID WRITE", n, "nodeIndex", r, c));
20879
20880
  }
20880
20881
  }
20881
20882
  // -------------------------------------
@@ -20885,14 +20886,14 @@ class iw {
20885
20886
  /** The loaded gltf */
20886
20887
  gltf = null;
20887
20888
  beforeRoot() {
20888
- return Rn && console.log("BEGIN LOAD"), this.nodeToObjectMap = {}, null;
20889
+ return En && console.log("BEGIN LOAD"), this.nodeToObjectMap = {}, null;
20889
20890
  }
20890
20891
  async afterRoot(e) {
20891
20892
  this.gltf = e;
20892
20893
  const t = e.parser, i = t?.extensions;
20893
20894
  if (!i) return;
20894
20895
  const n = i[this.name];
20895
- Rn && console.log("After root", e, this.parser, i);
20896
+ En && console.log("After root", e, this.parser, i);
20896
20897
  const o = [];
20897
20898
  if (n === !0) {
20898
20899
  const r = t.json.nodes;
@@ -20906,7 +20907,7 @@ class iw {
20906
20907
  if (!h) continue;
20907
20908
  const d = h[this.name];
20908
20909
  if (!d) continue;
20909
- Rn && console.log("NODE", l);
20910
+ En && console.log("NODE", l);
20910
20911
  const f = this.nodeToObjectMap[c];
20911
20912
  if (!f) {
20912
20913
  console.error("Could not find object for node index: " + c, l, t);
@@ -20930,10 +20931,10 @@ class iw {
20930
20931
  const o = n[oa];
20931
20932
  if (o) {
20932
20933
  const r = new Array();
20933
- Rn && console.log(i.name, o);
20934
+ En && console.log(i.name, o);
20934
20935
  for (const a in o) {
20935
20936
  const l = o[a];
20936
- if (Rn && console.log("Serialized data", JSON.parse(JSON.stringify(l))), (l?.name === "MeshRenderer" || l?.name === "SkinnedMeshRenderer") && !l.sharedMaterials) {
20937
+ if (En && console.log("Serialized data", JSON.parse(JSON.stringify(l))), (l?.name === "MeshRenderer" || l?.name === "SkinnedMeshRenderer") && !l.sharedMaterials) {
20937
20938
  let c = !1;
20938
20939
  if ("mesh" in t) {
20939
20940
  const h = t.mesh;
@@ -20942,7 +20943,7 @@ class iw {
20942
20943
  d?.primitives && (l.sharedMaterials = d.primitives.map((f) => "/materials/" + (f.material ?? 0)), c = !0);
20943
20944
  }
20944
20945
  }
20945
- !c && (Rn || L()) && console.warn(`[NEEDLE_components] Component '${l.name}' on object '${i.name}' is not added to a mesh or failed to retrieve materials from glTF.`);
20946
+ !c && (En || L()) && console.warn(`[NEEDLE_components] Component '${l.name}' on object '${i.name}' is not added to a mesh or failed to retrieve materials from glTF.`);
20946
20947
  }
20947
20948
  l && this.parser && r.push(
20948
20949
  pg(this.parser, l).catch((c) => console.error(`Error while resolving references (see console for details)
@@ -21060,7 +21061,7 @@ class ym extends E {
21060
21061
  _hemisphereLightObj;
21061
21062
  awake() {
21062
21063
  if (this.sourceId) {
21063
- const t = this.environmentReflectionSource === lm.Skybox ? jn.Skybox : jn.Reflection, i = this.context.lightmaps.tryGet(this.sourceId, t, 0);
21064
+ const t = this.environmentReflectionSource === lm.Skybox ? Bn.Skybox : Bn.Reflection, i = this.context.lightmaps.tryGet(this.sourceId, t, 0);
21064
21065
  this._hasReflection = i != null, i && this.context.sceneLighting.internalRegisterReflection(this.sourceId, i);
21065
21066
  }
21066
21067
  this.enabled = !1, this.context.sceneLighting.internalRegisterSceneLightSettings(this), ca && window.addEventListener("keydown", (t) => {
@@ -21100,7 +21101,7 @@ class ym extends E {
21100
21101
  }
21101
21102
  }
21102
21103
  var nw = /* @__PURE__ */ ((s) => (s[s.INT = 5124] = "INT", s[s.FLOAT = 5126] = "FLOAT", s[s.FLOAT_VEC2 = 35664] = "FLOAT_VEC2", s[s.FLOAT_VEC3 = 35665] = "FLOAT_VEC3", s[s.FLOAT_VEC4 = 35666] = "FLOAT_VEC4", s[s.INT_VEC2 = 35667] = "INT_VEC2", s[s.INT_VEC3 = 35668] = "INT_VEC3", s[s.INT_VEC4 = 35669] = "INT_VEC4", s[s.BOOL = 35670] = "BOOL", s[s.BOOL_VEC2 = 35671] = "BOOL_VEC2", s[s.BOOL_VEC3 = 35672] = "BOOL_VEC3", s[s.BOOL_VEC4 = 35673] = "BOOL_VEC4", s[s.FLOAT_MAT2 = 35674] = "FLOAT_MAT2", s[s.FLOAT_MAT3 = 35675] = "FLOAT_MAT3", s[s.FLOAT_MAT4 = 35676] = "FLOAT_MAT4", s[s.SAMPLER_2D = 35678] = "SAMPLER_2D", s[s.SAMPLER_3D = 35680] = "SAMPLER_3D", s[s.SAMPLER_CUBE = 35681] = "SAMPLER_CUBE", s[s.UNKNOWN = 0] = "UNKNOWN", s))(nw || {});
21103
- const An = x("debugcustomshader"), Zr = "NEEDLE_techniques_webgl";
21104
+ const In = x("debugcustomshader"), Zr = "NEEDLE_techniques_webgl";
21104
21105
  class OR {
21105
21106
  objectToWorldMatrix = new J();
21106
21107
  worldToObjectMatrix = new J();
@@ -21118,7 +21119,7 @@ class Ee extends o0 {
21118
21119
  return sw(e), e;
21119
21120
  }
21120
21121
  constructor(e, ...t) {
21121
- super(...t), this.identifier = e, An && 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) && N.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback);
21122
+ super(...t), this.identifier = e, In && 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) && N.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback);
21122
21123
  }
21123
21124
  dispose() {
21124
21125
  super.dispose();
@@ -21245,22 +21246,22 @@ class kR {
21245
21246
  loadMaterial(e) {
21246
21247
  const t = this.parser.json.materials[e];
21247
21248
  if (!t)
21248
- return An && console.log(e, this.parser.json.materials), null;
21249
+ return In && console.log(e, this.parser.json.materials), null;
21249
21250
  if (!t.extensions || !t.extensions[Zr])
21250
- return An && console.log(`Material ${e} does not use NEEDLE_techniques_webgl`), null;
21251
- An && console.log(`Material ${e} uses NEEDLE_techniques_webgl`, t);
21251
+ return In && console.log(`Material ${e} does not use NEEDLE_techniques_webgl`), null;
21252
+ In && console.log(`Material ${e} uses NEEDLE_techniques_webgl`, t);
21252
21253
  const i = t.extensions[Zr].technique;
21253
21254
  if (i < 0)
21254
21255
  return console.debug(`Material ${e} does not have a valid technique index`), null;
21255
21256
  const n = this.parser.json.extensions[Zr];
21256
21257
  if (!n)
21257
- return An ? console.error("Missing shader data", this.parser.json.extensions) : console.debug("Missing custom shader data in parser.json.extensions"), null;
21258
- An && console.log(n);
21258
+ return In ? console.error("Missing shader data", this.parser.json.extensions) : console.debug("Missing custom shader data in parser.json.extensions"), null;
21259
+ In && console.log(n);
21259
21260
  const o = n.techniques[i];
21260
21261
  return o ? new Promise(async (r, a) => {
21261
21262
  const l = await lk(n, o.program), c = l?.fragmentShader, h = l?.vertexShader;
21262
21263
  if (!c || !h) return a();
21263
- An && console.log("loadMaterial", t, l);
21264
+ In && console.log("loadMaterial", t, l);
21264
21265
  const d = {}, f = o.uniforms;
21265
21266
  (h.includes("_Time") || c.includes("_Time")) && (d._Time = { value: new me(0, 0, 0, 0) }), (h.includes("_SinTime") || c.includes("_SinTime")) && (d._SinTime = { value: new me(0, 0, 0, 0) }), (h.includes("_CosTime") || c.includes("_CosTime")) && (d._CosTime = { value: new me(0, 0, 0, 0) }), (h.includes("unity_DeltaTime") || c.includes("unity_DeltaTime")) && (d.unity_DeltaTime = { value: new me(0, 0, 0, 0) });
21266
21267
  for (const w in f) {
@@ -21300,7 +21301,7 @@ class kR {
21300
21301
  if (t.extensions && t.extensions[Zr]) {
21301
21302
  const w = t.extensions[Zr];
21302
21303
  if (w.technique === i) {
21303
- An && console.log(t.name, "Material Properties", w);
21304
+ In && console.log(t.name, "Material Properties", w);
21304
21305
  for (const b in w.values) {
21305
21306
  const v = w.values[b];
21306
21307
  if (typeof v == "string") {
@@ -21380,13 +21381,13 @@ class kR {
21380
21381
  const b = w, v = f[w].type;
21381
21382
  d[b]?.value === void 0 && (v === nw.SAMPLER_2D ? (d[b] = { value: sk }, console.warn("Missing/unassigned texture, fallback to white: " + b)) : b === "unity_OrthoParams" || console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: " + b, f[w]));
21382
21383
  }
21383
- An && console.log(g.uuid, d), sw(g), r(g);
21384
+ In && console.log(g.uuid, d), sw(g), r(g);
21384
21385
  }) : null;
21385
21386
  }
21386
21387
  }
21387
21388
  function sw(s) {
21388
21389
  if (s.uniforms) {
21389
- An && console.log("Uniforms:", s.uniforms);
21390
+ In && console.log("Uniforms:", s.uniforms);
21390
21391
  for (const t in s.uniforms)
21391
21392
  e(t, t), t === "_Color" && e("color", t);
21392
21393
  }
@@ -21404,10 +21405,10 @@ let Gd;
21404
21405
  const RR = import("./vendor-DMZcbVO1.js").then((s) => s.index$2).then(async (s) => (Gd = s.GLTFAnimationPointerExtension, Gd)).catch((s) => {
21405
21406
  console.warn("Failed to import GLTFLoaderAnimationPointer. Please use @needle-tools/three-animationpointer for full KHR_animation support", s);
21406
21407
  }), Pr = new Array();
21407
- function z2(s) {
21408
+ function zD(s) {
21408
21409
  Pr.includes(s) || Pr.push(s);
21409
21410
  }
21410
- function N2(s) {
21411
+ function ND(s) {
21411
21412
  const e = Pr.indexOf(s);
21412
21413
  e >= 0 && Pr.splice(e, 1);
21413
21414
  }
@@ -22070,7 +22071,7 @@ const ts = class fd extends E {
22070
22071
  */
22071
22072
  static isInstanced(e) {
22072
22073
  const t = Qa(e, fd);
22073
- return t ? t.isInstancingActive : yn.isUsingInstancing(e);
22074
+ return t ? t.isInstancingActive : _n.isUsingInstancing(e);
22074
22075
  }
22075
22076
  /** Set the rendering state only of an object (makes it visible or invisible) without affecting component state or child hierarchy visibility! You can also just enable/disable the Renderer component on that object for the same effect!
22076
22077
  *
@@ -22268,7 +22269,7 @@ const ts = class fd extends E {
22268
22269
  return !0;
22269
22270
  }
22270
22271
  start() {
22271
- if (this.enableInstancing && !hb && (this.setInstancingEnabled(!0), yn.markDirty(this.gameObject)), this.gameObject.frustumCulled = this.allowOcclusionWhenDynamic, this.isMultiMaterialObject(this.gameObject))
22272
+ if (this.enableInstancing && !hb && (this.setInstancingEnabled(!0), _n.markDirty(this.gameObject)), this.gameObject.frustumCulled = this.allowOcclusionWhenDynamic, this.isMultiMaterialObject(this.gameObject))
22272
22273
  for (let e = 0; e < this.gameObject.children.length; e++) {
22273
22274
  const t = this.gameObject.children[e];
22274
22275
  t.frustumCulled = this.allowOcclusionWhenDynamic;
@@ -24826,7 +24827,7 @@ class _E {
24826
24827
  return this.sortedActions || this.organize(), this.sortedActions[e.uuid];
24827
24828
  }
24828
24829
  }
24829
- const Bn = x("debugusdzanimation"), xm = x("debugusdzanimationserialization");
24830
+ const Fn = x("debugusdzanimation"), xm = x("debugusdzanimationserialization");
24830
24831
  class ur {
24831
24832
  _start;
24832
24833
  get start() {
@@ -25077,7 +25078,7 @@ class Wg {
25077
25078
  const i = e.uuid + (t?.uuid ?? "-rest");
25078
25079
  if (this.rootAndClipToRegisteredAnimationMap.has(i))
25079
25080
  return this.rootAndClipToRegisteredAnimationMap.get(i);
25080
- Bn && console.log("registerAnimation", e, t);
25081
+ Fn && console.log("registerAnimation", e, t);
25081
25082
  const n = this.injectRestPoses ? 1 : 0, o = (this.rootToRegisteredClip.get(e)?.length ?? 0) + n, r = this.rootTargetMap.get(e), a = new Set(r);
25082
25083
  if (t && t.tracks)
25083
25084
  for (const c of t.tracks) {
@@ -25096,7 +25097,7 @@ class Wg {
25096
25097
  let p = f[o];
25097
25098
  p || (p = new $e(e, d, t), f[o] = p), p.addTrack(c), r?.includes(d) || r?.push(d);
25098
25099
  }
25099
- Bn && console.log("Unregistered nodes for this clip", a, "clip", t, "at slot", o, "for root", e, "targets", r);
25100
+ Fn && console.log("Unregistered nodes for this clip", a, "clip", t, "at slot", o, "for root", e, "targets", r);
25100
25101
  for (const c of a) {
25101
25102
  const h = this.dict.get(c);
25102
25103
  if (!h) continue;
@@ -25106,10 +25107,10 @@ class Wg {
25106
25107
  h[0] = f;
25107
25108
  }
25108
25109
  let d = h[o];
25109
- d || (Bn && console.log("Adding padding clip for ", c, t, "at slot", o), d = new $e(e, c, t), h[o] = d);
25110
+ d || (Fn && console.log("Adding padding clip for ", c, t, "at slot", o), d = new $e(e, c, t), h[o] = d);
25110
25111
  }
25111
25112
  const l = new ur(this, e, t);
25112
- if (this.rootAndClipToRegisteredAnimationMap.set(i, l), Bn && console.log({ root: e, clip: t, info: l }), t) {
25113
+ if (this.rootAndClipToRegisteredAnimationMap.set(i, l), Fn && console.log({ root: e, clip: t, info: l }), t) {
25113
25114
  const c = this.rootToRegisteredClip.get(e);
25114
25115
  if (c ? c.push(t) : this.rootToRegisteredClip.set(e, [t]), !this.clipToStartTime.get(t)) {
25115
25116
  this.lastClipEndTime == null && (this.lastClipEndTime = $e.restPoseClipDuration);
@@ -25121,10 +25122,10 @@ class Wg {
25121
25122
  return l;
25122
25123
  }
25123
25124
  onAfterHierarchy(e) {
25124
- Bn && console.log("Animation clips per animation target node", this.dict);
25125
+ Fn && console.log("Animation clips per animation target node", this.dict);
25125
25126
  }
25126
25127
  onAfterBuildDocument(e) {
25127
- Bn && console.log("Animation data", { dict: this.dict, rootTargetMap: this.rootTargetMap, rootToRegisteredClip: this.rootToRegisteredClip });
25128
+ Fn && console.log("Animation data", { dict: this.dict, rootTargetMap: this.rootTargetMap, rootToRegisteredClip: this.rootToRegisteredClip });
25128
25129
  for (const t of this.rootTargetMap.keys()) {
25129
25130
  const i = this.rootTargetMap.get(t);
25130
25131
  if (!i) continue;
@@ -25210,7 +25211,7 @@ class bE {
25210
25211
  for (const si of Z)
25211
25212
  Pe++, si || (oe.has(fe) || oe.set(fe, []), oe.get(fe).push(Pe));
25212
25213
  }
25213
- Bn && console.log("Bone count: ", k.size, "TransformData entries per bone: ", W, "Undefined bone entries: ", oe), console.assert(q, "All bones should have the same number of TransformData entries", k), console.assert(oe.size === 0, "All TransformData entries should be set", oe);
25214
+ Fn && console.log("Bone count: ", k.size, "TransformData entries per bone: ", W, "Undefined bone entries: ", oe), console.assert(q, "All bones should have the same number of TransformData entries", k), console.assert(oe.size === 0, "All TransformData entries should be set", oe);
25214
25215
  const re = [];
25215
25216
  for (const [fe, Z] of k)
25216
25217
  for (let Pe = 0; Pe < Z.length; Pe++) {
@@ -25261,7 +25262,7 @@ class bE {
25261
25262
  return W.join(", ");
25262
25263
  }, f = function(k) {
25263
25264
  const W = /* @__PURE__ */ new Map();
25264
- if (Bn) {
25265
+ if (Fn) {
25265
25266
  const q = new Array();
25266
25267
  for (const [oe, re] of o)
25267
25268
  q.push(oe.uuid + ": " + re.length + " " + re.map((fe) => fe.clip?.uuid.substring(0, 6)).join(" "));
@@ -25312,7 +25313,7 @@ class bE {
25312
25313
  const B = _.map((k) => '"' + Ra(k.bone, v) + '"').join(", "), G = _.map((k) => pb(k.inverse.clone().invert())).join(", ");
25313
25314
  e.beginBlock('def Skeleton "Rig"'), e.appendLine(`uniform matrix4d[] bindTransforms = [${G}]`), e.appendLine(`uniform token[] joints = [${B}]`), e.appendLine('uniform token purpose = "guide"'), e.appendLine(`uniform matrix4d[] restTransforms = [${O.map((k) => pb(k)).join(", ")}]`);
25314
25315
  const X = p(_.map((k) => k.bone));
25315
- if (Bn) {
25316
+ if (Fn) {
25316
25317
  let k = 1e7, W = 0;
25317
25318
  for (const q of X.position?.keys() ?? [])
25318
25319
  k = Math.min(k, q), W = Math.max(W, q);
@@ -25386,7 +25387,7 @@ class bE {
25386
25387
  const w = !g.clip, b = d === "position" && (g.pos || w), v = d === "rotation" && (g.rot || w), I = d === "scale" && (g.scale || w);
25387
25388
  if (b || v || I) {
25388
25389
  const O = g.clip?.name ?? "rest", R = g.getDuration();
25389
- Bn && console.log("Write .timeSamples:", O, _, R, h), e.appendLine("# " + O + ": start=" + l.format(_ * $e.frameRate) + ", length=" + l.format(R * $e.frameRate) + ", frames=" + g.getFrames());
25390
+ Fn && console.log("Write .timeSamples:", O, _, R, h), e.appendLine("# " + O + ": start=" + l.format(_ * $e.frameRate) + ", length=" + l.format(R * $e.frameRate) + ", frames=" + g.getFrames());
25390
25391
  }
25391
25392
  if (b)
25392
25393
  for (const { time: O, translation: R } of g.getValues(m, !0, !1, !1)) {
@@ -25852,7 +25853,7 @@ Ue([
25852
25853
  Ue([
25853
25854
  u()
25854
25855
  ], Or.prototype, "toggleOnClick");
25855
- const Vg = class Tn extends E {
25856
+ const Vg = class An extends E {
25856
25857
  animator;
25857
25858
  stateName;
25858
25859
  // Not editable from the outside yet, but from code
@@ -25888,22 +25889,22 @@ const Vg = class Tn extends E {
25888
25889
  static rootsWithExclusivePlayback = /* @__PURE__ */ new Set();
25889
25890
  // Cleanup. TODO This is not the best way as it's called multiple times (once for each component).
25890
25891
  afterSerialize() {
25891
- if (Tn.rootsWithExclusivePlayback.size > 1) {
25892
+ if (An.rootsWithExclusivePlayback.size > 1) {
25892
25893
  const e = 'Multiple root objects targeted by more than one animation. To work around QuickLook bug FB13410767, animations will be set as "exclusive" and activating them will stop other animations being marked as exclusive.';
25893
- L() && _e(e), console.warn(e, ...Tn.rootsWithExclusivePlayback);
25894
+ L() && _e(e), console.warn(e, ...An.rootsWithExclusivePlayback);
25894
25895
  }
25895
- Tn.animationActions = [], Tn.rootsWithExclusivePlayback = /* @__PURE__ */ new Set();
25896
+ An.animationActions = [], An.rootsWithExclusivePlayback = /* @__PURE__ */ new Set();
25896
25897
  }
25897
25898
  afterCreateDocument(e, t) {
25898
25899
  if (this.animationSequence === void 0 && this.animationLoopAfterSequence === void 0 || !this.stateAnimationModel || !this.target) return;
25899
25900
  const i = t.document, n = t.extensions.find((a) => a instanceof Wg);
25900
25901
  if (!n) return;
25901
25902
  const o = n.getClipCount(this.target) > 1;
25902
- o && (L() && console.warn("Setting exclusive playback for " + this.target.name + "@" + this.stateName + " because it has " + n.getClipCount(this.target) + " animations. This works around QuickLook bug FB13410767."), Tn.rootsWithExclusivePlayback.add(this.target));
25903
+ o && (L() && console.warn("Setting exclusive playback for " + this.target.name + "@" + this.stateName + " because it has " + n.getClipCount(this.target) + " animations. This works around QuickLook bug FB13410767."), An.rootsWithExclusivePlayback.add(this.target));
25903
25904
  const r = this.name ? this.name : "";
25904
25905
  i.traverse((a) => {
25905
25906
  if (a.uuid === this.target?.uuid) {
25906
- const l = Tn.getActionForSequences(
25907
+ const l = An.getActionForSequences(
25907
25908
  i,
25908
25909
  a,
25909
25910
  this.animationSequence,
@@ -25920,8 +25921,8 @@ const Vg = class Tn extends E {
25920
25921
  }
25921
25922
  static getActionForSequences(e, t, i, n, o) {
25922
25923
  const r = (l, c) => {
25923
- let h = Tn.animationActions.find((d) => d.affectedObjects == l && d.start == c.start && d.duration == c.duration && d.animationSpeed == c.speed);
25924
- return h || (h = ge.startAnimationAction(l, c), Tn.animationActions.push(h)), h;
25924
+ let h = An.animationActions.find((d) => d.affectedObjects == l && d.start == c.start && d.duration == c.duration && d.animationSpeed == c.speed);
25925
+ return h || (h = ge.startAnimationAction(l, c), An.animationActions.push(h)), h;
25925
25926
  }, a = ge.sequence();
25926
25927
  if (i && i.length > 0)
25927
25928
  for (const l of i)
@@ -26053,7 +26054,7 @@ const Vg = class Tn extends E {
26053
26054
  }
26054
26055
  createAnimation(e, t, i) {
26055
26056
  if (!this.target || !this.animator && !this.animation) return;
26056
- const n = Tn.getAndRegisterAnimationSequences(e, this.target, this.stateName);
26057
+ const n = An.getAndRegisterAnimationSequences(e, this.target, this.stateName);
26057
26058
  n && (this.animationSequence = n.animationSequence, this.animationLoopAfterSequence = n.animationLoopAfterSequence, this.randomOffsetNormalized = n.randomTimeOffset, this.stateAnimationModel = t);
26058
26059
  }
26059
26060
  };
@@ -26131,7 +26132,7 @@ class vr {
26131
26132
  }
26132
26133
  _sendToQuestButton;
26133
26134
  get qrButton() {
26134
- return zn.getOrCreate().createQRCode();
26135
+ return mn.getOrCreate().createQRCode();
26135
26136
  }
26136
26137
  /** get or create the quicklook button
26137
26138
  * Behaviour of the button:
@@ -26195,7 +26196,7 @@ class vr {
26195
26196
  * @deprecated please use ButtonsFactory.getOrCreate().createQRCode(). This method will be removed in a future update
26196
26197
  */
26197
26198
  createQRCode() {
26198
- return zn.getOrCreate().createQRCode();
26199
+ return mn.getOrCreate().createQRCode();
26199
26200
  }
26200
26201
  updateSessionSupported(e, t) {
26201
26202
  if (!(t === "immersive-ar" && j.isiOS() && !j.isVisionOS())) {
@@ -26235,7 +26236,7 @@ class kr {
26235
26236
  if (e.__cached_geometry) return e.__cached_geometry;
26236
26237
  if (e.guid && kr.cache[e.guid])
26237
26238
  return pc && console.log("Take cached geometry for sprite", e.guid), kr.cache[e.guid];
26238
- const t = new gn();
26239
+ const t = new yn();
26239
26240
  e.__cached_geometry = t;
26240
26241
  const i = new Float32Array(e.triangles.length * 3), n = new Float32Array(e.triangles.length * 2);
26241
26242
  for (let o = 0; o < e.triangles.length; o += 1) {
@@ -26935,7 +26936,7 @@ class ME {
26935
26936
  }
26936
26937
  for (const t in this.changedProperties) {
26937
26938
  const i = this.changedProperties[t];
26938
- ao && console.log("SEND", this.comp.guid, this.networkingKey), e.send(this.networkingKey, { guid: this.comp.guid, property: t, data: i }, Ln.Queued), delete this.changedProperties[t];
26939
+ ao && console.log("SEND", this.comp.guid, this.networkingKey), e.send(this.networkingKey, { guid: this.comp.guid, property: t, data: i }, Dn.Queued), delete this.changedProperties[t];
26939
26940
  }
26940
26941
  };
26941
26942
  onHandleReceiving = (e) => {
@@ -27036,7 +27037,7 @@ const Xt = x("debugplayersync"), $u = class Aw extends E {
27036
27037
  const i = ne.getOrCreateFromUrl(e);
27037
27038
  if (!i.asset) {
27038
27039
  const r = await i.loadAssetAsync();
27039
- r && S.getOrAddComponent(r, mn);
27040
+ r && S.getOrAddComponent(r, gn);
27040
27041
  }
27041
27042
  const n = new Aw();
27042
27043
  n._internalInit(t), n.asset = i;
@@ -27070,7 +27071,7 @@ const Xt = x("debugplayersync"), $u = class Aw extends E {
27070
27071
  this.gameObject.guid || console.warn("PlayerSync: gameObject has no guid! This might cause issues with syncing the player state."), this._localInstance = this.asset?.instantiateSynced({ parent: this.gameObject, deleteOnDisconnect: !0 }, !0);
27071
27072
  const e = await this._localInstance;
27072
27073
  if (e) {
27073
- const t = S.getComponentsInChildren(e, mn);
27074
+ const t = S.getComponentsInChildren(e, gn);
27074
27075
  if (Xt && console.log(`PlayerSync.createInstance: found ${t?.length} PlayerState components. Owner: ${this.context.connection.connectionId}`), t?.length) {
27075
27076
  for (const i of t)
27076
27077
  i.owner = this.context.connection.connectionId;
@@ -27095,8 +27096,8 @@ const Xt = x("debugplayersync"), $u = class Aw extends E {
27095
27096
  watchTabVisible() {
27096
27097
  window.addEventListener("visibilitychange", (e) => {
27097
27098
  if (document.visibilityState === "visible")
27098
- for (let t = mn.all.length - 1; t >= 0; t--) {
27099
- const i = mn.all[t];
27099
+ for (let t = gn.all.length - 1; t >= 0; t--) {
27100
+ const i = gn.all[t];
27100
27101
  (!i.owner || !this.context.connection.userIsInRoom(i.owner)) && i.doDestroy();
27101
27102
  }
27102
27103
  });
@@ -27242,7 +27243,7 @@ const Cm = class Ot extends E {
27242
27243
  Nu([
27243
27244
  Tw(Cm.prototype.onOwnerChange)
27244
27245
  ], Cm.prototype, "owner");
27245
- let mn = Cm;
27246
+ let gn = Cm;
27246
27247
  var LE = Object.defineProperty, nl = (s, e, t, i) => {
27247
27248
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
27248
27249
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -27303,7 +27304,7 @@ class Mr extends E {
27303
27304
  async onEnterXR(e) {
27304
27305
  if (!this.activeAndEnabled) return;
27305
27306
  El && console.warn("AVATAR ENTER XR", this.guid, this.sourceId, this, this.activeAndEnabled), this._syncTransforms && (this._syncTransforms.length = 0), await this.prepareAvatar();
27306
- const t = mn.getFor(this);
27307
+ const t = gn.getFor(this);
27307
27308
  if (t?.owner) {
27308
27309
  const i = this.gameObject.addComponent(Be);
27309
27310
  i.avatar = this.gameObject, i.connectionId = t.owner, this.context.players.setPlayerView(t.owner, this.head?.asset, go.Headset);
@@ -27315,7 +27316,7 @@ class Mr extends E {
27315
27316
  }
27316
27317
  onUpdateXR(e) {
27317
27318
  if (!this.activeAndEnabled) return;
27318
- const t = mn.isLocalPlayer(this);
27319
+ const t = gn.isLocalPlayer(this);
27319
27320
  if (!t) return;
27320
27321
  const i = e.xr;
27321
27322
  if (i.rig && i.rig.gameObject !== this.gameObject.parent && (this.gameObject.position.set(0, 0, 0), this.gameObject.rotation.set(0, 0, 0), this.gameObject.scale.set(1, 1, 1), i.rig.gameObject.add(this.gameObject)), this._syncTransforms && t)
@@ -27347,7 +27348,7 @@ class Mr extends E {
27347
27348
  }
27348
27349
  updateRemoteAvatarVisibility() {
27349
27350
  if (this.context.connection.isConnected) {
27350
- const e = mn.getFor(this);
27351
+ const e = gn.getFor(this);
27351
27352
  if (e && e.isLocalPlayer == !1) {
27352
27353
  const t = K.getXRSync(this.context);
27353
27354
  if (t && t.hasState(e.owner)) {
@@ -27396,7 +27397,7 @@ class Mr extends E {
27396
27397
  e?.isMesh && this._leftHandMeshes.push(e);
27397
27398
  }), this._rightHandMeshes = [], this.rightHand.asset?.traverse((e) => {
27398
27399
  e?.isMesh && this._rightHandMeshes.push(e);
27399
- }), mn.isLocalPlayer(this.gameObject) && (this._syncTransforms = S.getComponentsInChildren(this.gameObject, Kn));
27400
+ }), gn.isLocalPlayer(this.gameObject) && (this._syncTransforms = S.getComponentsInChildren(this.gameObject, Kn));
27400
27401
  }
27401
27402
  async loadAvatarObjects(e, t, i) {
27402
27403
  const n = e.loadAssetAsync(), o = t.loadAssetAsync(), r = i.loadAssetAsync(), a = new Array();
@@ -28060,7 +28061,7 @@ const Tl = x("debugwebxr"), zE = x("debugusdz"), ht = class ua extends E {
28060
28061
  if (t && t.createQRCodeButton === !1)
28061
28062
  L() && console.warn("WebXR: QRCode button is disabled in the Needle Menu component");
28062
28063
  else if (!j.isMobileDevice()) {
28063
- const i = zn.getOrCreate().createQRCode();
28064
+ const i = mn.getOrCreate().createQRCode();
28064
28065
  this.addButton(i, 50);
28065
28066
  }
28066
28067
  }
@@ -28309,7 +28310,7 @@ class Dw {
28309
28310
  return "Physics";
28310
28311
  }
28311
28312
  onExportObject(e, t, i) {
28312
- const n = S.getComponents(e, Ke).filter((l) => l.enabled), o = S.getComponents(e, xn).filter((l) => l.enabled && !l.isTrigger);
28313
+ const n = S.getComponents(e, Ke).filter((l) => l.enabled), o = S.getComponents(e, Sn).filter((l) => l.enabled && !l.isTrigger);
28313
28314
  let r = n.length > 0 ? n[0] : null;
28314
28315
  const a = o.length > 0 ? o[0] : null;
28315
28316
  a && !r && (r = new Ke(), r.isKinematic = !0), r && t.addEventListener("serialize", (l, c) => {
@@ -28354,7 +28355,7 @@ _0.prototype.interactable = {
28354
28355
  this.interactable = s;
28355
28356
  }
28356
28357
  };
28357
- class vn extends E {
28358
+ class wn extends E {
28358
28359
  /** Is this object on the root of the UI hierarchy ? */
28359
28360
  isRoot() {
28360
28361
  return this.Root?.gameObject === this.gameObject;
@@ -28407,7 +28408,7 @@ class vn extends E {
28407
28408
  if (!e) return;
28408
28409
  this.removeShadowComponent();
28409
28410
  const i = this.isRoot() ? this.gameObject : this.gameObject.parent;
28410
- if (this._parentComponent = S.getComponentInParent(i, vn), !this._parentComponent) {
28411
+ if (this._parentComponent = S.getComponentInParent(i, wn), !this._parentComponent) {
28411
28412
  console.warn(`Component "${this.name}" doesn't have a UI parent anywhere. Do you have an UI element outside a Canvas? UI components must be a child of a Canvas component`, this);
28412
28413
  return;
28413
28414
  }
@@ -28443,7 +28444,7 @@ class vn extends E {
28443
28444
  this.shadowComponent && (this.shadowComponent.interactable = e);
28444
28445
  }
28445
28446
  }
28446
- class Vu extends vn {
28447
+ class Vu extends wn {
28447
28448
  awake() {
28448
28449
  super.awake();
28449
28450
  }
@@ -28464,7 +28465,7 @@ class HE {
28464
28465
  width;
28465
28466
  height;
28466
28467
  }
28467
- const hn = new y(), Al = new J(), Hh = new V(), sl = class jw extends vn {
28468
+ const hn = new y(), Al = new J(), Hh = new V(), sl = class jw extends wn {
28468
28469
  get parent() {
28469
28470
  return this._parentRectTransform;
28470
28471
  }
@@ -28564,7 +28565,7 @@ const hn = new y(), Al = new J(), Hh = new V(), sl = class jw extends vn {
28564
28565
  if (!t) return;
28565
28566
  this.gameObject.parent ? this._parentRectTransform = S.getComponentInParent(this.gameObject.parent, jw) : this._parentRectTransform = void 0, this._transformNeedsUpdate = !1, mp && console.warn("RectTransform → ApplyTransform", this.name + " because " + e), this.isRoot() ? this.Root.screenspace || (t.rotation.y = Math.PI) : (t.matrix.identity(), t.matrixAutoUpdate = !1, hn.set(0, 0, 0), this.applyPivot(hn), t.matrix.setPosition(hn.x, hn.y, 0), (this.gameObject.quaternion.x || this.gameObject.quaternion.y || this.gameObject.quaternion.z) && (Hh.copy(this.gameObject.quaternion), Hh.x *= -1, Hh.z *= -1, Al.makeRotationFromQuaternion(Hh), t.matrix.premultiply(Al)), hn.set(0, 0, 0), this.applyAnchoring(hn), this.canvas?.screenspace ? hn.z += 0.1 : hn.z += 0.01, Al.identity(), Al.setPosition(hn.x, hn.y, hn.z), t.matrix.premultiply(Al), t.matrix.scale(this.gameObject.scale)), this.lastMatrix.copy(this.gameObject.matrix);
28566
28567
  const i = !0;
28567
- for (const n of _g(this.gameObject, vn, i, 1)) {
28568
+ for (const n of _g(this.gameObject, wn, i, 1)) {
28568
28569
  if (n === this || !n.activeAndEnabled) continue;
28569
28570
  const o = n;
28570
28571
  o.onParentRectTransformChanged && o.onParentRectTransformChanged(this);
@@ -28684,7 +28685,7 @@ const Yo = {
28684
28685
  backgroundOpacity: 1,
28685
28686
  borderColor: new se(1, 1, 1),
28686
28687
  borderOpacity: 1
28687
- }, Yg = class Yl extends vn {
28688
+ }, Yg = class Yl extends wn {
28688
28689
  get isGraphic() {
28689
28690
  return !0;
28690
28691
  }
@@ -29617,7 +29618,7 @@ const yp = x("debuguilayout"), nn = class Hw extends Vu {
29617
29618
  *_updateRenderSettingsDelayed() {
29618
29619
  if (yield, this._updateRenderSettingsRoutine = void 0, this.shadowComponent) {
29619
29620
  this.onUpdateRenderMode(), $d(this.shadowComponent, this);
29620
- for (const e of S.getComponentsInChildren(this.gameObject, vn))
29621
+ for (const e of S.getComponentsInChildren(this.gameObject, wn))
29621
29622
  $d(e.shadowComponent, this);
29622
29623
  }
29623
29624
  }
@@ -29706,7 +29707,7 @@ class Rr extends E {
29706
29707
  _buffer = [];
29707
29708
  applyChangesNow() {
29708
29709
  this._buffer.length = 0;
29709
- for (const e of S.getComponentsInChildren(this.gameObject, vn, this._buffer)) {
29710
+ for (const e of S.getComponentsInChildren(this.gameObject, wn, this._buffer)) {
29710
29711
  const t = e;
29711
29712
  t.setAlphaFactor && t.setAlphaFactor(this._alpha);
29712
29713
  }
@@ -29742,7 +29743,7 @@ class Gw {
29742
29743
  if (!S.isActiveInHierarchy(d)) {
29743
29744
  const f = S.isActiveSelf(d);
29744
29745
  S.setActive(d, !0);
29745
- const p = S.getComponent(d, vn);
29746
+ const p = S.getComponent(d, wn);
29746
29747
  p && (p.onEnable(), l.push(() => {
29747
29748
  p.onDisable();
29748
29749
  }));
@@ -30064,7 +30065,7 @@ const pi = class nr extends E {
30064
30065
  if (L() && l && c) {
30065
30066
  const O = l.animatedRoots;
30066
30067
  for (const R of O) {
30067
- const A = S.getComponentsInChildren(R, Ke).filter((B) => B.enabled), D = S.getComponents(R, xn).filter((B) => B.enabled && !B.isTrigger);
30068
+ const A = S.getComponentsInChildren(R, Ke).filter((B) => B.enabled), D = S.getComponents(R, Sn).filter((B) => B.enabled && !B.isTrigger);
30068
30069
  (A.length > 0 || D.length > 0) && console.error("An animated object has physics components in its child hierarchy. This can lead to undefined behaviour due to a bug in Apple's QuickLook (FB15925487). Remove the physics components from child objects or verify that you get the expected results.", R);
30069
30070
  }
30070
30071
  }
@@ -32134,7 +32135,7 @@ C([
32134
32135
  C([
32135
32136
  u()
32136
32137
  ], ss.prototype, "zMultiplier");
32137
- class Sn {
32138
+ class Cn {
32138
32139
  enabled;
32139
32140
  range;
32140
32141
  separateAxes;
@@ -32155,31 +32156,31 @@ class Sn {
32155
32156
  }
32156
32157
  C([
32157
32158
  u()
32158
- ], Sn.prototype, "enabled");
32159
+ ], Cn.prototype, "enabled");
32159
32160
  C([
32160
32161
  u()
32161
- ], Sn.prototype, "range");
32162
+ ], Cn.prototype, "range");
32162
32163
  C([
32163
32164
  u()
32164
- ], Sn.prototype, "separateAxes");
32165
+ ], Cn.prototype, "separateAxes");
32165
32166
  C([
32166
32167
  u(Y)
32167
- ], Sn.prototype, "x");
32168
+ ], Cn.prototype, "x");
32168
32169
  C([
32169
32170
  u()
32170
- ], Sn.prototype, "xMultiplier");
32171
+ ], Cn.prototype, "xMultiplier");
32171
32172
  C([
32172
32173
  u(Y)
32173
- ], Sn.prototype, "y");
32174
+ ], Cn.prototype, "y");
32174
32175
  C([
32175
32176
  u()
32176
- ], Sn.prototype, "yMultiplier");
32177
+ ], Cn.prototype, "yMultiplier");
32177
32178
  C([
32178
32179
  u(Y)
32179
- ], Sn.prototype, "z");
32180
+ ], Cn.prototype, "z");
32180
32181
  C([
32181
32182
  u()
32182
- ], Sn.prototype, "zMultiplier");
32183
+ ], Cn.prototype, "zMultiplier");
32183
32184
  class vt {
32184
32185
  enabled;
32185
32186
  dampen;
@@ -32457,7 +32458,7 @@ var OT = Object.defineProperty, ze = (s, e, t, i) => {
32457
32458
  };
32458
32459
  const so = x("debugparticles"), kT = x("noprogressive"), MT = x("debugprogressive");
32459
32460
  var Rm = /* @__PURE__ */ ((s) => (s[s.Birth = 0] = "Birth", s[s.Collision = 1] = "Collision", s[s.Death = 2] = "Death", s[s.Trigger = 3] = "Trigger", s[s.Manual = 4] = "Manual", s))(Rm || {});
32460
- class Cn extends E {
32461
+ class Pn extends E {
32461
32462
  renderMode;
32462
32463
  particleMaterial;
32463
32464
  trailMaterial;
@@ -32502,28 +32503,28 @@ class Cn extends E {
32502
32503
  }
32503
32504
  ze([
32504
32505
  u()
32505
- ], Cn.prototype, "renderMode");
32506
+ ], Pn.prototype, "renderMode");
32506
32507
  ze([
32507
32508
  u(be)
32508
- ], Cn.prototype, "particleMaterial");
32509
+ ], Pn.prototype, "particleMaterial");
32509
32510
  ze([
32510
32511
  u(be)
32511
- ], Cn.prototype, "trailMaterial");
32512
+ ], Pn.prototype, "trailMaterial");
32512
32513
  ze([
32513
32514
  u()
32514
- ], Cn.prototype, "maxParticleSize");
32515
+ ], Pn.prototype, "maxParticleSize");
32515
32516
  ze([
32516
32517
  u()
32517
- ], Cn.prototype, "minParticleSize");
32518
+ ], Pn.prototype, "minParticleSize");
32518
32519
  ze([
32519
32520
  u()
32520
- ], Cn.prototype, "velocityScale");
32521
+ ], Pn.prototype, "velocityScale");
32521
32522
  ze([
32522
32523
  u()
32523
- ], Cn.prototype, "cameraVelocityScale");
32524
+ ], Pn.prototype, "cameraVelocityScale");
32524
32525
  ze([
32525
32526
  u()
32526
- ], Cn.prototype, "lengthScale");
32527
+ ], Pn.prototype, "lengthScale");
32527
32528
  class Xh {
32528
32529
  _curve;
32529
32530
  _factor;
@@ -33073,7 +33074,7 @@ const Wt = class gd extends E {
33073
33074
  }
33074
33075
  /** @internal */
33075
33076
  awake() {
33076
- if (this._worldPositionFrame = -1, this._renderer = this.gameObject.getComponent(Cn), !this.main)
33077
+ if (this._worldPositionFrame = -1, this._renderer = this.gameObject.getComponent(Pn), !this.main)
33077
33078
  throw new Error("Not Supported: ParticleSystem needs a serialized MainModule. Creating new particle systems at runtime is currently not supported.");
33078
33079
  this._container = new M(), this._container.matrixAutoUpdate = !1, this.context.scene.add(this._container), this._batchSystem = new E1(), this._batchSystem.name = this.gameObject.name, this._container.add(this._batchSystem), this._interface = new UT(this), this._particleSystem = new T1(this._interface), this._particleSystem.addBehavior(new DT(this)), this._particleSystem.addBehavior(new FT(this)), this._particleSystem.addBehavior(new AT(this)), this._particleSystem.addBehavior(new IT(this)), this._particleSystem.addBehavior(new BT(this)), this._particleSystem.addBehavior(new jT(this)), this._batchSystem.addSystem(this._particleSystem);
33079
33080
  const e = this._particleSystem.emitter;
@@ -33198,7 +33199,7 @@ ze([
33198
33199
  u(ss)
33199
33200
  ], Wt.prototype, "rotationOverLifetime");
33200
33201
  ze([
33201
- u(Sn)
33202
+ u(Cn)
33202
33203
  ], Wt.prototype, "rotationBySpeed");
33203
33204
  ze([
33204
33205
  u(Ii)
@@ -33275,7 +33276,7 @@ class Bc extends E {
33275
33276
  ;
33276
33277
  }
33277
33278
  tryAssignColor = () => {
33278
- const e = S.getComponentInParent(this.gameObject, mn);
33279
+ const e = S.getComponentInParent(this.gameObject, gn);
33279
33280
  if (e && e.owner)
33280
33281
  return this._didAssignPlayerColor = !0, this.assignUserColor(e.owner), !0;
33281
33282
  const t = S.getComponentInParent(this.gameObject, Be);
@@ -33534,7 +33535,7 @@ var KT = Object.defineProperty, ZT = (s, e, t, i) => {
33534
33535
  return n && KT(e, t, n), n;
33535
33536
  };
33536
33537
  const JT = x("debugpost"), Im = {};
33537
- function Pn(s, e) {
33538
+ function On(s, e) {
33538
33539
  Im[s] = e;
33539
33540
  }
33540
33541
  function eA(s) {
@@ -33589,7 +33590,7 @@ class Ju extends ct {
33589
33590
  iA([
33590
33591
  u($)
33591
33592
  ], Ju.prototype, "preset");
33592
- Pn("Antialiasing", Ju);
33593
+ On("Antialiasing", Ju);
33593
33594
  var sA = Object.defineProperty, cy = (s, e, t, i) => {
33594
33595
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
33595
33596
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -33654,7 +33655,7 @@ cy([
33654
33655
  u($)
33655
33656
  ], ef.prototype, "scatter");
33656
33657
  let hy = ef;
33657
- Pn("Bloom", hy);
33658
+ On("Bloom", hy);
33658
33659
  var oA = Object.defineProperty, rA = (s, e, t, i) => {
33659
33660
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
33660
33661
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -33675,7 +33676,7 @@ class tf extends ct {
33675
33676
  rA([
33676
33677
  u($)
33677
33678
  ], tf.prototype, "intensity");
33678
- Pn("ChromaticAberration", tf);
33679
+ On("ChromaticAberration", tf);
33679
33680
  var nc = /* @__PURE__ */ ((s) => (s[s.None = 0] = "None", s[s.Neutral = 1] = "Neutral", s[s.ACES = 2] = "ACES", s[s.AgX = 3] = "AgX", s[s.KhronosNeutral = 4] = "KhronosNeutral", s))(nc || {});
33680
33681
  const Tb = /* @__PURE__ */ new Map();
33681
33682
  function Cp(s) {
@@ -33783,7 +33784,7 @@ ox([
33783
33784
  ox([
33784
33785
  u($)
33785
33786
  ], Er.prototype, "exposure");
33786
- Pn("Tonemapping", Er);
33787
+ On("Tonemapping", Er);
33787
33788
  var cA = Object.defineProperty, nf = (s, e, t, i) => {
33788
33789
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
33789
33790
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -33832,7 +33833,7 @@ nf([
33832
33833
  nf([
33833
33834
  u($)
33834
33835
  ], Wr.prototype, "saturation");
33835
- Pn("ColorAdjustments", Wr);
33836
+ On("ColorAdjustments", Wr);
33836
33837
  var hA = Object.defineProperty, Vr = (s, e, t, i) => {
33837
33838
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
33838
33839
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -33900,7 +33901,7 @@ Vr([
33900
33901
  Vr([
33901
33902
  u($)
33902
33903
  ], os.prototype, "bokehScale");
33903
- Pn("DepthOfField", os);
33904
+ On("DepthOfField", os);
33904
33905
  class Kd extends ct {
33905
33906
  effect;
33906
33907
  constructor(e) {
@@ -33933,7 +33934,7 @@ class sf extends ct {
33933
33934
  fA([
33934
33935
  u($)
33935
33936
  ], sf.prototype, "granularity");
33936
- Pn("PixelationEffect", sf);
33937
+ On("PixelationEffect", sf);
33937
33938
  var pA = Object.defineProperty, ah = (s, e, t, i) => {
33938
33939
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
33939
33940
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -34001,7 +34002,7 @@ ah([
34001
34002
  ah([
34002
34003
  u($)
34003
34004
  ], Do.prototype, "luminanceInfluence");
34004
- Pn("ScreenSpaceAmbientOcclusion", Do);
34005
+ On("ScreenSpaceAmbientOcclusion", Do);
34005
34006
  var mA = Object.defineProperty, Hr = (s, e, t, i) => {
34006
34007
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
34007
34008
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -34077,7 +34078,7 @@ Hr([
34077
34078
  Nt(),
34078
34079
  u()
34079
34080
  ], rs.prototype, "quality");
34080
- Pn("ScreenSpaceAmbientOcclusionN8", rs);
34081
+ On("ScreenSpaceAmbientOcclusionN8", rs);
34081
34082
  var yA = Object.defineProperty, _A = Object.getOwnPropertyDescriptor, rx = (s, e, t, i) => {
34082
34083
  for (var n = _A(e, t), o = s.length - 1, r; o >= 0; o--)
34083
34084
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -34232,7 +34233,7 @@ ul([
34232
34233
  ul([
34233
34234
  u($)
34234
34235
  ], $s.prototype, "resolutionScale");
34235
- Pn("TiltShiftEffect", $s);
34236
+ On("TiltShiftEffect", $s);
34236
34237
  var wA = Object.defineProperty, dy = (s, e, t, i) => {
34237
34238
  for (var n = void 0, o = s.length - 1, r; o >= 0; o--)
34238
34239
  (r = s[o]) && (n = r(e, t, n) || n);
@@ -34270,7 +34271,7 @@ dy([
34270
34271
  dy([
34271
34272
  u($)
34272
34273
  ], fl.prototype, "center");
34273
- Pn("Vignette", fl);
34274
+ On("Vignette", fl);
34274
34275
  globalThis.NEEDLE_USE_POSTPROCESSING = globalThis.NEEDLE_USE_POSTPROCESSING !== void 0 ? globalThis.NEEDLE_USE_POSTPROCESSING : !0;
34275
34276
  const hs = x("debugpost"), Op = /* @__PURE__ */ Symbol("needle:postprocessing-handler"), Il = /* @__PURE__ */ Symbol("needle:previous-autoclear-state"), Ll = /* @__PURE__ */ Symbol("needle:previous-tone-mapping");
34276
34277
  class ax {
@@ -37085,7 +37086,7 @@ class KA {
37085
37086
  if (wi && console.log(...t), t?.length)
37086
37087
  for (const i of t) {
37087
37088
  if (i.distance < 0.2) continue;
37088
- const n = i.object, o = mn.getFor(n);
37089
+ const n = i.object, o = gn.getFor(n);
37089
37090
  let r = o?.owner;
37090
37091
  if (r || (r = S.getComponentInParent(n, Be)?.connectionId), r) {
37091
37092
  const a = this.context.players.getPlayerView(r);
@@ -37335,7 +37336,7 @@ class gl extends E {
37335
37336
  this._debugLine?.removeFromParent(), this._debugLine = null;
37336
37337
  const e = new Wm({
37337
37338
  color: 6684927
37338
- }), t = this.spline.length * 10, i = this._curve.getPoints(t), n = new gn().setFromPoints(i);
37339
+ }), t = this.spline.length * 10, i = this._curve.getPoints(t), n = new yn().setFromPoints(i);
37339
37340
  this._debugLine = new Ta(n, e), this.gameObject?.add(this._debugLine);
37340
37341
  }
37341
37342
  }
@@ -37357,7 +37358,7 @@ var sI = Object.defineProperty, oI = Object.getOwnPropertyDescriptor, Bo = (s, e
37357
37358
  (r = s[o]) && (n = (i ? r(e, t, n) : r(n)) || n);
37358
37359
  return i && n && sI(e, t, n), n;
37359
37360
  };
37360
- class On extends E {
37361
+ class kn extends E {
37361
37362
  spline = null;
37362
37363
  object = void 0;
37363
37364
  useLookAt = !0;
@@ -37436,39 +37437,39 @@ class On extends E {
37436
37437
  }
37437
37438
  Bo([
37438
37439
  Ze(gl)
37439
- ], On.prototype, "spline", 2);
37440
+ ], kn.prototype, "spline", 2);
37440
37441
  Bo([
37441
37442
  Ze(M)
37442
- ], On.prototype, "object", 2);
37443
+ ], kn.prototype, "object", 2);
37443
37444
  Bo([
37444
37445
  Ze()
37445
- ], On.prototype, "useLookAt", 2);
37446
+ ], kn.prototype, "useLookAt", 2);
37446
37447
  Bo([
37447
37448
  Ze(M)
37448
- ], On.prototype, "lookAt", 2);
37449
+ ], kn.prototype, "lookAt", 2);
37449
37450
  Bo([
37450
37451
  Ze()
37451
- ], On.prototype, "clamp", 2);
37452
+ ], kn.prototype, "clamp", 2);
37452
37453
  Bo([
37453
37454
  Ze()
37454
- ], On.prototype, "position01", 1);
37455
+ ], kn.prototype, "position01", 1);
37455
37456
  Bo([
37456
37457
  Ze()
37457
- ], On.prototype, "autoRun", 2);
37458
+ ], kn.prototype, "autoRun", 2);
37458
37459
  Bo([
37459
37460
  Ze()
37460
- ], On.prototype, "duration", 2);
37461
- class Fn {
37461
+ ], kn.prototype, "duration", 2);
37462
+ class Un {
37462
37463
  bb = null;
37463
37464
  bb_pos = 0;
37464
37465
  __init(e, t) {
37465
37466
  return this.bb_pos = e, this.bb = t, this;
37466
37467
  }
37467
37468
  static getRootAsSyncedCameraModel(e, t) {
37468
- return (t || new Fn()).__init(e.readInt32(e.position()) + e.position(), e);
37469
+ return (t || new Un()).__init(e.readInt32(e.position()) + e.position(), e);
37469
37470
  }
37470
37471
  static getSizePrefixedRootAsSyncedCameraModel(e, t) {
37471
- return e.setPosition(e.position() + g0), (t || new Fn()).__init(e.readInt32(e.position()) + e.position(), e);
37472
+ return e.setPosition(e.position() + g0), (t || new Un()).__init(e.readInt32(e.position()) + e.position(), e);
37472
37473
  }
37473
37474
  userId(e) {
37474
37475
  const t = this.bb.__offset(this.bb_pos, 4);
@@ -37524,7 +37525,7 @@ var rI = Object.defineProperty, aI = (s, e, t, i) => {
37524
37525
  return n && rI(e, t, n), n;
37525
37526
  };
37526
37527
  const Jd = "SCAM";
37527
- Y0(Jd, Fn.getRootAsSyncedCameraModel);
37528
+ Y0(Jd, Un.getRootAsSyncedCameraModel);
37528
37529
  const mi = new Jm();
37529
37530
  class lI {
37530
37531
  userId;
@@ -37539,10 +37540,10 @@ class lI {
37539
37540
  if (e) {
37540
37541
  mi.clear();
37541
37542
  const i = mi.createString(this.guid), n = mi.createString(this.userId);
37542
- Fn.startSyncedCameraModel(mi), Fn.addGuid(mi, i), Fn.addUserId(mi, n);
37543
+ Un.startSyncedCameraModel(mi), Un.addGuid(mi, i), Un.addUserId(mi, n);
37543
37544
  const o = te(e), r = ng(e);
37544
- Fn.addPos(mi, yr.createVec3(mi, o.x, o.y, o.z)), Fn.addRot(mi, yr.createVec3(mi, r.x, r.y, r.z));
37545
- const a = Fn.endSyncedCameraModel(mi);
37545
+ Un.addPos(mi, yr.createVec3(mi, o.x, o.y, o.z)), Un.addRot(mi, yr.createVec3(mi, r.x, r.y, r.z));
37546
+ const a = Un.endSyncedCameraModel(mi);
37546
37547
  mi.finish(a, Jd), t.sendBinary(mi.asUint8Array());
37547
37548
  }
37548
37549
  }
@@ -37612,7 +37613,7 @@ const gx = class Dm extends E {
37612
37613
  } else
37613
37614
  return;
37614
37615
  const o = n.obj;
37615
- this.context.players.setPlayerView(i, o, go.Browser), n.lastUpdate = this.context.time.realtimeSinceStartup, yn.markDirty(o);
37616
+ this.context.players.setPlayerView(i, o, go.Browser), n.lastUpdate = this.context.time.realtimeSinceStartup, _n.markDirty(o);
37616
37617
  const r = e.pos();
37617
37618
  r && Da(o, r.x(), r.y(), r.z());
37618
37619
  const a = e.rot();
@@ -40046,7 +40047,7 @@ class No extends E {
40046
40047
  else if (e instanceof Ji) {
40047
40048
  if (!e.duration) return;
40048
40049
  e.time = t * e.duration;
40049
- } else if (e instanceof On)
40050
+ } else if (e instanceof kn)
40050
40051
  e.position01 = t;
40051
40052
  else if (e instanceof Ai)
40052
40053
  e.intensity = t;
@@ -40094,7 +40095,7 @@ class No extends E {
40094
40095
  // https://drafts.csswg.org/scroll-animations/#scroll-notation
40095
40096
  }));
40096
40097
  }
40097
- En.length = 0;
40098
+ Tn.length = 0;
40098
40099
  let o = 0;
40099
40100
  const r = 1 / 60;
40100
40101
  let a = 0;
@@ -40108,20 +40109,20 @@ class No extends E {
40108
40109
  const p = jI(f), g = 1 - Math.abs(p - 0.5) * 2, _ = `marker${l}`;
40109
40110
  if (p > 0 && p <= 1) {
40110
40111
  const m = c.time + (d - c.time) * p;
40111
- En.push({ name: _, time: m, weight: g }), o += g;
40112
- } else l === 0 && p <= 0 ? (En.push({ name: _, time: 0, weight: 1 }), o += 1) : l === n.length - 1 && p >= 1 && (En.push({ name: _, time: i, weight: 1 }), o += 1);
40112
+ Tn.push({ name: _, time: m, weight: g }), o += g;
40113
+ } else l === 0 && p <= 0 ? (Tn.push({ name: _, time: 0, weight: 1 }), o += 1) : l === n.length - 1 && p >= 1 && (Tn.push({ name: _, time: i, weight: 1 }), o += 1);
40113
40114
  }
40114
40115
  }
40115
- if (En.length <= 0 && a <= 0)
40116
+ if (Tn.length <= 0 && a <= 0)
40116
40117
  e.time = t * i;
40117
- else if (En.length > 0) {
40118
- let l = En[0].time;
40119
- if (En.length > 1)
40120
- for (const h of En) {
40118
+ else if (Tn.length > 0) {
40119
+ let l = Tn[0].time;
40120
+ if (Tn.length > 1)
40121
+ for (const h of Tn) {
40121
40122
  const d = h.weight / Math.max(1e-5, o), f = Math.abs(h.time - l);
40122
40123
  l += f * d;
40123
40124
  }
40124
- this.damping <= 0 || this._firstUpdate ? e.time = l : e.time = F.lerp(e.time, l, this.context.time.deltaTime / this.damping), Math.abs(e.time - l) > 1e-3 && (this._needsUpdate = !0), Dl && this.context.time.frame % 30 === 0 && console.log(`[ScrollFollow ] Timeline ${e.name}: ${l.toFixed(3)}`, En.map((h) => `[${h.name} ${(h.weight * 100).toFixed(0)}%]`).join(", "));
40125
+ this.damping <= 0 || this._firstUpdate ? e.time = l : e.time = F.lerp(e.time, l, this.context.time.deltaTime / this.damping), Math.abs(e.time - l) > 1e-3 && (this._needsUpdate = !0), Dl && this.context.time.frame % 30 === 0 && console.log(`[ScrollFollow ] Timeline ${e.name}: ${l.toFixed(3)}`, Tn.map((h) => `[${h.name} ${(h.weight * 100).toFixed(0)}%]`).join(", "));
40125
40126
  }
40126
40127
  }
40127
40128
  }
@@ -40143,7 +40144,7 @@ vl([
40143
40144
  vl([
40144
40145
  u(de)
40145
40146
  ], No.prototype, "changed");
40146
- const Ub = /* @__PURE__ */ new WeakMap(), En = [], Ep = new Array();
40147
+ const Ub = /* @__PURE__ */ new WeakMap(), Tn = [], Ep = new Array();
40147
40148
  let Tp = !0;
40148
40149
  function kx(s) {
40149
40150
  return Tp ? (Tp = !1, Ep.length = 0, document.querySelectorAll("[data-timeline-marker]").forEach((t, i) => {
@@ -40378,7 +40379,7 @@ function NI(s, e) {
40378
40379
  const r = new ce();
40379
40380
  i.map = e, s.render(o, r);
40380
40381
  }
40381
- function q2(s, e, t, i = "image/webp", n) {
40382
+ function qD(s, e, t, i = "image/webp", n) {
40382
40383
  return Ex({ context: s, width: e, height: t, mimeType: i, camera: n });
40383
40384
  }
40384
40385
  function Ex(s) {
@@ -41214,7 +41215,7 @@ class Ho extends E {
41214
41215
  return !0;
41215
41216
  }
41216
41217
  createGeometry(e) {
41217
- return "polygon" in e ? this.createPlaneGeometry(e.polygon) : "vertices" in e && "indices" in e ? this.createMeshGeometry(e.vertices, e.indices) : new gn();
41218
+ return "polygon" in e ? this.createPlaneGeometry(e.polygon) : "vertices" in e && "indices" in e ? this.createMeshGeometry(e.vertices, e.indices) : new yn();
41218
41219
  }
41219
41220
  // we cache vertices-to-geometry, because it looks like when we get an update sometimes the geometry stays the same.
41220
41221
  // so we don't want to re-create the geometry every time.
@@ -41223,7 +41224,7 @@ class Ho extends E {
41223
41224
  const i = e.toString() + "_" + t.toString();
41224
41225
  if (this._verticesCache.has(i))
41225
41226
  return this._verticesCache.get(i);
41226
- const n = new gn();
41227
+ const n = new yn();
41227
41228
  n.setIndex(new mt(t, 1)), n.setAttribute("position", new mt(e, 3));
41228
41229
  const o = Array();
41229
41230
  for (let r = 0; r < e.length; r += 3)
@@ -41231,7 +41232,7 @@ class Ho extends E {
41231
41232
  return n.setAttribute("uv", new mt(e, 3)), n.computeVertexNormals(), this._verticesCache.set(i, n), n;
41232
41233
  }
41233
41234
  createPlaneGeometry(e) {
41234
- const t = new gn(), i = [], n = [];
41235
+ const t = new yn(), i = [], n = [];
41235
41236
  e.forEach((f) => {
41236
41237
  i.push(f.x, f.y, f.z), n.push(f.x, f.z);
41237
41238
  });
@@ -41386,7 +41387,7 @@ P.add("Networking", Qw);
41386
41387
  P.add("OffsetConstraint", ll);
41387
41388
  P.add("CameraTargetReachedEvent", Wd);
41388
41389
  P.add("OrbitControls", ye);
41389
- P.add("ParticleSystemRenderer", Cn);
41390
+ P.add("ParticleSystemRenderer", Pn);
41390
41391
  P.add("ParticleSystem", Yd);
41391
41392
  P.add("Attractor", rh);
41392
41393
  P.add("PlayerColor", Bc);
@@ -41419,7 +41420,7 @@ P.add("SpatialTriggerReceiver", Ms);
41419
41420
  P.add("SpatialTrigger", my);
41420
41421
  P.add("SpectatorCamera", gy);
41421
41422
  P.add("SplineContainer", gl);
41422
- P.add("SplineWalker", On);
41423
+ P.add("SplineWalker", kn);
41423
41424
  P.add("SpriteRenderer", Ei);
41424
41425
  P.add("SyncedCamera", yx);
41425
41426
  P.add("SyncedRoom", as);
@@ -41434,7 +41435,7 @@ P.add("MarkerTrackHandler", _y);
41434
41435
  P.add("SignalTrackHandler", tu);
41435
41436
  P.add("ControlTrackHandler", by);
41436
41437
  P.add("TransformGizmo", yl);
41437
- P.add("BaseUIComponent", vn);
41438
+ P.add("BaseUIComponent", wn);
41438
41439
  P.add("UIRootComponent", Vu);
41439
41440
  P.add("Button", zo);
41440
41441
  P.add("Canvas", Dc);
@@ -41479,7 +41480,7 @@ P.add("WebXRPlaneTracking", Ho);
41479
41480
  P.add("XRRig", ky);
41480
41481
  P.add("XRFlag", pn);
41481
41482
  P.add("PlayerSync", Iw);
41482
- P.add("PlayerState", mn);
41483
+ P.add("PlayerState", gn);
41483
41484
  P.add("PresentationMode", ZI);
41484
41485
  const vc = gt, JI = x("debugtypestore");
41485
41486
  JI && console.log(P);
@@ -41630,7 +41631,7 @@ Use import { NeedleEngineModelLoader } from "@needle-tools/engine" namespace to
41630
41631
  }
41631
41632
  }
41632
41633
  }
41633
- function X2(s, e) {
41634
+ function XD(s, e) {
41634
41635
  return Lx(e?.context || N.Current, s, s, e?.seed || null, e?.onprogress);
41635
41636
  }
41636
41637
  async function oL(s, e, t, i) {
@@ -41717,7 +41718,7 @@ async function wc(s, e, t, i, n, o) {
41717
41718
  animations: i.animations,
41718
41719
  scenes: [i]
41719
41720
  };
41720
- else if (i instanceof gn) {
41721
+ else if (i instanceof yn) {
41721
41722
  const r = new pt({
41722
41723
  color: new se(14540253)
41723
41724
  }), a = new H(i, r);
@@ -41776,7 +41777,7 @@ class hL {
41776
41777
  this.onRequestedEndAR();
41777
41778
  };
41778
41779
  onBegin(e, t, i) {
41779
- if (this.currentSession = i, this.arContainer = t, j.isMozillaXR()) {
41780
+ if (this.currentSession = i, this.arContainer = t, j.isMozillaXR() || j.isNeedleAppClip()) {
41780
41781
  const n = e.domElement.children;
41781
41782
  for (let o = 0; o < n?.length; o++) {
41782
41783
  const r = n[o];
@@ -41816,10 +41817,8 @@ class hL {
41816
41817
  this.currentSession && (this.currentSession.end(), this.currentSession = null);
41817
41818
  }
41818
41819
  ensureQuitARButton(e) {
41819
- if (j.isNeedleAppClip())
41820
- return;
41821
41820
  const t = document.createElement("slot");
41822
- t.setAttribute("name", "quit-ar"), this.appendElement(t, e), this._createdAROnlyElements.push(t), t.style.pointerEvents = "auto";
41821
+ t.style.display = "contents", t.setAttribute("name", "quit-ar"), this.appendElement(t, e), this._createdAROnlyElements.push(t), t.style.pointerEvents = "auto", j.isNeedleAppClip() && (t.style.display = "none");
41823
41822
  const i = document.querySelector(`.${cL}`);
41824
41823
  if (i) {
41825
41824
  i.addEventListener("click", this.requestEndAR), Fl && i.addEventListener("click", () => console.log("Clicked quit-ar button"));
@@ -41857,7 +41856,7 @@ class hL {
41857
41856
  }
41858
41857
  const lr = x("debugloading"), Ul = x("debugloadingrendering");
41859
41858
  x("debuglicense");
41860
- class Q2 {
41859
+ class QD {
41861
41860
  className;
41862
41861
  additionalClasses;
41863
41862
  }
@@ -42213,7 +42212,7 @@ class zx extends HTMLElement {
42213
42212
  <canvas></canvas>
42214
42213
  </div>
42215
42214
  <div class="content">
42216
- <slot class="overlay-content"></slot>
42215
+ <slot class="overlay-content" style="display: contents;"></slot>
42217
42216
  </div>
42218
42217
  `, this.shadowRoot && this.shadowRoot.appendChild(e.content.cloneNode(!0)), this._context = new N({ domElement: this }), this.addEventListener("error", this.onError);
42219
42218
  }
@@ -43192,7 +43191,7 @@ Error:`, r), null;
43192
43191
  color: 7855479,
43193
43192
  fog: !1
43194
43193
  // vertexColors: VertexColors
43195
- }), n = new gn();
43194
+ }), n = new yn();
43196
43195
  this.lines = new t0(n, i), this.lines.layers.disableAll(), this.lines.layers.enable(2);
43197
43196
  }
43198
43197
  this.lines.parent !== this.context?.scene && this.context?.scene.add(this.lines);
@@ -43422,7 +43421,7 @@ class _L {
43422
43421
  }
43423
43422
  }
43424
43423
  }
43425
- class Y2 {
43424
+ class YD {
43426
43425
  /**
43427
43426
  * Use this method to quickly setup a scene to compare multiple models.
43428
43427
  * @example
@@ -43478,14 +43477,14 @@ let zm = 0;
43478
43477
  function qb(s) {
43479
43478
  s ? zm++ : zm--;
43480
43479
  }
43481
- function K2() {
43480
+ function KD() {
43482
43481
  return zm > 0;
43483
43482
  }
43484
43483
  const bL = {
43485
43484
  binary: !0,
43486
43485
  animations: !0
43487
43486
  };
43488
- async function Z2(s) {
43487
+ async function ZD(s) {
43489
43488
  if (!s.context)
43490
43489
  throw new Error("No context provided to exportAsGLTF");
43491
43490
  s.scene || (s.scene = s.context.scene);
@@ -43554,12 +43553,12 @@ function wL(s, e, t) {
43554
43553
  }
43555
43554
  const Qb = "needle-button", Dp = L();
43556
43555
  class xL extends HTMLElement {
43557
- static observedAttributes = ["ar", "vr", "quicklook"];
43556
+ static observedAttributes = ["ar", "vr", "quicklook", "qrcode"];
43558
43557
  constructor() {
43559
- super(), this.removeEventListener("click", this.#r), this.addEventListener("click", this.#r);
43558
+ super(), this.removeEventListener("click", this.#a), this.addEventListener("click", this.#a);
43560
43559
  }
43561
43560
  attributeChangedCallback(e, t, i) {
43562
- this.#a();
43561
+ this.#l();
43563
43562
  }
43564
43563
  #t;
43565
43564
  #n;
@@ -43569,41 +43568,43 @@ class xL extends HTMLElement {
43569
43568
  #e;
43570
43569
  /** If AR or VR is requested we create and use the webxr button factory to create a button with default behaviour */
43571
43570
  #i;
43571
+ #r;
43572
43572
  #o;
43573
- #a() {
43573
+ #l() {
43574
43574
  if (this.#e?.remove(), this.getAttribute("ar") != null)
43575
43575
  this.#i ??= new vr(), this.#e = this.#i.createARButton();
43576
43576
  else if (this.getAttribute("vr") != null)
43577
43577
  this.#i ??= new vr(), this.#e = this.#i.createVRButton();
43578
43578
  else if (this.getAttribute("quicklook") != null)
43579
43579
  this.#i ??= new vr(), this.#e = this.#i.createQuicklookButton();
43580
+ else if (this.getAttribute("qrcode") != null)
43581
+ this.#r ??= new mn(), this.#e = this.#r.createQRCode({ anchorElement: this });
43580
43582
  else {
43581
43583
  Dp ? console.warn("No button type specified for <needle-button>. Use either ar, vr or quicklook attribute.") : console.debug("No button type specified for <needle-button>. Use either ar, vr or quicklook attribute.");
43582
43584
  return;
43583
43585
  }
43584
43586
  this.#t ??= this.attachShadow({ mode: "open" }), this.#n ??= document.createElement("slot"), this.#s ??= document.createElement("style"), this.#s.innerHTML = `
43585
43587
  button {
43586
- all: initial;
43587
- cursor: inherit;
43588
- color: inherit;
43589
- font-family: inherit;
43590
- gap: inherit;
43591
- white-space: nowrap;
43588
+ all: unset;
43592
43589
  }
43593
43590
  `, this.getAttribute("unstyled") != null || (this.#s.innerHTML += `
43594
43591
  :host {
43595
- display: inline-block;
43596
- background: rgba(255, 255, 255, .8);
43597
- backdrop-filter: blur(10px);
43592
+ display: inline-flex;
43593
+ align-items: center;
43594
+ justify-content: center;
43598
43595
  width: fit-content;
43599
- transition: background .2s;
43600
43596
 
43601
- cursor: pointer;
43602
43597
  padding: 0.4rem .5rem;
43603
- border-radius: 0.8rem;
43604
- color: black;
43598
+ border-radius: 100vw;
43599
+
43605
43600
  background: rgba(245, 245, 245, .8);
43601
+ backdrop-filter: blur(10px);
43602
+
43603
+ cursor: pointer;
43604
+ color: black;
43606
43605
  outline: rgba(0,0,0,.05) 1px solid;
43606
+
43607
+ transition: all .2s;
43607
43608
  }
43608
43609
  :host(:hover) {
43609
43610
  background: rgba(255, 255, 255, 1);
@@ -43615,13 +43616,13 @@ class xL extends HTMLElement {
43615
43616
  justify-content: center;
43616
43617
  gap: .5rem;
43617
43618
  }
43618
- `), this.#n.innerHTML = this.#e.innerHTML, this.#n.style.cssText = "display: flex; align-items: center; justify-content: center;", this.#e.innerHTML = this.#n.outerHTML, this.#t.innerHTML = this.#e.outerHTML, this.#t.prepend(this.#s), Fd(hm, { element: this.#t }), this.#o?.disconnect(), this.#o ??= new MutationObserver(() => this.#l()), this.#o.observe(this.#e, { attributes: !0 }), Dp && console.log("Needle Button updated");
43619
+ `), this.#n.innerHTML = this.#e.innerHTML, this.#n.style.cssText = "display: flex; align-items: center; justify-content: center;", this.#e.innerHTML = this.#n.outerHTML, this.#t.innerHTML = this.#e.outerHTML, this.#t.prepend(this.#s), Fd(hm, { element: this.#t }), this.#o?.disconnect(), this.#o ??= new MutationObserver(() => this.#c()), this.#o.observe(this.#e, { attributes: !0 }), Dp && console.log("Needle Button updated", this);
43619
43620
  }
43620
- #l() {
43621
+ #c() {
43621
43622
  this.#e && (this.#e.style.display === "none" ? this.style.display = "none" : this.style.display === "none" && (this.style.display = ""));
43622
43623
  }
43623
- #r = (e) => {
43624
- Dp && console.log("Needle Button clicked"), !e.defaultPrevented && this.#e && this.#e.click();
43624
+ #a = (e) => {
43625
+ Dp && console.log("Needle Button clicked", { defaultPrevented: e.defaultPrevented, hasButton: !!this.#e }), !e.defaultPrevented && this.#e && this.#e.click();
43625
43626
  };
43626
43627
  }
43627
43628
  typeof window < "u" && !window.customElements.get(Qb) && window.customElements.define(Qb, xL);
@@ -43782,7 +43783,7 @@ class CL {
43782
43783
  }
43783
43784
  class PL {
43784
43785
  }
43785
- const J2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
43786
+ const JD = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
43786
43787
  __proto__: null,
43787
43788
  ActionBuilder: ge,
43788
43789
  ActionCollection: _E,
@@ -43793,7 +43794,7 @@ const J2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
43793
43794
  AnimationExtension: Wg,
43794
43795
  AnimationTrackHandler: eu,
43795
43796
  Animator: Tt,
43796
- AnimatorController: bn,
43797
+ AnimatorController: vn,
43797
43798
  Antialiasing: Ju,
43798
43799
  Attractor: rh,
43799
43800
  AudioExtension: tl,
@@ -43811,7 +43812,7 @@ const J2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
43811
43812
  Avatar_MustacheShake: Wv,
43812
43813
  Avatar_POI: ka,
43813
43814
  AxesHelper: Gc,
43814
- BaseUIComponent: vn,
43815
+ BaseUIComponent: wn,
43815
43816
  BasicIKConstraint: Xv,
43816
43817
  BehaviorExtension: Lw,
43817
43818
  BehaviorModel: zt,
@@ -43907,7 +43908,7 @@ const J2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
43907
43908
  ParticleBurst: Mm,
43908
43909
  ParticleSubEmitter: ex,
43909
43910
  ParticleSystem: Yd,
43910
- ParticleSystemRenderer: Cn,
43911
+ ParticleSystemRenderer: Pn,
43911
43912
  PhysicsExtension: Dw,
43912
43913
  PixelationEffect: sf,
43913
43914
  PlayAnimationOnClick: Xd,
@@ -43927,7 +43928,7 @@ const J2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
43927
43928
  Renderer: di,
43928
43929
  RendererLightmap: aw,
43929
43930
  Rigidbody: Ke,
43930
- RotationBySpeedModule: Sn,
43931
+ RotationBySpeedModule: Cn,
43931
43932
  RotationOverLifetimeModule: ss,
43932
43933
  SceneSwitcher: tt,
43933
43934
  ScreenCapture: Gr,
@@ -43956,7 +43957,7 @@ const J2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
43956
43957
  SphereCollider: qc,
43957
43958
  SplineContainer: gl,
43958
43959
  SplineData: Is,
43959
- SplineWalker: On,
43960
+ SplineWalker: kn,
43960
43961
  Sprite: Ro,
43961
43962
  SpriteData: mc,
43962
43963
  SpriteRenderer: Ei,
@@ -44139,7 +44140,7 @@ const kL = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
44139
44140
  GenerateMeshBVHWorker: OL
44140
44141
  }, Symbol.toStringTag, { value: "Module" }));
44141
44142
  export {
44142
- F2 as $physicsKey,
44143
+ FD as $physicsKey,
44143
44144
  ge as ActionBuilder,
44144
44145
  _E as ActionCollection,
44145
44146
  yi as ActionModel,
@@ -44153,7 +44154,7 @@ export {
44153
44154
  Cr as AnimationUtils,
44154
44155
  Tt as Animator,
44155
44156
  ir as AnimatorConditionMode,
44156
- bn as AnimatorController,
44157
+ vn as AnimatorController,
44157
44158
  Bv as AnimatorControllerParameterType,
44158
44159
  Ih as AnimatorStateInfo,
44159
44160
  Ju as Antialiasing,
@@ -44178,7 +44179,7 @@ export {
44178
44179
  Gl as Axes,
44179
44180
  Gc as AxesHelper,
44180
44181
  Md as BUILD_TIME,
44181
- vn as BaseUIComponent,
44182
+ wn as BaseUIComponent,
44182
44183
  Xv as BasicIKConstraint,
44183
44184
  Lw as BehaviorExtension,
44184
44185
  zt as BehaviorModel,
@@ -44188,7 +44189,7 @@ export {
44188
44189
  al as BoxGizmo,
44189
44190
  Mt as BoxHelperComponent,
44190
44191
  zo as Button,
44191
- zn as ButtonsFactory,
44192
+ mn as ButtonsFactory,
44192
44193
  WM as CallDirection,
44193
44194
  oo as CallInfo,
44194
44195
  xi as Camera,
@@ -44205,21 +44206,21 @@ export {
44205
44206
  Oa as ClearFlags,
44206
44207
  Py as ClickThrough,
44207
44208
  ms as ClipExtrapolation,
44208
- xn as Collider,
44209
+ Sn as Collider,
44209
44210
  UM as Collision,
44210
44211
  Pg as CollisionDetectionMode,
44211
44212
  Wr as ColorAdjustments,
44212
44213
  oh as ColorBySpeedModule,
44213
44214
  oy as ColorOverLifetimeModule,
44214
- E2 as Component,
44215
+ ED as Component,
44215
44216
  E as Component$1,
44216
44217
  dg as ComponentLifecycleEvents,
44217
- J2 as Components,
44218
+ JD as Components,
44218
44219
  CP as ConnectionEvents,
44219
44220
  FM as ContactPoint,
44220
44221
  Iu as ContactShadows,
44221
44222
  N as Context,
44222
- S2 as ContextArgs,
44223
+ SD as ContextArgs,
44223
44224
  ue as ContextEvent,
44224
44225
  pe as ContextRegistry,
44225
44226
  by as ControlTrackHandler,
@@ -44249,7 +44250,7 @@ export {
44249
44250
  DR as FieldWithDefault,
44250
44251
  Pa as FileReference,
44251
44252
  QO as FileReferenceSerializer,
44252
- U2 as FileSpawnModel,
44253
+ UD as FileSpawnModel,
44253
44254
  dR as File_Event,
44254
44255
  qw as FixedJoint,
44255
44256
  eh as Fog,
@@ -44271,7 +44272,7 @@ export {
44271
44272
  fn as HideOnStart,
44272
44273
  qu as HingeJoint,
44273
44274
  $w as HorizontalLayoutGroup,
44274
- b2 as HostData,
44275
+ bD as HostData,
44275
44276
  Ls as HoverAnimation,
44276
44277
  ph as Image,
44277
44278
  Ca as ImageReference,
@@ -44283,22 +44284,22 @@ export {
44283
44284
  Sx as InputField,
44284
44285
  Ma as InstanceHandle,
44285
44286
  Ga as InstancingHandler,
44286
- yn as InstancingUtil,
44287
+ _n as InstancingUtil,
44287
44288
  tO as InstantiateEvent,
44288
44289
  Ut as InstantiateIdProvider,
44289
44290
  es as InstantiateOptions,
44290
44291
  Kv as Interactable,
44291
44292
  iu as InternalScreenshotUtils,
44292
- u2 as JoinedRoomResponse,
44293
- c2 as KeyEventArgs,
44293
+ uD as JoinedRoomResponse,
44294
+ cD as KeyEventArgs,
44294
44295
  Si as Keyframe,
44295
44296
  Xu as LODGroup,
44296
44297
  nh as LODModel,
44297
- f2 as LeftRoomResponse,
44298
+ fD as LeftRoomResponse,
44298
44299
  Ai as Light,
44299
44300
  dk as LightData,
44300
44301
  vt as LimitVelocityOverLifetimeModule,
44301
- Q2 as LoadingElementOptions,
44302
+ QD as LoadingElementOptions,
44302
44303
  Yv as LogStats,
44303
44304
  Gi as LogType,
44304
44305
  Ox as LookAt,
@@ -44348,7 +44349,7 @@ export {
44348
44349
  ex as ParticleSubEmitter,
44349
44350
  Yd as ParticleSystem,
44350
44351
  $r as ParticleSystemBaseBehaviour,
44351
- Cn as ParticleSystemRenderer,
44352
+ Pn as ParticleSystemRenderer,
44352
44353
  Om as ParticleSystemShapeType,
44353
44354
  ho as PeerHandle,
44354
44355
  wP as PeerNetworking,
@@ -44360,7 +44361,7 @@ export {
44360
44361
  Or as PlayAudioOnClick,
44361
44362
  qa as PlayableDirector,
44362
44363
  Bc as PlayerColor,
44363
- mn as PlayerState,
44364
+ gn as PlayerState,
44364
44365
  IE as PlayerStateEvent,
44365
44366
  Iw as PlayerSync,
44366
44367
  ik as PlayerView,
@@ -44394,7 +44395,7 @@ export {
44394
44395
  Ke as Rigidbody,
44395
44396
  Qe as RigidbodyConstraints,
44396
44397
  ie as RoomEvents,
44397
- Sn as RotationBySpeedModule,
44398
+ Cn as RotationBySpeedModule,
44398
44399
  ss as RotationOverLifetimeModule,
44399
44400
  ym as SceneLightSettings,
44400
44401
  tt as SceneSwitcher,
@@ -44403,7 +44404,7 @@ export {
44403
44404
  rs as ScreenSpaceAmbientOcclusionN8,
44404
44405
  No as ScrollFollow,
44405
44406
  jo as SeeThrough,
44406
- Ln as SendQueue,
44407
+ Dn as SendQueue,
44407
44408
  mv as SerializationContext,
44408
44409
  Mw as SetActiveOnClick,
44409
44410
  rf as ShadowCatcher,
@@ -44429,12 +44430,12 @@ export {
44429
44430
  gl as SplineContainer,
44430
44431
  Is as SplineData,
44431
44432
  Yb as SplineUtils,
44432
- On as SplineWalker,
44433
+ kn as SplineWalker,
44433
44434
  Ro as Sprite,
44434
44435
  mc as SpriteData,
44435
44436
  Ei as SpriteRenderer,
44436
44437
  Lc as SpriteSheet,
44437
- A2 as StateMachineBehaviour,
44438
+ AD as StateMachineBehaviour,
44438
44439
  Nv as StreamEndedEvent,
44439
44440
  NM as StreamReceivedEvent,
44440
44441
  Tm as SubEmitterSystem,
@@ -44444,7 +44445,7 @@ export {
44444
44445
  Rw as TapGestureTrigger,
44445
44446
  Xg as TeleportTarget,
44446
44447
  _x as TestRunner,
44447
- Y2 as TestSceneUtils,
44448
+ YD as TestSceneUtils,
44448
44449
  bx as TestSimulateUserData,
44449
44450
  ti as Text,
44450
44451
  zw as TextBuilder,
@@ -44472,7 +44473,7 @@ export {
44472
44473
  Gw as USDZUIExtension,
44473
44474
  bM as UriSerializer,
44474
44475
  Lu as UsageMarker,
44475
- p2 as UserJoinedOrLeftRoomModel,
44476
+ pD as UserJoinedOrLeftRoomModel,
44476
44477
  Xi as VERSION,
44477
44478
  Ow as VariantAction,
44478
44479
  qe as VelocityOverLifetimeModule,
@@ -44486,7 +44487,7 @@ export {
44486
44487
  lh as Volume,
44487
44488
  $ as VolumeParameter,
44488
44489
  ly as VolumeProfile,
44489
- v2 as WaitForFrames,
44490
+ vD as WaitForFrames,
44490
44491
  KO as WaitForPromise,
44491
44492
  Ov as WaitForSeconds,
44492
44493
  po as Watch,
@@ -44506,24 +44507,24 @@ export {
44506
44507
  ai as XRState,
44507
44508
  ws as XRStateFlag,
44508
44509
  PL as __Ignore,
44509
- y2 as __internalNotifyObjectDestroyed,
44510
+ yD as __internalNotifyObjectDestroyed,
44510
44511
  mo as activeInHierarchyFieldName,
44511
44512
  w0 as addAttributeChangeCallback,
44512
44513
  Vn as addComponent,
44513
- z2 as addCustomExtensionPlugin,
44514
+ zD as addCustomExtensionPlugin,
44514
44515
  Sa as addNewComponent,
44515
44516
  sg as addPatch,
44516
44517
  gg as apply,
44517
- R2 as applyHMRChanges,
44518
+ RD as applyHMRChanges,
44518
44519
  MO as applyPrototypeExtensions,
44519
44520
  nO as beginListenDestroy,
44520
44521
  rO as beginListenInstantiate,
44521
44522
  Q0 as binaryIdentifierCasts,
44522
- x2 as build_scene_functions,
44523
+ xD as build_scene_functions,
44523
44524
  oa as builtinComponentKeyName,
44524
44525
  Bx as calculateProgress01,
44525
44526
  ZL as clearMessages,
44526
- D2 as colorSerializer,
44527
+ DD as colorSerializer,
44527
44528
  pO as compareAssociation,
44528
44529
  Xf as componentSerializer,
44529
44530
  PC as copyTexture,
@@ -44542,9 +44543,9 @@ export {
44542
44543
  Cs as disposeStream,
44543
44544
  id as editorGuidKeyName,
44544
44545
  oc as enableSpatialConsole,
44545
- j2 as euler,
44546
- B2 as eventListSerializer,
44547
- Z2 as exportAsGLTF,
44546
+ jD as euler,
44547
+ BD as eventListSerializer,
44548
+ ZD as exportAsGLTF,
44548
44549
  xv as findByGuid,
44549
44550
  $c as findObjectOfType,
44550
44551
  DO as findObjectsOfType,
@@ -44553,7 +44554,7 @@ export {
44553
44554
  RC as fitObjectIntoVolume,
44554
44555
  $a as foreachComponent,
44555
44556
  _g as foreachComponentEnumerator,
44556
- i2 as forward,
44557
+ iD as forward,
44557
44558
  xk as generateQRCode,
44558
44559
  oO as generateSeed,
44559
44560
  hi as getBoundingBox,
@@ -44570,11 +44571,11 @@ export {
44570
44571
  Qn as getLoader,
44571
44572
  wu as getOrAddComponent,
44572
44573
  x as getParam,
44573
- n2 as getParentHierarchyPath,
44574
+ nD as getParentHierarchyPath,
44574
44575
  UL as getPath,
44575
- h2 as getPeerOptions,
44576
+ hD as getPeerOptions,
44576
44577
  vP as getPeerjsInstance,
44577
- _2 as getResourceUserCount,
44578
+ _D as getResourceUserCount,
44578
44579
  mC as getTempColor,
44579
44580
  _i as getTempQuaternion,
44580
44581
  z as getTempVector,
@@ -44605,12 +44606,12 @@ export {
44605
44606
  zL as isDesktop,
44606
44607
  Na as isDestroyed,
44607
44608
  L as isDevEnvironment,
44608
- g2 as isDisposed,
44609
- K2 as isExporting,
44609
+ gD as isDisposed,
44610
+ KD as isExporting,
44610
44611
  jM as isGLTFModel,
44611
44612
  z1 as isHostedOnGlitch,
44612
44613
  G_ as isHotReloadEnabled,
44613
- M2 as isHotReloading,
44614
+ MD as isHotReloading,
44614
44615
  $L as isIPad,
44615
44616
  Ck as isIconElement,
44616
44617
  Qi as isLocalNetwork,
@@ -44623,13 +44624,13 @@ export {
44623
44624
  yg as isUsingInstancing,
44624
44625
  qL as isiOS,
44625
44626
  WL as isiPad,
44626
- X2 as loadAsset,
44627
+ XD as loadAsset,
44627
44628
  zA as loadPMREM,
44628
44629
  Lx as loadSync,
44629
44630
  Vp as logHierarchy,
44630
- e2 as lookAtInverse,
44631
+ eD as lookAtInverse,
44631
44632
  gu as lookAtObject,
44632
- t2 as lookAtScreenPoint,
44633
+ tD as lookAtScreenPoint,
44633
44634
  BL as makeId,
44634
44635
  W1 as makeIdFromRandomWords,
44635
44636
  en as makeNameSafe,
@@ -44638,12 +44639,12 @@ export {
44638
44639
  LL as nameof,
44639
44640
  N1 as nameofFactory,
44640
44641
  pM as objectSerializer,
44641
- l2 as offXRSessionEnd,
44642
- a2 as offXRSessionStart,
44643
- k2 as onAfterRender,
44644
- O2 as onBeforeRender,
44645
- C2 as onClear,
44646
- P2 as onDestroy,
44642
+ lD as offXRSessionEnd,
44643
+ aD as offXRSessionStart,
44644
+ kD as onAfterRender,
44645
+ OD as onBeforeRender,
44646
+ CD as onClear,
44647
+ PD as onDestroy,
44647
44648
  Tv as onInitialized,
44648
44649
  wg as onStart,
44649
44650
  Ak as onUpdate,
@@ -44652,13 +44653,13 @@ export {
44652
44653
  oL as parseSync,
44653
44654
  EC as placeOnSurface,
44654
44655
  L0 as postprocessFBXMaterials,
44655
- L2 as prefix,
44656
+ LD as prefix,
44656
44657
  $1 as pushState,
44657
44658
  FL as randomNumber,
44658
44659
  Y0 as registerBinaryType,
44659
44660
  vg as registerComponent,
44660
44661
  ow as registerComponentExtension,
44661
- Pn as registerCustomEffectType,
44662
+ On as registerCustomEffectType,
44662
44663
  rw as registerExportExtensions,
44663
44664
  _m as registerExtensions,
44664
44665
  zk as registerHotReloadType,
@@ -44669,12 +44670,12 @@ export {
44669
44670
  H1 as relativePathPrefix,
44670
44671
  x0 as removeAttributeChangeCallback,
44671
44672
  bv as removeComponent,
44672
- N2 as removeCustomImportExtensionType,
44673
- r2 as removePatch,
44673
+ ND as removeCustomImportExtensionType,
44674
+ rD as removePatch,
44674
44675
  Ir as resolveUrl,
44675
44676
  V1 as sanitizeString,
44676
44677
  WI as saveImage,
44677
- q2 as screenshot,
44678
+ qD as screenshot,
44678
44679
  Ex as screenshot2,
44679
44680
  cv as sendDestroyed,
44680
44681
  u as serializable,
@@ -44686,14 +44687,14 @@ export {
44686
44687
  Wp as setAutoFitEnabled,
44687
44688
  qy as setCameraController,
44688
44689
  NO as setDestroyed,
44689
- o2 as setDevEnvironment,
44690
+ oD as setDevEnvironment,
44690
44691
  GP as setDisposable,
44691
44692
  kl as setDontDestroy,
44692
44693
  Ny as setOrAddParamsToUrl,
44693
44694
  jL as setParam,
44694
44695
  Cd as setParamWithoutReload,
44695
- d2 as setPeerOptions,
44696
- m2 as setResourceTrackingEnabled,
44696
+ dD as setPeerOptions,
44697
+ mD as setResourceTrackingEnabled,
44697
44698
  b0 as setState,
44698
44699
  I0 as setVisibleInCustomShadowRendering,
44699
44700
  A0 as setWorldEuler,
@@ -44712,7 +44713,7 @@ export {
44712
44713
  vu as syncDestroy,
44713
44714
  Tw as syncField,
44714
44715
  hv as syncInstantiate,
44715
- s2 as textureToCanvas,
44716
+ sD as textureToCanvas,
44716
44717
  G1 as toSourceId,
44717
44718
  _P as tryCastBinary,
44718
44719
  pR as tryDetermineMimetypeFromBinary,