@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.
- package/CHANGELOG.md +5 -0
- package/README.md +5 -3
- package/dist/needle-engine.js +115 -94
- package/dist/needle-engine.light.js +1220 -1199
- package/dist/needle-engine.light.min.js +108 -95
- package/dist/needle-engine.light.umd.cjs +133 -120
- package/dist/needle-engine.min.js +37 -24
- package/dist/needle-engine.umd.cjs +24 -11
- package/lib/engine/engine_physics.d.ts +2 -2
- package/lib/engine/engine_physics.js +4 -4
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_physics_rapier.d.ts +24 -4
- package/lib/engine/engine_physics_rapier.js +33 -12
- package/lib/engine/engine_physics_rapier.js.map +1 -1
- package/lib/engine/engine_types.d.ts +27 -4
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +0 -1
- package/lib/engine/extensions/NEEDLE_lighting_settings.js +0 -6
- package/lib/engine/extensions/NEEDLE_lighting_settings.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +14 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine-components/Collider.d.ts +25 -0
- package/lib/engine-components/Collider.js +25 -0
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/RigidBody.d.ts +3 -0
- package/lib/engine-components/RigidBody.js +5 -2
- package/lib/engine-components/RigidBody.js.map +1 -1
- package/lib/engine-components/SyncedTransform.js +3 -15
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/codegen/register_types.ts +2 -2
- package/src/engine/engine_physics.ts +4 -4
- package/src/engine/engine_physics_rapier.ts +48 -14
- package/src/engine/engine_types.ts +29 -6
- package/src/engine/extensions/NEEDLE_lighting_settings.ts +0 -5
- package/src/engine/webcomponents/needle menu/needle-menu.ts +14 -1
- package/src/engine-components/Collider.ts +27 -4
- package/src/engine-components/RigidBody.ts +5 -2
- package/src/engine-components/SyncedTransform.ts +4 -17
package/dist/needle-engine.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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.
|
|
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[""
|
|
29482
|
-
OE('globalThis["__NEEDLE_ENGINE_VERSION__"] = "3.37.
|
|
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__"] = "
|
|
29485
|
-
const lC = "3.37.
|
|
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,
|
|
30356
|
+
let J0, Wn, nk;
|
|
30357
30357
|
const b0 = { env: { emscripten_notify_memory_growth: function(g) {
|
|
30358
|
-
nk = new Uint8Array(
|
|
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
|
-
|
|
30365
|
+
Wn = A.instance, b0.env.emscripten_notify_memory_growth(0);
|
|
30366
30366
|
}
|
|
30367
30367
|
decode(A, e = 0) {
|
|
30368
|
-
if (!
|
|
30368
|
+
if (!Wn)
|
|
30369
30369
|
throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
30370
|
-
const t = A.byteLength, i =
|
|
30371
|
-
nk.set(A, i), e = e || Number(
|
|
30372
|
-
const I =
|
|
30373
|
-
return
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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"),
|
|
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,
|
|
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 &&
|
|
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 &&
|
|
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),
|
|
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 =
|
|
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
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 : (
|
|
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
|
-
|
|
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)
|
|
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.
|
|
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
|
|
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,
|
|
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(),
|
|
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
|
|
96498
|
-
var
|
|
96499
|
-
t
|
|
96500
|
-
|
|
96501
|
-
|
|
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(
|
|
96504
|
-
const
|
|
96505
|
-
|
|
96506
|
-
return
|
|
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 (
|
|
96509
|
-
const
|
|
96510
|
-
return
|
|
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
|
|
96515
|
-
var
|
|
96516
|
-
t
|
|
96517
|
-
|
|
96518
|
-
|
|
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(
|
|
96521
|
-
const
|
|
96522
|
-
|
|
96523
|
-
return
|
|
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 (
|
|
96526
|
-
const
|
|
96527
|
-
return
|
|
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
|
-
/**
|
|
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 =
|
|
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 =
|
|
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 ?
|
|
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 =
|
|
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(
|
|
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 =
|
|
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
|
-
|
|
98361
|
+
Ca as NEPointerEvent,
|
|
98341
98362
|
rt as NeedleEngine,
|
|
98342
98363
|
GO as NeedleEngineHTMLElement,
|
|
98343
98364
|
hO as NeedleGltfLoader,
|