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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +5 -3
  3. package/dist/needle-engine.js +115 -94
  4. package/dist/needle-engine.light.js +1220 -1199
  5. package/dist/needle-engine.light.min.js +108 -95
  6. package/dist/needle-engine.light.umd.cjs +133 -120
  7. package/dist/needle-engine.min.js +37 -24
  8. package/dist/needle-engine.umd.cjs +24 -11
  9. package/lib/engine/engine_physics.d.ts +2 -2
  10. package/lib/engine/engine_physics.js +4 -4
  11. package/lib/engine/engine_physics.js.map +1 -1
  12. package/lib/engine/engine_physics_rapier.d.ts +24 -4
  13. package/lib/engine/engine_physics_rapier.js +33 -12
  14. package/lib/engine/engine_physics_rapier.js.map +1 -1
  15. package/lib/engine/engine_types.d.ts +27 -4
  16. package/lib/engine/engine_types.js.map +1 -1
  17. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +0 -1
  18. package/lib/engine/extensions/NEEDLE_lighting_settings.js +0 -6
  19. package/lib/engine/extensions/NEEDLE_lighting_settings.js.map +1 -1
  20. package/lib/engine/webcomponents/needle menu/needle-menu.js +14 -1
  21. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  22. package/lib/engine-components/Collider.d.ts +25 -0
  23. package/lib/engine-components/Collider.js +25 -0
  24. package/lib/engine-components/Collider.js.map +1 -1
  25. package/lib/engine-components/RigidBody.d.ts +3 -0
  26. package/lib/engine-components/RigidBody.js +5 -2
  27. package/lib/engine-components/RigidBody.js.map +1 -1
  28. package/lib/engine-components/SyncedTransform.js +3 -15
  29. package/lib/engine-components/SyncedTransform.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/engine/codegen/register_types.ts +2 -2
  32. package/src/engine/engine_physics.ts +4 -4
  33. package/src/engine/engine_physics_rapier.ts +48 -14
  34. package/src/engine/engine_types.ts +29 -6
  35. package/src/engine/extensions/NEEDLE_lighting_settings.ts +0 -5
  36. package/src/engine/webcomponents/needle menu/needle-menu.ts +14 -1
  37. package/src/engine-components/Collider.ts +27 -4
  38. package/src/engine-components/RigidBody.ts +5 -2
  39. package/src/engine-components/SyncedTransform.ts +4 -17
@@ -24508,7 +24508,7 @@ class S_ extends Lh {
24508
24508
  A._backgroundMesh.visible = !(this._input === "none" || this._input === "transparent"), this._input === "inherit" ? this._value.set(this.getInheritedInput(A)) : this._input === "transparent" || this._input === "none" || this._value.set(this._input);
24509
24509
  }
24510
24510
  }
24511
- class On extends kt {
24511
+ class Pn extends kt {
24512
24512
  /**
24513
24513
  *
24514
24514
  * @param {string} propertyId
@@ -24695,7 +24695,7 @@ class k5 extends G_ {
24695
24695
  super.computeOutputValue(A);
24696
24696
  }
24697
24697
  }
24698
- class k_ extends On {
24698
+ class k_ extends Pn {
24699
24699
  constructor() {
24700
24700
  super("textContent"), this._needsUpdate = !1;
24701
24701
  }
@@ -25702,7 +25702,7 @@ class md extends ZA.Object3D {
25702
25702
  fontCastShadow: { m: "castShadow" },
25703
25703
  fontReceiveShadow: { m: "receiveShadow" },
25704
25704
  renderOrder: { m: "renderOrder" }
25705
- }, this._children = e.children ? new e.children() : new On("children"), this._parent = new Lj(), this.addEventListener("added", this._rebuildParentUI), this.addEventListener("removed", this._rebuildParentUI), this._backgroundSide = new lJ("backgroundSide"), this._fontSide = new lJ("fontSide"), this._backgroundAlphaTest = new cJ("backgroundAlphaTest", 0.02), this._fontAlphaTest = new cJ("fontAlphaTest", 0.02), this._visible = new E5("visible", !0), this._backgroundCastShadow = new Cp("backgroundCastShadow"), this._fontCastShadow = new Cp("fontCastShadow"), this._backgroundReceiveShadow = new Cp("backgroundReceiveShadow"), this._fontReceiveShadow = new Cp("fontReceiveShadow"), this._renderOrder = new Rj(), this._segments = e.segments ? new e.segments() : new q_(), this._bounds = e.bounds ? new e.bounds() : new On("bounds"), this._order = new y5(), this._padding = new vj(), this._margin = new qj(), this._position = new m_(), this._flexDirection = e.flexDirection ? new e.flexDirection() : new MU(), this._justifyContent = e.justifyContent ? new e.justifyContent() : new UU(), this._alignItems = e.alignItems ? new e.alignItems() : new GU(), this._display = new Vj("flex"), this._boxSizing = new $j("border-box"), this._width = new G5(), this._height = new k5(), this._backgroundColor = e.backgroundColor ? new e.backgroundColor() : new S_(), this._backgroundOpacity = new m0("backgroundOpacity", 0.5), this._backgroundImage = new i5(), this._backgroundSize = new I5("cover"), this._color = e.color ? new e.color() : new Lh("color", "inherit"), this._fontOpacity = new m0("fontOpacity", "inherit"), this._whiteSpace = e.whiteSpace ? new e.whiteSpace() : new b_(), this._fontFamily = e.fontFamily ? new e.fontFamily() : new K_(), this._fontStyle = e.fontStyle ? new e.fontStyle() : new M_("normal"), this._fontWeight = e.fontWeight ? new e.fontWeight() : new U_(), this._fontSize = e.fontSize ? new e.fontSize() : new sV(), this._lineHeight = e.lineHeight ? new e.lineHeight() : new J_(), this._fontKerning = e.fontKerning ? new e.fontKerning() : new Xw(), this._letterSpacing = e.letterSpacing ? new e.letterSpacing() : new v_(), this._overflow = new n5("visible"), this._borderRadius = new B5(0), this._borderWidth = new Q5(0), this._borderColor = new Lh("borderColor", 16711935), this._borderOpacity = new m0("borderOpacity", 1), this._font = new Wj(), this._lineBreak = e.lineBreak ? new e.lineBreak() : new On("lineBreak"), this._textContent = e.textContent ? new e.textContent() : new k_(), this._glyphs = e.glyphs ? new e.glyphs() : new On("glyphs"), this._inlines = e.inlines ? new e.inlines() : new On("inlines"), this._layouter = e.layouter ? new e.layouter() : new On("layouter"), this._inlineJustificator = new c5(), this._textAlign = e.textAlign ? new e.textAlign() : new kU(), this._autoSize = e.autoSize ? new e.autoSize() : new On("autoSize"), this._renderer = e.renderer ? new e.renderer() : new On("renderer"), this._offset = new Nj(), this._invertAlpha = new nV(), this._fontSmooth = e.fontSmooth ? new e.fontSmooth() : new Fj(), this._components = [
25705
+ }, this._children = e.children ? new e.children() : new Pn("children"), this._parent = new Lj(), this.addEventListener("added", this._rebuildParentUI), this.addEventListener("removed", this._rebuildParentUI), this._backgroundSide = new lJ("backgroundSide"), this._fontSide = new lJ("fontSide"), this._backgroundAlphaTest = new cJ("backgroundAlphaTest", 0.02), this._fontAlphaTest = new cJ("fontAlphaTest", 0.02), this._visible = new E5("visible", !0), this._backgroundCastShadow = new Cp("backgroundCastShadow"), this._fontCastShadow = new Cp("fontCastShadow"), this._backgroundReceiveShadow = new Cp("backgroundReceiveShadow"), this._fontReceiveShadow = new Cp("fontReceiveShadow"), this._renderOrder = new Rj(), this._segments = e.segments ? new e.segments() : new q_(), this._bounds = e.bounds ? new e.bounds() : new Pn("bounds"), this._order = new y5(), this._padding = new vj(), this._margin = new qj(), this._position = new m_(), this._flexDirection = e.flexDirection ? new e.flexDirection() : new MU(), this._justifyContent = e.justifyContent ? new e.justifyContent() : new UU(), this._alignItems = e.alignItems ? new e.alignItems() : new GU(), this._display = new Vj("flex"), this._boxSizing = new $j("border-box"), this._width = new G5(), this._height = new k5(), this._backgroundColor = e.backgroundColor ? new e.backgroundColor() : new S_(), this._backgroundOpacity = new m0("backgroundOpacity", 0.5), this._backgroundImage = new i5(), this._backgroundSize = new I5("cover"), this._color = e.color ? new e.color() : new Lh("color", "inherit"), this._fontOpacity = new m0("fontOpacity", "inherit"), this._whiteSpace = e.whiteSpace ? new e.whiteSpace() : new b_(), this._fontFamily = e.fontFamily ? new e.fontFamily() : new K_(), this._fontStyle = e.fontStyle ? new e.fontStyle() : new M_("normal"), this._fontWeight = e.fontWeight ? new e.fontWeight() : new U_(), this._fontSize = e.fontSize ? new e.fontSize() : new sV(), this._lineHeight = e.lineHeight ? new e.lineHeight() : new J_(), this._fontKerning = e.fontKerning ? new e.fontKerning() : new Xw(), this._letterSpacing = e.letterSpacing ? new e.letterSpacing() : new v_(), this._overflow = new n5("visible"), this._borderRadius = new B5(0), this._borderWidth = new Q5(0), this._borderColor = new Lh("borderColor", 16711935), this._borderOpacity = new m0("borderOpacity", 1), this._font = new Wj(), this._lineBreak = e.lineBreak ? new e.lineBreak() : new Pn("lineBreak"), this._textContent = e.textContent ? new e.textContent() : new k_(), this._glyphs = e.glyphs ? new e.glyphs() : new Pn("glyphs"), this._inlines = e.inlines ? new e.inlines() : new Pn("inlines"), this._layouter = e.layouter ? new e.layouter() : new Pn("layouter"), this._inlineJustificator = new c5(), this._textAlign = e.textAlign ? new e.textAlign() : new kU(), this._autoSize = e.autoSize ? new e.autoSize() : new Pn("autoSize"), this._renderer = e.renderer ? new e.renderer() : new Pn("renderer"), this._offset = new Nj(), this._invertAlpha = new nV(), this._fontSmooth = e.fontSmooth ? new e.fontSmooth() : new Fj(), this._components = [
25706
25706
  this._textContent,
25707
25707
  this._children,
25708
25708
  this._parent,
@@ -29476,13 +29476,13 @@ function vBA(g) {
29476
29476
  ok = g;
29477
29477
  }
29478
29478
  const lT = IA("debugdefines");
29479
- OE('if(!globalThis[""3.37.3-alpha""]) globalThis[""3.37.3-alpha""] = "0.0.0";');
29479
+ OE('if(!globalThis[""3.37.4-alpha""]) globalThis[""3.37.4-alpha""] = "0.0.0";');
29480
29480
  OE('if(!globalThis[""undefined""]) globalThis[""undefined""] = "unknown";');
29481
- OE('if(!globalThis[""Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)""]) globalThis[""Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)""] = "unknown";');
29482
- OE('globalThis["__NEEDLE_ENGINE_VERSION__"] = "3.37.3-alpha";');
29481
+ OE('if(!globalThis[""Mon Apr 22 2024 09:46:17 GMT+0200 (Central European Summer Time)""]) globalThis[""Mon Apr 22 2024 09:46:17 GMT+0200 (Central European Summer Time)""] = "unknown";');
29482
+ OE('globalThis["__NEEDLE_ENGINE_VERSION__"] = "3.37.4-alpha";');
29483
29483
  OE('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
29484
- OE('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)";');
29485
- const lC = "3.37.3-alpha", jU = "undefined", hT = "Fri Apr 19 2024 11:48:52 GMT+0200 (Central European Summer Time)";
29484
+ OE('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Mon Apr 22 2024 09:46:17 GMT+0200 (Central European Summer Time)";');
29485
+ const lC = "3.37.4-alpha", jU = "undefined", hT = "Mon Apr 22 2024 09:46:17 GMT+0200 (Central European Summer Time)";
29486
29486
  lT && console.log(`Engine version: ${lC} (generator: ${jU})
29487
29487
  Project built at ${hT}`);
29488
29488
  const Ra = "needle_isActiveInHierarchy", GQ = "builtin_components", hf = "needle_editor_guid";
@@ -30353,24 +30353,24 @@ function ZX(g) {
30353
30353
  const N = a + h._offset, y = N + f, U = y + k, H = U + G, x = new Uint8Array(g.buffer, g.byteOffset + N, f), K = new Uint8Array(g.buffer, g.byteOffset + y, k), O = new Uint8Array(g.buffer, g.byteOffset + U, G), b = new Uint8Array(g.buffer, g.byteOffset + H, M);
30354
30354
  return e.globalData = { endpointCount: p, selectorCount: u, imageDescs: m, endpointsData: x, selectorsData: K, tablesData: O, extendedData: b }, e;
30355
30355
  }
30356
- let J0, Pn, nk;
30356
+ let J0, Wn, nk;
30357
30357
  const b0 = { env: { emscripten_notify_memory_growth: function(g) {
30358
- nk = new Uint8Array(Pn.exports.memory.buffer);
30358
+ nk = new Uint8Array(Wn.exports.memory.buffer);
30359
30359
  } } };
30360
30360
  let jX = class {
30361
30361
  init() {
30362
30362
  return J0 || (J0 = typeof fetch < "u" ? fetch("data:application/wasm;base64," + JJ).then((A) => A.arrayBuffer()).then((A) => WebAssembly.instantiate(A, b0)).then(this._init) : WebAssembly.instantiate(Buffer.from(JJ, "base64"), b0).then(this._init), J0);
30363
30363
  }
30364
30364
  _init(A) {
30365
- Pn = A.instance, b0.env.emscripten_notify_memory_growth(0);
30365
+ Wn = A.instance, b0.env.emscripten_notify_memory_growth(0);
30366
30366
  }
30367
30367
  decode(A, e = 0) {
30368
- if (!Pn)
30368
+ if (!Wn)
30369
30369
  throw new Error("ZSTDDecoder: Await .init() before decoding.");
30370
- const t = A.byteLength, i = Pn.exports.malloc(t);
30371
- nk.set(A, i), e = e || Number(Pn.exports.ZSTD_findDecompressedSize(i, t));
30372
- const I = Pn.exports.malloc(e), o = Pn.exports.ZSTD_decompress(I, e, i, t), s = nk.slice(I, I + o);
30373
- return Pn.exports.free(i), Pn.exports.free(I), s;
30370
+ const t = A.byteLength, i = Wn.exports.malloc(t);
30371
+ nk.set(A, i), e = e || Number(Wn.exports.ZSTD_findDecompressedSize(i, t));
30372
+ const I = Wn.exports.malloc(e), o = Wn.exports.ZSTD_decompress(I, e, i, t), s = nk.slice(I, I + o);
30373
+ return Wn.exports.free(i), Wn.exports.free(I), s;
30374
30374
  }
30375
30375
  };
30376
30376
  const JJ = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", v0 = /* @__PURE__ */ new WeakMap();
@@ -45073,7 +45073,7 @@ class Zi {
45073
45073
  r(Zi, "familyName", "needle-gizmos"), r(Zi, "linesCache", []), r(Zi, "spheresCache", []), r(Zi, "boxesCache", []), r(Zi, "arrowHeadsCache", []), r(Zi, "textLabelCache", []), r(Zi, "timedObjectsBuffer", new Array()), r(Zi, "timesBuffer", new Array()), r(Zi, "contextPostRenderCallbacks", /* @__PURE__ */ new Map()), r(Zi, "contextBeforeRenderCallbacks", /* @__PURE__ */ new Map()), r(Zi, "tmuiNeedsUpdate", !1);
45074
45074
  const eg = IA("debuginput");
45075
45075
  var ER = /* @__PURE__ */ ((g) => (g.Mouse = "mouse", g.Touch = "touch", g.Controller = "controller", g.Hand = "hand", g))(ER || {}), ci = /* @__PURE__ */ ((g) => (g.PointerDown = "pointerdown", g.PointerUp = "pointerup", g.PointerMove = "pointermove", g.KeyDown = "keydown", g.KeyUp = "keyup", g.KeyPressed = "keypress", g))(ci || {});
45076
- class aa extends PointerEvent {
45076
+ class Ca extends PointerEvent {
45077
45077
  constructor(e, t, i) {
45078
45078
  super(e, i);
45079
45079
  /** the device index: mouse and touch are always 0, otherwise e.g. index of the connected Gamepad or XRController */
@@ -45278,7 +45278,7 @@ class GAA {
45278
45278
  return;
45279
45279
  const e = this.getPointerId(A);
45280
45280
  eg && hi(`pointer down #${e}, identifier:${A.pointerId}`);
45281
- const t = this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), i = new aa("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: t, pressure: A.pressure });
45281
+ const t = this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), i = new Ca("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: t, pressure: A.pressure });
45282
45282
  this.onDown(i);
45283
45283
  });
45284
45284
  r(this, "onPointerMove", (A) => {
@@ -45288,13 +45288,13 @@ class GAA {
45288
45288
  A.pointerType === "mouse" && (e = this.getFirstPressedButtonForPointer(0) ?? 0);
45289
45289
  const t = this.getPointerId(A, e);
45290
45290
  e === -1 && (e = t);
45291
- const i = this.getAndUpdateSpatialObjectForScreenPosition(t, A.clientX, A.clientY), I = new aa("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: t, button: e, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: i, pressure: A.pressure });
45291
+ const i = this.getAndUpdateSpatialObjectForScreenPosition(t, A.clientX, A.clientY), I = new Ca("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: t, button: e, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: i, pressure: A.pressure });
45292
45292
  this.onMove(I);
45293
45293
  });
45294
45294
  r(this, "onPointerUp", (A) => {
45295
45295
  if (this.context.isInAR)
45296
45296
  return;
45297
- const e = this.getPointerId(A), t = new aa("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), pressure: A.pressure });
45297
+ const e = this.getPointerId(A), t = new Ca("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: e, button: A.button, clientX: A.clientX, clientY: A.clientY, pointerType: A.pointerType, buttonName: this.getButtonName(A), device: this.getAndUpdateSpatialObjectForScreenPosition(e, A.clientX, A.clientY), pressure: A.pressure });
45298
45298
  this.onUp(t), this._pointerIds[e] = -1, eg && console.log("ID=" + e, "PointerId=" + A.pointerId, "ALL:", [...this._pointerIds]);
45299
45299
  });
45300
45300
  r(this, "onPointerCancel", (A) => {
@@ -45304,21 +45304,21 @@ class GAA {
45304
45304
  r(this, "onTouchStart", (A) => {
45305
45305
  if (this.context.isInAR)
45306
45306
  for (let e = 0; e < A.changedTouches.length; e++) {
45307
- const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new aa("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45307
+ const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new Ca("pointerdown", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45308
45308
  this.onDown(o);
45309
45309
  }
45310
45310
  });
45311
45311
  r(this, "onTouchMove", (A) => {
45312
45312
  if (this.context.isInAR)
45313
45313
  for (let e = 0; e < A.changedTouches.length; e++) {
45314
- const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new aa("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45314
+ const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), o = new Ca("pointermove", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: I, pressure: t.force });
45315
45315
  this.onMove(o);
45316
45316
  }
45317
45317
  });
45318
45318
  r(this, "onTouchEnd", (A) => {
45319
45319
  if (this.context.isInAR)
45320
45320
  for (let e = 0; e < A.changedTouches.length; e++) {
45321
- const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = new aa("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), pressure: t.force });
45321
+ const t = A.changedTouches[e], i = this.getPointerIndex(t.identifier), I = new Ca("pointerup", A, { origin: this, mode: "screen", deviceIndex: 0, pointerId: i, button: 0, clientX: t.clientX, clientY: t.clientY, pointerType: "touch", buttonName: "unknown", device: this.getAndUpdateSpatialObjectForScreenPosition(i, t.clientX, t.clientY), pressure: t.force });
45322
45322
  this.onUp(I), this._pointerIds[i] = -1;
45323
45323
  }
45324
45324
  });
@@ -45380,7 +45380,7 @@ class GAA {
45380
45380
  a.options.once && (n.listeners.splice(C, 1), C--), a.callback(A);
45381
45381
  }
45382
45382
  }
45383
- if (A instanceof aa) {
45383
+ if (A instanceof Ca) {
45384
45384
  const s = this._eventListeners[A.type];
45385
45385
  if (s)
45386
45386
  for (const n of s) {
@@ -46278,7 +46278,7 @@ Pinch: ${(i = this.getGesture("pinch")) == null ? void 0 : i.value.toFixed(3)}`)
46278
46278
  if (this.xr.mode === "immersive-vr" || this.xr.isPassThrough) {
46279
46279
  this.pointerInit.origin = this, this.pointerInit.pointerId = this.index * 10 + e, this.pointerInit.pointerType = this.hand ? "hand" : "controller", this.pointerInit.button = e, this.pointerInit.buttonName = t, this.pointerInit.isPrimary = i, this.pointerInit.mode = this.inputSource.targetRayMode, this.pointerInit.ray = this.ray, this.pointerInit.device = this.object, this.pointerInit.pressure = o;
46280
46280
  const s = Le.Current;
46281
- Le.Current = this.xr.context, ga && A !== "pointermove" && console.warn("Pointer event", A, e, t, { ...this.pointerInit }), this.xr.context.input.createInputEvent(new aa(A, I, this.pointerInit)), Le.Current = s;
46281
+ Le.Current = this.xr.context, ga && A !== "pointermove" && console.warn("Pointer event", A, e, t, { ...this.pointerInit }), this.xr.context.input.createInputEvent(new Ca(A, I, this.pointerInit)), Le.Current = s;
46282
46282
  }
46283
46283
  }
46284
46284
  }
@@ -54812,15 +54812,15 @@ class beA {
54812
54812
  r(this, "tempBoundingBox", new wt());
54813
54813
  this.context = A;
54814
54814
  }
54815
- /**@deprecated use this.context.physics.engine.raycast */
54815
+ /**@deprecated use `this.context.physics.engine.raycast` {@link IPhysicsEngine.raycast} */
54816
54816
  raycastPhysicsFast(A, e = void 0, t = 1 / 0, i = !0) {
54817
54817
  var I;
54818
- return ((I = this.context.physics.engine) == null ? void 0 : I.raycast(A, e, t, i)) ?? null;
54818
+ return ((I = this.context.physics.engine) == null ? void 0 : I.raycast(A, e, { maxDistance: t, solid: i })) ?? null;
54819
54819
  }
54820
- /**@deprecated use this.context.physics.engine.raycastAndGetNormal */
54820
+ /**@deprecated use `this.context.physics.engine.raycastAndGetNormal` {@link IPhysicsEngine.raycastAndGetNormal} */
54821
54821
  raycastPhysicsFastAndGetNormal(A, e = void 0, t = 1 / 0, i = !0) {
54822
54822
  var I;
54823
- return ((I = this.context.physics.engine) == null ? void 0 : I.raycastAndGetNormal(A, e, t, i)) ?? null;
54823
+ return ((I = this.context.physics.engine) == null ? void 0 : I.raycastAndGetNormal(A, e, { maxDistance: t, solid: i })) ?? null;
54824
54824
  }
54825
54825
  /**@deprecated use this.context.physics.engine.sphereOverlap */
54826
54826
  sphereOverlapPhysics(A, e) {
@@ -56132,7 +56132,20 @@ class By extends HTMLElement {
56132
56132
  width: 100%;
56133
56133
  }
56134
56134
 
56135
-
56135
+ @media (max-width: 300px) or (max-height: 350px){
56136
+ .options {
56137
+ display: none;
56138
+ padding: 0;
56139
+ margin: 0;
56140
+ border: none;
56141
+ }
56142
+ .logo.any-options {
56143
+ border: none !important;
56144
+ padding: 0;
56145
+ margin-bottom: 0 !important;
56146
+ padding-bottom: 0 !important;
56147
+ }
56148
+ }
56136
56149
 
56137
56150
  /* dark mode */
56138
56151
  /*
@@ -58661,7 +58674,7 @@ var JtA = Object.defineProperty, btA = Object.getOwnPropertyDescriptor, Mn = (g,
58661
58674
  (o = g[I]) && (i = (t ? o(A, e, i) : o(i)) || i);
58662
58675
  return t && i && JtA(A, e, i), i;
58663
58676
  };
58664
- const AI = IA("debugaudio"), ra = class extends RA {
58677
+ const AI = IA("debugaudio"), aa = class extends RA {
58665
58678
  constructor() {
58666
58679
  super(...arguments);
58667
58680
  r(this, "clip", "");
@@ -58689,7 +58702,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58689
58702
  (this.playInBackground === !1 || Is()) && (this.wasPlaying = this.isPlaying, this.isPlaying && this.pause());
58690
58703
  break;
58691
58704
  case "visible":
58692
- AI && console.log("visible", this.enabled, this.playOnAwake, !this.isPlaying, ra.userInteractionRegistered, this.wasPlaying), this.enabled && this.playOnAwake && !this.isPlaying && ra.userInteractionRegistered && this.wasPlaying && this.play();
58705
+ AI && console.log("visible", this.enabled, this.playOnAwake, !this.isPlaying, aa.userInteractionRegistered, this.wasPlaying), this.enabled && this.playOnAwake && !this.isPlaying && aa.userInteractionRegistered && this.wasPlaying && this.play();
58693
58706
  break;
58694
58707
  }
58695
58708
  });
@@ -58704,7 +58717,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58704
58717
  AI && console.warn("Failed getting sound?", this.name);
58705
58718
  return;
58706
58719
  }
58707
- e.isPlaying && e.stop(), A && e.setBuffer(A), e.loop = this._loop, this.context.application.muted ? e.setVolume(0) : e.setVolume(this.volume), e.autoplay = this.shouldPlay && ra.userInteractionRegistered, this.applySpatialDistanceSettings(), e.isPlaying && e.stop(), ra.registerWaitForAllowAudio(this.__onAllowAudioCallback);
58720
+ e.isPlaying && e.stop(), A && e.setBuffer(A), e.loop = this._loop, this.context.application.muted ? e.setVolume(0) : e.setVolume(this.volume), e.autoplay = this.shouldPlay && aa.userInteractionRegistered, this.applySpatialDistanceSettings(), e.isPlaying && e.stop(), aa.registerWaitForAllowAudio(this.__onAllowAudioCallback);
58708
58721
  });
58709
58722
  r(this, "__onAllowAudioCallback", () => {
58710
58723
  this.shouldPlay && this.play();
@@ -58757,7 +58770,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58757
58770
  }
58758
58771
  get Sound() {
58759
58772
  var A;
58760
- if (!this.sound && ra.userInteractionRegistered) {
58773
+ if (!this.sound && aa.userInteractionRegistered) {
58761
58774
  let e = aA.getComponent(this.context.mainCamera, oB) ?? aA.findObjectOfType(oB, this.context);
58762
58775
  !e && this.context.mainCamera && (e = aA.addNewComponent(this.context.mainCamera, oB)), e != null && e.listener ? (this.sound = new e_(e.listener), (A = this.gameObject) == null || A.add(this.sound)) : AI && console.warn("No audio listener found in scene - can not play audio");
58763
58776
  }
@@ -58804,7 +58817,7 @@ const AI = IA("debugaudio"), ra = class extends RA {
58804
58817
  }, console.error);
58805
58818
  }
58806
58819
  onEnable() {
58807
- this.sound && this.gameObject.add(this.sound), ra.userInteractionRegistered ? this.playOnAwake && this.context.application.isVisible && this.play() : ra.registerWaitForAllowAudio(() => {
58820
+ this.sound && this.gameObject.add(this.sound), aa.userInteractionRegistered ? this.playOnAwake && this.context.application.isVisible && this.play() : aa.registerWaitForAllowAudio(() => {
58808
58821
  this.enabled && !this.destroyed && this.shouldPlay && this.onNewClip(this.clip);
58809
58822
  }), globalThis.addEventListener("visibilitychange", this.onVisibilityChanged), this.context.application.addEventListener(Tk.MuteChanged, this.onApplicationMuteChanged);
58810
58823
  }
@@ -58890,7 +58903,7 @@ Using the assigned clip instead:`, this.clip), A = this.clip);
58890
58903
  this.helper && (this.isPlaying && this.helper.update(), this.helper.visible = this.isPlaying), this._needUpdateSpatialDistanceSettings && this.applySpatialDistanceSettings(), this.sound && !this.sound.isPlaying && this.shouldPlay && !this._hasEnded && (this._hasEnded = !0, AI && console.log("Audio clip ended", this.clip), this.dispatchEvent(new CustomEvent("ended", { detail: this })));
58891
58904
  }
58892
58905
  };
58893
- let Fi = ra;
58906
+ let Fi = aa;
58894
58907
  Mn([
58895
58908
  D(URL)
58896
58909
  ], Fi.prototype, "clip", 2);
@@ -59754,7 +59767,7 @@ const zk = (iG = class extends RA {
59754
59767
  r(this, "autoMass", !0);
59755
59768
  r(this, "_mass", 0);
59756
59769
  r(this, "useGravity", !0);
59757
- r(this, "centerOfMass", new w());
59770
+ r(this, "centerOfMass", new w(0, 0, 0));
59758
59771
  r(this, "constraints", Pi.None);
59759
59772
  r(this, "isKinematic", !1);
59760
59773
  r(this, "drag", 0);
@@ -59981,7 +59994,7 @@ So([
59981
59994
  D()
59982
59995
  ], _t.prototype, "useGravity", 2);
59983
59996
  So([
59984
- D()
59997
+ D(w)
59985
59998
  ], _t.prototype, "centerOfMass", 2);
59986
59999
  So([
59987
60000
  QI(),
@@ -60017,7 +60030,7 @@ So([
60017
60030
  So([
60018
60031
  QI()
60019
60032
  ], _t.prototype, "dominanceGroup", 2);
60020
- const Wn = IA("debugsync"), Xh = "STRS";
60033
+ const ra = IA("debugsync"), Xh = "STRS";
60021
60034
  LH(Xh, rC.getRootAsSyncedTransformModel);
60022
60035
  const Os = new Ud();
60023
60036
  function zY(g, A, e = !0) {
@@ -60033,7 +60046,7 @@ let Xk = 0, Ch = 0;
60033
60046
  YtA((g) => {
60034
60047
  var t;
60035
60048
  const e = ((t = g.connection.currentServerUrl) == null ? void 0 : t.includes("glitch")) ? 10 : 40;
60036
- Ch = Math.floor(Xk / e), Xk = 0, Wn && Ch > 0 && console.log("Sync Transform Fast Interval", Ch);
60049
+ Ch = Math.floor(Xk / e), Xk = 0, ra && Ch > 0 && console.log("Sync Transform Fast Interval", Ch);
60037
60050
  });
60038
60051
  class hB extends RA {
60039
60052
  constructor() {
@@ -60063,7 +60076,7 @@ class hB extends RA {
60063
60076
  }
60064
60077
  /** Request ownership of an object - you need to be connected to a room */
60065
60078
  requestOwnership() {
60066
- Wn && console.log("Request ownership"), this._model ? this._model.requestOwnership() : (this._shouldRequestOwnership = !0, this._needsUpdate = !0);
60079
+ ra && console.log("Request ownership"), this._model ? this._model.requestOwnership() : (this._shouldRequestOwnership = !0, this._needsUpdate = !0);
60067
60080
  }
60068
60081
  hasOwnership() {
60069
60082
  var e;
@@ -60075,7 +60088,7 @@ class hB extends RA {
60075
60088
  }
60076
60089
  /** @internal */
60077
60090
  awake() {
60078
- Wn && console.log("new instance", this.guid, this), this._receivedDataBefore = !1, this._targetPosition = new w(), this._targetRotation = new MA(), this.lastWorldPos = new w(), this.lastWorldRotation = new MA(), this.rb = aA.getComponentInChildren(this.gameObject, _t), this.rb && (this._wasKinematic = this.rb.isKinematic), this.receivedUpdate = !0, this._model = new UY(this.context.connection, this.guid), this.context.connection.isConnected && this.tryGetLastState(), this.joinedRoomCallback = this.tryGetLastState.bind(this), this.context.connection.beginListen(st.JoinedRoom, this.joinedRoomCallback), this.receivedDataCallback = this.onReceivedData.bind(this), this.context.connection.beginListenBinary(Xh, this.receivedDataCallback);
60091
+ ra && console.log("new instance", this.guid, this), this._receivedDataBefore = !1, this._targetPosition = new w(), this._targetRotation = new MA(), this.lastWorldPos = new w(), this.lastWorldRotation = new MA(), this.rb = aA.getComponentInChildren(this.gameObject, _t), this.rb && (this._wasKinematic = this.rb.isKinematic), this.receivedUpdate = !0, this._model = new UY(this.context.connection, this.guid), this.context.connection.isConnected && this.tryGetLastState(), this.joinedRoomCallback = this.tryGetLastState.bind(this), this.context.connection.beginListen(st.JoinedRoom, this.joinedRoomCallback), this.receivedDataCallback = this.onReceivedData.bind(this), this.context.connection.beginListenBinary(Xh, this.receivedDataCallback);
60079
60092
  }
60080
60093
  /** @internal */
60081
60094
  onDestroy() {
@@ -60088,7 +60101,7 @@ class hB extends RA {
60088
60101
  onReceivedData(e) {
60089
60102
  var t;
60090
60103
  if (!this.destroyed && typeof e.guid == "function" && e.guid() === this.guid) {
60091
- Wn && console.log("new data", this.context.connection.connectionId, this.context.time.frameCount, this.guid, e), this.receivedUpdate = !0, this._receivedFastUpdate = e.fast();
60104
+ ra && console.log("new data", this.context.connection.connectionId, this.context.time.frameCount, this.guid, e), this.receivedUpdate = !0, this._receivedFastUpdate = e.fast();
60092
60105
  const i = e.transform();
60093
60106
  if (i) {
60094
60107
  Us.markDirty(this.gameObject, !0);
@@ -60113,14 +60126,14 @@ class hB extends RA {
60113
60126
  if (!this.activeAndEnabled || !this.context.connection.isConnected)
60114
60127
  return;
60115
60128
  if (!this.context.connection.isInRoom || !this._model) {
60116
- Wn && console.log("no model or room", this.name, this.guid, this.context.connection.isInRoom);
60129
+ ra && console.log("no model or room", this.name, this.guid, this.context.connection.isInRoom);
60117
60130
  return;
60118
60131
  }
60119
60132
  this._shouldRequestOwnership && (this._shouldRequestOwnership = !1, this._model.requestOwnership());
60120
60133
  const e = this.worldPosition, t = this.worldQuaternion;
60121
60134
  if (this._model.isOwned && !this.receivedUpdate) {
60122
60135
  const o = e.distanceTo(this.lastWorldPos), s = t.angleTo(this.lastWorldRotation), n = this._model.hasOwnership || this.fastMode ? 1e-4 : 1e-3;
60123
- (o > n || s > n) && (this._model.hasOwnership ? this._needsUpdate = !0 : (Wn && console.log(this.guid, "reset because not owned but", this.gameObject.name, this.lastWorldPos), this.worldPosition = this.lastWorldPos, e.copy(this.lastWorldPos), this.worldQuaternion = this.lastWorldRotation, t.copy(this.lastWorldRotation), Us.markDirty(this.gameObject, !0), this._needsUpdate = !1));
60136
+ (o > n || s > n) && (this._model.hasOwnership ? this._needsUpdate = !0 : (ra && console.log(this.guid, "reset because not owned but", this.gameObject.name, this.lastWorldPos), this.worldPosition = this.lastWorldPos, e.copy(this.lastWorldPos), this.worldQuaternion = this.lastWorldRotation, t.copy(this.lastWorldRotation), Us.markDirty(this.gameObject, !0), this._needsUpdate = !1));
60124
60137
  }
60125
60138
  if (this._model && !this._model.hasOwnership && this._model.isOwned && this._receivedDataBefore) {
60126
60139
  const s = this._receivedFastUpdate || this.fastMode ? 0.5 : 0.3;
@@ -60135,18 +60148,14 @@ class hB extends RA {
60135
60148
  }
60136
60149
  n && Us.markDirty(this.gameObject, !0);
60137
60150
  }
60138
- if (this.receivedUpdate = !1, this.lastWorldPos.copy(e), this.lastWorldRotation.copy(t), !this._model)
60139
- return;
60140
- if (!this._model || this._model.hasOwnership === void 0 || !this._model.hasOwnership) {
60141
- this.rb && (this.rb.isKinematic = this._model.isOwned ?? !1, this.rb.setVelocity(0, 0, 0));
60151
+ if (this.receivedUpdate = !1, this.lastWorldPos.copy(e), this.lastWorldRotation.copy(t), !this._model || !this._model || this._model.hasOwnership === void 0 || !this._model.hasOwnership)
60142
60152
  return;
60143
- }
60144
- this.rb && (this._wasKinematic !== void 0 && (Wn && console.log("reset kinematic", this.rb.name, this._wasKinematic), this.rb.isKinematic = this._wasKinematic), this.gameObject.position.distanceTo(new w(0, 0, 0)) > 1e3 && (Wn && console.log("RESET", this.name), this.gameObject.position.set(0, 1, 0), this.rb.setVelocity(0, 0, 0)));
60153
+ this.rb && this._wasKinematic !== void 0 && (ra && console.log("reset kinematic", this.rb.name, this._wasKinematic), this.rb.isKinematic = this._wasKinematic);
60145
60154
  const i = 10, I = this.rb || this.fastMode;
60146
60155
  if (this._needsUpdate && (this.context.time.frameCount % i === 0 || I)) {
60147
60156
  if (Xk++, I && Ch > 0 && this.context.time.frameCount % Ch !== 0)
60148
60157
  return;
60149
- Wn && console.log("send update", this.context.connection.connectionId, this.guid, this.gameObject.name, this.gameObject.guid), this.overridePhysics && this.rb, this._needsUpdate = !1;
60158
+ ra && console.log("send update", this.context.connection.connectionId, this.guid, this.gameObject.name, this.gameObject.guid), this.overridePhysics && this.rb, this._needsUpdate = !1;
60150
60159
  const o = zY(this.guid, this, !!I);
60151
60160
  this.context.connection.sendBinary(o);
60152
60161
  }
@@ -66474,23 +66483,31 @@ class ss extends RA {
66474
66483
  r(this, "sharedMaterial");
66475
66484
  r(this, "membership", [0]);
66476
66485
  r(this, "filter");
66486
+ /**
66487
+ * Apply the collider properties to the physics engine.
66488
+ */
66477
66489
  r(this, "updateProperties", () => {
66478
66490
  var e;
66479
66491
  (e = this.context.physics.engine) == null || e.updateProperties(this);
66480
66492
  });
66481
66493
  }
66494
+ /** @internal */
66482
66495
  get isCollider() {
66483
66496
  return !0;
66484
66497
  }
66498
+ /** @internal */
66485
66499
  awake() {
66486
66500
  super.awake(), this.attachedRigidbody || (this.attachedRigidbody = this.gameObject.getComponentInParent(_t));
66487
66501
  }
66502
+ /** @internal */
66488
66503
  start() {
66489
66504
  this.attachedRigidbody || (this.attachedRigidbody = this.gameObject.getComponentInParent(_t));
66490
66505
  }
66506
+ /** @internal */
66491
66507
  onEnable() {
66492
66508
  this.attachedRigidbody || (this.attachedRigidbody = this.gameObject.getComponentInParent(_t));
66493
66509
  }
66510
+ /** @internal */
66494
66511
  onDisable() {
66495
66512
  var e;
66496
66513
  (e = this.context.physics.engine) == null || e.removeBody(this);
@@ -70980,8 +70997,6 @@ class tM extends RA {
70980
70997
  r(this, "_hasReflection", !1);
70981
70998
  r(this, "_ambientLightObj");
70982
70999
  r(this, "_hemisphereLightObj");
70983
- // used when skybox is used to support ambient intensity for "non custom shaders"
70984
- r(this, "_lightProbeObj");
70985
71000
  }
70986
71001
  awake() {
70987
71002
  var t;
@@ -71016,7 +71031,7 @@ class tM extends RA {
71016
71031
  const e = this.calculateIntensityFactor(this.ambientLight);
71017
71032
  this._ambientLightObj = new QU(this.ambientLight, this.ambientIntensity * e), FQ && console.log("Created ambient light", this.sourceId, this._ambientLightObj, this.ambientIntensity, e);
71018
71033
  }
71019
- this._ambientLightObj && this.gameObject.add(this._ambientLightObj), this._lightProbeObj && this._lightProbeObj.removeFromParent();
71034
+ this._ambientLightObj && this.gameObject.add(this._ambientLightObj);
71020
71035
  } else if (this.ambientMode === nh.Trilight) {
71021
71036
  if (this.ambientTrilight) {
71022
71037
  const e = this.ambientTrilight[0], t = this.ambientTrilight[this.ambientTrilight.length - 1], i = this.calculateIntensityFactor(t);
@@ -71027,7 +71042,7 @@ class tM extends RA {
71027
71042
  this.sourceId && this.context.sceneLighting.internalEnableReflection(this.sourceId);
71028
71043
  }
71029
71044
  onDisable() {
71030
- FQ && console.warn("💡⚫ <<< Disable lighting:", this.sourceId, this), this._lightProbeObj && this._lightProbeObj.removeFromParent(), this._ambientLightObj && this._ambientLightObj.removeFromParent(), this._hemisphereLightObj && this._hemisphereLightObj.removeFromParent(), this.sourceId && this.context.sceneLighting.internalDisableReflection(this.sourceId);
71045
+ FQ && console.warn("💡⚫ <<< Disable lighting:", this.sourceId, this), this._ambientLightObj && this._ambientLightObj.removeFromParent(), this._hemisphereLightObj && this._hemisphereLightObj.removeFromParent(), this.sourceId && this.context.sceneLighting.internalDisableReflection(this.sourceId);
71031
71046
  }
71032
71047
  }
71033
71048
  var G2 = /* @__PURE__ */ ((g) => (g[g.INT = 5124] = "INT", g[g.FLOAT = 5126] = "FLOAT", g[g.FLOAT_VEC2 = 35664] = "FLOAT_VEC2", g[g.FLOAT_VEC3 = 35665] = "FLOAT_VEC3", g[g.FLOAT_VEC4 = 35666] = "FLOAT_VEC4", g[g.INT_VEC2 = 35667] = "INT_VEC2", g[g.INT_VEC3 = 35668] = "INT_VEC3", g[g.INT_VEC4 = 35669] = "INT_VEC4", g[g.BOOL = 35670] = "BOOL", g[g.BOOL_VEC2 = 35671] = "BOOL_VEC2", g[g.BOOL_VEC3 = 35672] = "BOOL_VEC3", g[g.BOOL_VEC4 = 35673] = "BOOL_VEC4", g[g.FLOAT_MAT2 = 35674] = "FLOAT_MAT2", g[g.FLOAT_MAT3 = 35675] = "FLOAT_MAT3", g[g.FLOAT_MAT4 = 35676] = "FLOAT_MAT4", g[g.SAMPLER_2D = 35678] = "SAMPLER_2D", g[g.SAMPLER_3D = 35680] = "SAMPLER_3D", g[g.SAMPLER_CUBE = 35681] = "SAMPLER_CUBE", g[g.UNKNOWN = 0] = "UNKNOWN", g))(G2 || {});
@@ -96340,7 +96355,7 @@ class zrA {
96340
96355
  }
96341
96356
  }
96342
96357
  const qi = IA("debugphysics"), AG = IA("debugcolliderplacement"), eG = IA("debugcollisions"), XrA = IA("showcolliders"), tG = IA("debugraycasts"), OI = Symbol("needle component"), yI = Symbol("physics body"), nx = Symbol("rigidbody");
96343
- let Ca;
96358
+ let On;
96344
96359
  globalThis.true = globalThis.true !== void 0 ? globalThis.true : !0;
96345
96360
  qi && console.log("Use Rapier", !0, globalThis.true);
96346
96361
  rt.registerCallback(ki.ContextCreationStart, (g) => {
@@ -96483,10 +96498,10 @@ const Dh = class {
96483
96498
  return qi && console.log("Rapier disabled"), !1;
96484
96499
  if (this._hasCreatedWorld)
96485
96500
  return console.error("Invalid call to create physics world: world is already created"), !0;
96486
- if (this._hasCreatedWorld = !0, Ca === void 0) {
96501
+ if (this._hasCreatedWorld = !0, On === void 0) {
96487
96502
  qi && console.log("Import Rapier");
96488
96503
  const A = await Promise.resolve().then(() => ZrA);
96489
- qi && console.log("Init Rapier"), await A.init(), Ca = A;
96504
+ qi && console.log("Init Rapier"), await A.init(), On = A;
96490
96505
  }
96491
96506
  return qi && console.log("Physics engine initialized, creating world..."), this._world = new Uc(this._gravity), this.enabled = !0, this._isInitialized = !0, qi && console.log("Physics world created"), !0;
96492
96507
  }
@@ -96494,37 +96509,39 @@ const Dh = class {
96494
96509
  validate() {
96495
96510
  this._isInitialized || qi && (this._lastWarnTime = this._lastWarnTime ?? 0, Date.now() - this._lastWarnTime > 1e3 && (this._lastWarnTime = Date.now(), console.warn("Physics engine is not initialized")));
96496
96511
  }
96497
- raycast(A, e, t, i) {
96498
- var s;
96499
- t === void 0 && (t = 1 / 0), i === void 0 && (i = !0);
96500
- const I = this.getPhysicsRay(this.rapierRay, A, e);
96501
- if (!I)
96512
+ raycast(A, e, t) {
96513
+ var n;
96514
+ let i = t == null ? void 0 : t.maxDistance, I = t == null ? void 0 : t.solid;
96515
+ i === void 0 && (i = 1 / 0), I === void 0 && (I = !0);
96516
+ const o = this.getPhysicsRay(this.rapierRay, A, e);
96517
+ if (!o)
96502
96518
  return null;
96503
- (this.debugRenderRaycasts || tG) && ye.DrawRay(I.origin, I.dir, 255, 1);
96504
- const o = (s = this.world) == null ? void 0 : s.castRay(I, t, i, void 0, void 0, void 0, void 0, (n) => {
96505
- var C;
96506
- return !((C = n[OI]) != null && C.gameObject.layers.isEnabled(2));
96519
+ (this.debugRenderRaycasts || tG) && ye.DrawRay(o.origin, o.dir, 255, 1);
96520
+ const s = (n = this.world) == null ? void 0 : n.castRay(o, i, I, t == null ? void 0 : t.queryFilterFlags, t == null ? void 0 : t.filterGroups, void 0, void 0, (C) => {
96521
+ const a = C[OI];
96522
+ return t != null && t.filterPredicate ? t.filterPredicate(a) : !(a != null && a.gameObject.layers.isEnabled(2));
96507
96523
  });
96508
- if (o) {
96509
- const n = I.pointAt(o.toi), C = this.raycastVectorsBuffer.get();
96510
- return C.set(n.x, n.y, n.z), { point: C, collider: o.collider[OI] };
96524
+ if (s) {
96525
+ const C = o.pointAt(s.toi), a = this.raycastVectorsBuffer.get();
96526
+ return a.set(C.x, C.y, C.z), { point: a, collider: s.collider[OI] };
96511
96527
  }
96512
96528
  return null;
96513
96529
  }
96514
- raycastAndGetNormal(A, e, t, i) {
96515
- var s;
96516
- t === void 0 && (t = 1 / 0), i === void 0 && (i = !0);
96517
- const I = this.getPhysicsRay(this.rapierRay, A, e);
96518
- if (!I)
96530
+ raycastAndGetNormal(A, e, t) {
96531
+ var n;
96532
+ let i = t == null ? void 0 : t.maxDistance, I = t == null ? void 0 : t.solid;
96533
+ i === void 0 && (i = 1 / 0), I === void 0 && (I = !0);
96534
+ const o = this.getPhysicsRay(this.rapierRay, A, e);
96535
+ if (!o)
96519
96536
  return null;
96520
- (this.debugRenderRaycasts || tG) && ye.DrawRay(I.origin, I.dir, 255, 1);
96521
- const o = (s = this.world) == null ? void 0 : s.castRayAndGetNormal(I, t, i, void 0, void 0, void 0, void 0, (n) => {
96522
- var C;
96523
- return !((C = n[OI]) != null && C.gameObject.layers.isEnabled(2));
96537
+ (this.debugRenderRaycasts || tG) && ye.DrawRay(o.origin, o.dir, 255, 1);
96538
+ const s = (n = this.world) == null ? void 0 : n.castRayAndGetNormal(o, i, I, t == null ? void 0 : t.queryFilterFlags, t == null ? void 0 : t.filterGroups, void 0, void 0, (C) => {
96539
+ const a = C[OI];
96540
+ return t != null && t.filterPredicate ? t.filterPredicate(a) : !(a != null && a.gameObject.layers.isEnabled(2));
96524
96541
  });
96525
- if (o) {
96526
- const n = I.pointAt(o.toi), C = o.normal, a = this.raycastVectorsBuffer.get(), B = this.raycastVectorsBuffer.get();
96527
- return a.set(n.x, n.y, n.z), B.set(C.x, C.y, C.z), { point: a, normal: B, collider: o.collider[OI] };
96542
+ if (s) {
96543
+ const C = o.pointAt(s.toi), a = s.normal, B = this.raycastVectorsBuffer.get(), Q = this.raycastVectorsBuffer.get();
96544
+ return B.set(C.x, C.y, C.z), Q.set(a.x, a.y, a.z), { point: B, normal: Q, collider: s.collider[OI] };
96528
96545
  }
96529
96546
  return null;
96530
96547
  }
@@ -96761,25 +96778,29 @@ this is not optimal for performance since this isn't supported by the Rapier phy
96761
96778
  Error:`, s), null;
96762
96779
  }
96763
96780
  }
96764
- /** Updates the collision groups */
96781
+ /**
96782
+ * Updates the collision groups of a collider.
96783
+ *
96784
+ * @param collider - The collider to update.
96785
+ */
96765
96786
  updateColliderCollisionGroups(A) {
96766
96787
  const e = A[yI], t = A.membership;
96767
96788
  let i = 0;
96768
96789
  if (t == null)
96769
- i = 4294967295;
96790
+ i = 65535;
96770
96791
  else
96771
96792
  for (let s = 0; s < t.length; s++) {
96772
96793
  const n = t[s];
96773
- i |= 1 << n;
96794
+ n > 31 ? console.error(`Rapier only supports 32 layers, layer ${n} is not supported`) : i |= 1 << Math.floor(n);
96774
96795
  }
96775
96796
  const I = A.filter;
96776
96797
  let o = 0;
96777
96798
  if (I == null)
96778
- o = 4294967295;
96799
+ o = 65535;
96779
96800
  else
96780
96801
  for (let s = 0; s < I.length; s++) {
96781
96802
  const n = I[s];
96782
- o |= 1 << n;
96803
+ n > 31 ? console.error(`Rapier only supports 32 layers, layer ${n} is not supported`) : o |= 1 << Math.floor(n);
96783
96804
  }
96784
96805
  e.setCollisionGroups(i << 16 | o);
96785
96806
  }
@@ -96792,12 +96813,12 @@ Error:`, s), null;
96792
96813
  if (t = i[yI], !t) {
96793
96814
  const I = i.isKinematic && !AG;
96794
96815
  qi && console.log("Create rigidbody", I);
96795
- const o = I ? Ca.RigidBodyDesc.kinematicPositionBased() : Ca.RigidBodyDesc.dynamic(), s = xe(A.attachedRigidbody.gameObject);
96796
- o.setTranslation(s.x, s.y, s.z), o.setRotation(bt(A.attachedRigidbody.gameObject)), t = this.world.createRigidBody(o), this.bodies.push(t), this.objects.push(i);
96816
+ const o = I ? On.RigidBodyDesc.kinematicPositionBased() : On.RigidBodyDesc.dynamic(), s = xe(A.attachedRigidbody.gameObject);
96817
+ o.setTranslation(s.x, s.y, s.z), o.setRotation(bt(A.attachedRigidbody.gameObject)), o.centerOfMass = new On.Vector3(i.centerOfMass.x, i.centerOfMass.y, i.centerOfMass.z), t = this.world.createRigidBody(o), this.bodies.push(t), this.objects.push(i);
96797
96818
  }
96798
96819
  t[OI] = i, i[yI] = t, this.internalUpdateRigidbodyProperties(i, t), this.getRigidbodyRelativeMatrix(A.gameObject, i.gameObject, e), A[nx] = t;
96799
96820
  } else {
96800
- const i = Ca.RigidBodyDesc.kinematicPositionBased(), I = xe(A.gameObject);
96821
+ const i = On.RigidBodyDesc.kinematicPositionBased(), I = xe(A.gameObject);
96801
96822
  i.setTranslation(I.x, I.y, I.z), i.setRotation(bt(A.gameObject)), t = this.world.createRigidBody(i), e.identity(), t[OI] = null;
96802
96823
  }
96803
96824
  return t;
@@ -96840,7 +96861,7 @@ Error:`, s), null;
96840
96861
  e.collider(t).setDensity(1e-7);
96841
96862
  e.recomputeMassPropertiesFromColliders();
96842
96863
  }
96843
- e.setEnabledRotations(!A.lockRotationX, !A.lockRotationY, !A.lockRotationZ, !1), e.setEnabledTranslations(!A.lockPositionX, !A.lockPositionY, !A.lockPositionZ, !1), A.isKinematic ? e.setBodyType(Ca.RigidBodyType.KinematicPositionBased, !1) : e.setBodyType(Ca.RigidBodyType.Dynamic, !1);
96864
+ e.setEnabledRotations(!A.lockRotationX, !A.lockRotationY, !A.lockRotationZ, !1), e.setEnabledTranslations(!A.lockPositionX, !A.lockPositionY, !A.lockPositionZ, !1), A.isKinematic ? e.setBodyType(On.RigidBodyType.KinematicPositionBased, !1) : e.setBodyType(On.RigidBodyType.Dynamic, !1);
96844
96865
  }
96845
96866
  step(A) {
96846
96867
  this.world && this.enabled && (this._isUpdatingPhysicsWorld = !0, this.eventQueue || (this.eventQueue = new QF(!1)), A && (this.world.timestep = ie.lerp(this.world.timestep, A, 0.8)), this.world.step(this.eventQueue), this._isUpdatingPhysicsWorld = !1);
@@ -96951,7 +96972,7 @@ Error:`, s), null;
96951
96972
  }
96952
96973
  const I = A[yI], o = e[yI];
96953
96974
  this.calculateJointRelativeMatrices(A.gameObject, e.gameObject, this._tempMatrix), this._tempMatrix.decompose(this._tempPosition, this._tempQuaternion, this._tempScale);
96954
- const s = Ca.JointData.revolute(t, this._tempPosition, i), n = this.world.createImpulseJoint(s, I, o, !0);
96975
+ const s = On.JointData.revolute(t, this._tempPosition, i), n = this.world.createImpulseJoint(s, I, o, !0);
96955
96976
  qi && console.log("ADD HINGE JOINT", n);
96956
96977
  }
96957
96978
  calculateJointRelativeMatrices(A, e, t) {
@@ -98337,7 +98358,7 @@ export {
98337
98358
  ko as MinMaxGradient,
98338
98359
  Jt as NEEDLE_progressive,
98339
98360
  fp as NEKeyboardEvent,
98340
- aa as NEPointerEvent,
98361
+ Ca as NEPointerEvent,
98341
98362
  rt as NeedleEngine,
98342
98363
  GO as NeedleEngineHTMLElement,
98343
98364
  hO as NeedleGltfLoader,