@needle-tools/engine 4.11.5-next.b4a2f9e → 4.11.5-next.d9019e4
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 +7 -5
- package/components.needle.json +1 -1
- package/dist/generateMeshBVH.worker-mO20N_b8.js +21 -0
- package/dist/{gltf-progressive-GwdQV1Qx.umd.cjs → gltf-progressive-DWcmTMCh.umd.cjs} +1 -1
- package/dist/{gltf-progressive-CftVUJy3.min.js → gltf-progressive-DZrY8VT6.min.js} +2 -2
- package/dist/{gltf-progressive-BvlZQAkt.js → gltf-progressive-DgYz5BYa.js} +19 -19
- package/dist/loader.worker-Dip-PthR.js +23 -0
- package/dist/{needle-engine.bundle-DnJ3q6Oa.js → needle-engine.bundle-D4DKOVeW.js} +4309 -4228
- package/dist/{needle-engine.bundle-DG38kMjs.umd.cjs → needle-engine.bundle-DbRanrPL.umd.cjs} +138 -143
- package/dist/{needle-engine.bundle-D2_8tEN0.min.js → needle-engine.bundle-GILPT50v.min.js} +130 -135
- package/dist/needle-engine.js +336 -335
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-CJC0Npcd.js → postprocessing-BTW9pD_s.js} +1822 -1723
- package/dist/{postprocessing-DrM4PWU3.umd.cjs → postprocessing-CMgoN5t5.umd.cjs} +229 -158
- package/dist/{postprocessing-l7zsdO_Q.min.js → postprocessing-DYDtB188.min.js} +227 -156
- package/dist/rapier-B3oL1ap-.js +5217 -0
- package/dist/rapier-DJ-luMxr.min.js +1 -0
- package/dist/rapier-DQltNJbN.umd.cjs +1 -0
- package/dist/{three-BDW9I486.min.js → three-B7CT31Bt.min.js} +1 -5
- package/dist/{three-MHVqtJYj.js → three-DfMvBzXi.js} +0 -5
- package/dist/{three-examples-CgwGHSgz.umd.cjs → three-examples-CsW4_6LI.umd.cjs} +2 -7
- package/dist/{three-examples-fvEPSC8L.min.js → three-examples-D1P7eEhn.min.js} +2 -7
- package/dist/{three-examples-C5Ht-QFN.js → three-examples-D1SK93ek.js} +1 -7
- package/dist/{three-mesh-ui-BjWTTk1R.js → three-mesh-ui-C_uSB5dD.js} +1 -1
- package/dist/{three-mesh-ui-Bm32sS2a.umd.cjs → three-mesh-ui-DpATDXwU.umd.cjs} +1 -1
- package/dist/{three-mesh-ui-CLdkp21K.min.js → three-mesh-ui-LQ44s0AL.min.js} +1 -1
- package/dist/{three-iFaDq9U3.umd.cjs → three-qj71I7J3.umd.cjs} +2 -6
- package/dist/{vendor-CsyK1CFs.min.js → vendor-BKGa4GE0.min.js} +34 -39
- package/dist/{vendor-petGQl0N.js → vendor-D0zoswDa.js} +1626 -1605
- package/dist/{vendor-6kAXU6fm.umd.cjs → vendor-UCpFAwt1.umd.cjs} +30 -35
- package/lib/engine/debug/debug_spector.d.ts +16 -0
- package/lib/engine/debug/debug_spector.js +28 -0
- package/lib/engine/debug/debug_spector.js.map +1 -0
- package/lib/engine/engine_application.d.ts +7 -0
- package/lib/engine/engine_application.js +8 -1
- package/lib/engine/engine_application.js.map +1 -1
- package/lib/engine/engine_context.js +4 -1
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_physics.js +6 -2
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_physics_rapier.d.ts +11 -2
- package/lib/engine/engine_physics_rapier.js +9 -0
- package/lib/engine/engine_physics_rapier.js.map +1 -1
- package/lib/engine/engine_types.d.ts +16 -0
- package/lib/engine/engine_typestore.d.ts +1 -0
- package/lib/engine/engine_typestore.js +5 -6
- package/lib/engine/engine_typestore.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.d.ts +1 -0
- package/lib/engine/webcomponents/needle-engine.js +3 -0
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/xr/NeedleXRSession.js +2 -1
- package/lib/engine/xr/NeedleXRSession.js.map +1 -1
- package/lib/engine-components/Component.d.ts +5 -0
- package/lib/engine-components/Component.js +7 -0
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/RendererInstancing.d.ts +5 -3
- package/lib/engine-components/RendererInstancing.js +64 -31
- package/lib/engine-components/RendererInstancing.js.map +1 -1
- package/lib/engine-components/Skybox.d.ts +15 -5
- package/lib/engine-components/Skybox.js +37 -25
- package/lib/engine-components/Skybox.js.map +1 -1
- package/lib/engine-components/export/usdz/USDZExporter.d.ts +24 -3
- package/lib/engine-components/export/usdz/USDZExporter.js +36 -2
- package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
- package/lib/engine-components/web/CursorFollow.d.ts +1 -0
- package/lib/engine-components/web/CursorFollow.js +2 -0
- package/lib/engine-components/web/CursorFollow.js.map +1 -1
- package/lib/engine-components/webxr/WebXR.js +4 -0
- package/lib/engine-components/webxr/WebXR.js.map +1 -1
- package/lib/needle-engine.js +2 -1
- package/lib/needle-engine.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/debug/debug_spector.ts +43 -0
- package/src/engine/engine_application.ts +16 -1
- package/src/engine/engine_context.ts +5 -1
- package/src/engine/engine_physics.ts +6 -2
- package/src/engine/engine_physics_rapier.ts +11 -2
- package/src/engine/engine_types.ts +17 -0
- package/src/engine/engine_typestore.ts +5 -6
- package/src/engine/webcomponents/needle-engine.ts +4 -0
- package/src/engine/xr/NeedleXRSession.ts +3 -1
- package/src/engine-components/Component.ts +9 -1
- package/src/engine-components/RendererInstancing.ts +69 -33
- package/src/engine-components/Skybox.ts +47 -36
- package/src/engine-components/export/usdz/USDZExporter.ts +52 -5
- package/src/engine-components/web/CursorFollow.ts +3 -0
- package/src/engine-components/webxr/WebXR.ts +4 -0
- package/src/needle-engine.ts +4 -2
- package/dist/generateMeshBVH.worker-B9bjdr6J.js +0 -25
- package/dist/loader.worker-CiTwpNPW.js +0 -27
- package/dist/rapier-BqdcSmKY.umd.cjs +0 -1
- package/dist/rapier-Cg3w3nFI.min.js +0 -1
- package/dist/rapier-sU12SWAs.js +0 -5217
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebXR.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXR.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebXR.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXR.ts"],"names":[],"mappings":"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"}
|
package/lib/needle-engine.js
CHANGED
|
@@ -6,7 +6,7 @@ export * from "./engine-components/api.js";
|
|
|
6
6
|
export * from "./engine-components-experimental/api.js";
|
|
7
7
|
export * from "./engine-schemes/api.js";
|
|
8
8
|
// make accessible for external javascript
|
|
9
|
-
import { Context, loadAsset, NeedleXRSession, onAfterRender, onBeforeRender, onClear, onDestroy, onInitialized, onStart, onUpdate, VERSION } from "./engine/api.js";
|
|
9
|
+
import { Context, loadAsset, NeedleXRSession, onAfterRender, onBeforeRender, onClear, onDestroy, onInitialized, onStart, onUpdate, TypeStore, VERSION } from "./engine/api.js";
|
|
10
10
|
const Needle = {
|
|
11
11
|
VERSION: VERSION,
|
|
12
12
|
Context: Context,
|
|
@@ -14,6 +14,7 @@ const Needle = {
|
|
|
14
14
|
assets: {
|
|
15
15
|
loadFromURL: loadAsset,
|
|
16
16
|
},
|
|
17
|
+
types: TypeStore,
|
|
17
18
|
onStart: onStart,
|
|
18
19
|
onUpdate: onUpdate,
|
|
19
20
|
onBeforeRender: onBeforeRender,
|
package/lib/needle-engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,yCAAyC,CAAC;AACjD,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AAExC,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,yCAAyC,CAAC;AACjD,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AAExC,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/K,MAAM,MAAM,GAAG;IACX,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,eAAe;IAChC,MAAM,EAAE;QACJ,WAAW,EAAE,SAAS;KACzB;IACD,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,aAAa;IAC5B,oBAAoB,EAAE,aAAa;IACnC,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,OAAO;CACjB,CAAC;AAEX,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,SAAS,EAAE;IAC7C,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CACtF;AACD,SAAS,cAAc,CAAC,GAAW;IAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KAC1B;AACL,CAAC;AACD,OAAO,KAAK,SAAS,MAAM,kCAAkC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,CAAC;AAE1B,OAAO,KAAK,UAAU,MAAM,2CAA2C,CAAC;AACxE,cAAc,CAAC,UAAU,CAAC,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE;IACzD,QAAQ,MAAM,EAAE;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,SAAS;QACb;YACI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM;KACb;CACJ;AAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;CACjC;KACI;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACtB,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3C;CACJ;AAGD,wBAAwB;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IACtB,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;CAC/B;;IACI,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "4.11.5-next.
|
|
3
|
+
"version": "4.11.5-next.d9019e4",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
|
|
5
5
|
"main": "dist/needle-engine.min.js",
|
|
6
6
|
"exports": {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Context } from "../engine_setup.js";
|
|
2
|
+
import { isDevEnvironment } from "./debug.js";
|
|
3
|
+
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
SPECTOR?: {
|
|
7
|
+
Spector: new () => Spector;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
interface Spector {
|
|
11
|
+
displayUI: () => void;
|
|
12
|
+
setCanvas: (canvas: HTMLCanvasElement) => void;
|
|
13
|
+
spyCanvases: boolean;
|
|
14
|
+
startCaptureOnNextFrame: () => void;
|
|
15
|
+
captureCanvas: (canvas: HTMLCanvasElement) => any;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export function initSpectorIfAvailable(_context: Context, canvas: HTMLCanvasElement): void {
|
|
21
|
+
if (typeof window !== undefined && window.SPECTOR) {
|
|
22
|
+
console.log(window.SPECTOR);
|
|
23
|
+
const params = new URLSearchParams(window.location.search);
|
|
24
|
+
if (params.has("spector")) {
|
|
25
|
+
const frame = Number.parseInt(params.get("spector") || "0") || 0;
|
|
26
|
+
console.log("Scheduled Spector capture at frame #" + frame);
|
|
27
|
+
const spector = new window.SPECTOR.Spector();
|
|
28
|
+
spector.spyCanvases = true;
|
|
29
|
+
waitForFrameAndCapture();
|
|
30
|
+
return;
|
|
31
|
+
|
|
32
|
+
function waitForFrameAndCapture() {
|
|
33
|
+
if (frame > _context.time.frame) return window.requestAnimationFrame(() => waitForFrameAndCapture());
|
|
34
|
+
const res = spector.captureCanvas(canvas);
|
|
35
|
+
if (res && res instanceof Promise) res.then(() => spector.displayUI());
|
|
36
|
+
else spector.displayUI();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (isDevEnvironment()) {
|
|
40
|
+
console.debug("Spector available: Add '?spector=<frame>' to the URL to enable it and capture a frame.");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -15,7 +15,7 @@ const userInteractionCallbacks: Function[] = [];
|
|
|
15
15
|
*/
|
|
16
16
|
export function internalOnUserInputRegistered() {
|
|
17
17
|
if (userInteractionRegistered) return;
|
|
18
|
-
if (isDevEnvironment()) console.debug("User
|
|
18
|
+
if (isDevEnvironment()) console.debug("[Needle Engine] User input registered: Media playback is now allowed.");
|
|
19
19
|
userInteractionRegistered = true;
|
|
20
20
|
const copy = [...userInteractionCallbacks];
|
|
21
21
|
userInteractionCallbacks.length = 0;
|
|
@@ -28,6 +28,21 @@ document.addEventListener('dragstart', internalOnUserInputRegistered);
|
|
|
28
28
|
document.addEventListener('touchend', internalOnUserInputRegistered);
|
|
29
29
|
document.addEventListener('keydown', internalOnUserInputRegistered);
|
|
30
30
|
|
|
31
|
+
|
|
32
|
+
declare global {
|
|
33
|
+
interface Navigator {
|
|
34
|
+
userActivation?: {
|
|
35
|
+
isActive: boolean;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// User Activation should be available across browsers since November 2023 https://developer.mozilla.org/en-US/docs/Web/API/UserActivation
|
|
40
|
+
if (typeof window !== "undefined" && "userActivation" in navigator && navigator.userActivation?.isActive) {
|
|
41
|
+
if (isDevEnvironment()) console.debug("[Needle Engine] User input already active: Media playback is now allowed.");
|
|
42
|
+
userInteractionCallbacks.length = 0;
|
|
43
|
+
userInteractionRegistered = true;
|
|
44
|
+
}
|
|
45
|
+
|
|
31
46
|
/**
|
|
32
47
|
* The Application class can be used to mute audio globally, and to check if the application (canvas) is currently visible (it's tab is active and not minimized).
|
|
33
48
|
*/
|
|
@@ -13,6 +13,7 @@ import * as Stats from 'three/examples/jsm/libs/stats.module.js';
|
|
|
13
13
|
import type { EffectComposer as ThreeEffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
|
|
14
14
|
import { nodeFrame } from "three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js";
|
|
15
15
|
|
|
16
|
+
import { initSpectorIfAvailable } from './debug/debug_spector.js';
|
|
16
17
|
import { isDevEnvironment, LogType, showBalloonError, showBalloonMessage } from './debug/index.js';
|
|
17
18
|
import { Addressables } from './engine_addressables.js';
|
|
18
19
|
import { AnimationsRegistry } from './engine_animation.js';
|
|
@@ -622,6 +623,8 @@ export class Context implements IContext {
|
|
|
622
623
|
|
|
623
624
|
this.input.bindEvents();
|
|
624
625
|
|
|
626
|
+
initSpectorIfAvailable(this, this.renderer.domElement);
|
|
627
|
+
|
|
625
628
|
return this.renderer;
|
|
626
629
|
}
|
|
627
630
|
|
|
@@ -1706,7 +1709,8 @@ export class Context implements IContext {
|
|
|
1706
1709
|
|
|
1707
1710
|
if (this._stats) {
|
|
1708
1711
|
this._stats.end();
|
|
1709
|
-
|
|
1712
|
+
const dt = this.time.fps < 20 ? 50 : 150;
|
|
1713
|
+
if (this.time.frameCount % dt === 0)
|
|
1710
1714
|
console.log(this.renderer.info.render.calls + " DrawCalls", "\nRender:", { ...this.renderer.info.render }, "\nMemory:", { ...this.renderer.info.memory }, "\nTarget Framerate: " + this.targetFrameRate);
|
|
1711
1715
|
}
|
|
1712
1716
|
|
|
@@ -13,6 +13,7 @@ import type { IPhysicsEngine } from './engine_types.js';
|
|
|
13
13
|
import { getParam } from "./engine_utils.js"
|
|
14
14
|
|
|
15
15
|
const debugPhysics = getParam("debugphysics");
|
|
16
|
+
const debugWorker = getParam("debugworker");
|
|
16
17
|
const layerMaskHelper: Layers = new Layers();
|
|
17
18
|
|
|
18
19
|
|
|
@@ -654,6 +655,9 @@ namespace NEMeshBVH {
|
|
|
654
655
|
// if there are no workers available, create a new one
|
|
655
656
|
if (!workerInstance && workerInstances.length < 3) {
|
|
656
657
|
try {
|
|
658
|
+
if (debugWorker) {
|
|
659
|
+
console.warn("[GenerateMeshBVHWorker] Creating worker with import.meta.url:", import.meta.url);
|
|
660
|
+
}
|
|
657
661
|
workerInstance = new _GenerateMeshBVHWorker();
|
|
658
662
|
workerInstances.push(workerInstance);
|
|
659
663
|
}
|
|
@@ -665,8 +669,8 @@ namespace NEMeshBVH {
|
|
|
665
669
|
failedToCreateMeshBVHWorker += 10;
|
|
666
670
|
}
|
|
667
671
|
else {
|
|
668
|
-
console.error("Failed to create MeshBVH worker");
|
|
669
|
-
console.
|
|
672
|
+
console.error("Failed to create MeshBVH worker. Please see below for more details:");
|
|
673
|
+
console.log(err);
|
|
670
674
|
}
|
|
671
675
|
failedToCreateMeshBVHWorker++;
|
|
672
676
|
}
|
|
@@ -67,7 +67,7 @@ export class RapierPhysics implements IPhysicsEngine {
|
|
|
67
67
|
debugRenderRaycasts: boolean = false;
|
|
68
68
|
|
|
69
69
|
removeBody(obj: IComponent) {
|
|
70
|
-
if(debugPhysics) console.log("REMOVE BODY", obj?.name, obj[$bodyKey]);
|
|
70
|
+
if (debugPhysics) console.log("REMOVE BODY", obj?.name, obj[$bodyKey]);
|
|
71
71
|
if (!obj) return;
|
|
72
72
|
this.validate();
|
|
73
73
|
const body = obj[$bodyKey];
|
|
@@ -817,7 +817,16 @@ export class RapierPhysics implements IPhysicsEngine {
|
|
|
817
817
|
return component;
|
|
818
818
|
}
|
|
819
819
|
|
|
820
|
-
|
|
820
|
+
/**
|
|
821
|
+
* Creates a collider in the physics world.
|
|
822
|
+
*
|
|
823
|
+
* @param collider - The collider component.
|
|
824
|
+
* @param desc - The collider description.
|
|
825
|
+
* @returns The created collider.
|
|
826
|
+
*
|
|
827
|
+
* @throws Will throw an error if the physics world is not initialized. Make sure to call `initialize()` before creating colliders.
|
|
828
|
+
*/
|
|
829
|
+
createCollider(collider: ICollider, desc: ColliderDesc) {
|
|
821
830
|
if (!this.world) throw new Error("Physics world not initialized");
|
|
822
831
|
const matrix = this._tempMatrix;
|
|
823
832
|
let rigidBody: RigidBody | undefined = undefined;
|
|
@@ -566,6 +566,23 @@ export interface IPhysicsEngine {
|
|
|
566
566
|
*/
|
|
567
567
|
boxOverlap(point: Vector3, size: Vector3, rotation: Vector4Like | null): Array<ShapeOverlapResult>;
|
|
568
568
|
|
|
569
|
+
/**
|
|
570
|
+
* Creates a collider in the physics world.
|
|
571
|
+
*
|
|
572
|
+
* @param collider - The collider component.
|
|
573
|
+
* @param desc - The collider description.
|
|
574
|
+
* @returns The created collider.
|
|
575
|
+
*
|
|
576
|
+
* @throws Will throw an error if the physics world is not initialized. Make sure to call `initialize()` before creating colliders.
|
|
577
|
+
*
|
|
578
|
+
* @example
|
|
579
|
+
* ```typescript
|
|
580
|
+
* const boxColliderDesc = NEEDLE_ENGINE_MODULES.RAPIER_PHYSICS.MODULE.ColliderDesc.cuboid(1, 1, 1);
|
|
581
|
+
* const collider = physicsEngine.createCollider(myBoxColliderComponent, boxColliderDesc);
|
|
582
|
+
* ```
|
|
583
|
+
*/
|
|
584
|
+
createCollider(collider: ICollider, desc: any): any;
|
|
585
|
+
|
|
569
586
|
// Collider methods
|
|
570
587
|
/**
|
|
571
588
|
* Adds a sphere collider to the physics world
|
|
@@ -7,6 +7,7 @@ declare type Type = new (...args: any[]) => any;
|
|
|
7
7
|
class _TypeStore {
|
|
8
8
|
|
|
9
9
|
private _types: Map<string, Type> = new Map();
|
|
10
|
+
private _reverseTypes: Map<Type, string> = new Map();
|
|
10
11
|
|
|
11
12
|
constructor() {
|
|
12
13
|
if (debug) console.warn("TypeStore: Created", this);
|
|
@@ -18,8 +19,10 @@ class _TypeStore {
|
|
|
18
19
|
public add(key: string, type: Type) {
|
|
19
20
|
if (debug) console.warn("ADD TYPE", key);
|
|
20
21
|
const existing = this._types.get(key);
|
|
21
|
-
if (!existing)
|
|
22
|
+
if (!existing) {
|
|
22
23
|
this._types.set(key, type);
|
|
24
|
+
this._reverseTypes.set(type, key);
|
|
25
|
+
}
|
|
23
26
|
else {
|
|
24
27
|
if (debug) {
|
|
25
28
|
if (existing !== type) {
|
|
@@ -40,11 +43,7 @@ class _TypeStore {
|
|
|
40
43
|
* @returns the key/name for the given type if registered
|
|
41
44
|
*/
|
|
42
45
|
public getKey(type: Type): string | null {
|
|
43
|
-
|
|
44
|
-
if (value === type)
|
|
45
|
-
return key;
|
|
46
|
-
}
|
|
47
|
-
return null;
|
|
46
|
+
return this._reverseTypes.get(type) || null;
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
|
|
@@ -296,6 +296,10 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
|
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
|
|
299
|
+
connectedMoveCallback() {
|
|
300
|
+
// we dont want needle-engine to cleanup JUST because the element is moved in the DOM. See https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#custom_element_lifecycle_callbacks
|
|
301
|
+
}
|
|
302
|
+
|
|
299
303
|
/**
|
|
300
304
|
* @internal
|
|
301
305
|
*/
|
|
@@ -527,7 +527,9 @@ export class NeedleXRSession implements INeedleXRSession {
|
|
|
527
527
|
else
|
|
528
528
|
console.log("%c" + `Requesting ${mode} session`, "font-weight:bold;");
|
|
529
529
|
for (const script of scripts) {
|
|
530
|
-
if (script.onBeforeXR
|
|
530
|
+
if (script.onBeforeXR && script.activeAndEnabled && !script.destroyed) {
|
|
531
|
+
script.onBeforeXR(mode, init);
|
|
532
|
+
}
|
|
531
533
|
}
|
|
532
534
|
for (const listener of this._sessionRequestStartListeners) {
|
|
533
535
|
listener({ mode, init });
|
|
@@ -11,6 +11,7 @@ import { syncDestroy, syncInstantiate, SyncInstantiateOptions } from "../engine/
|
|
|
11
11
|
import { Context, FrameEvent } from "../engine/engine_setup.js";
|
|
12
12
|
import * as threeutils from "../engine/engine_three_utils.js";
|
|
13
13
|
import type { Collision, ComponentInit, Constructor, ConstructorConcrete, GuidsMap, ICollider, IComponent, IGameObject, SourceIdentifier } from "../engine/engine_types.js";
|
|
14
|
+
import { TypeStore } from "../engine/engine_typestore.js";
|
|
14
15
|
import type { INeedleXRSessionEventReceiver, NeedleXRControllerEventArgs, NeedleXREventArgs } from "../engine/engine_xr.js";
|
|
15
16
|
import { type IPointerEventHandler, PointerEventData } from "./ui/PointerEvents.js";
|
|
16
17
|
|
|
@@ -540,7 +541,8 @@ export abstract class GameObject extends Object3D implements Object3D, IGameObje
|
|
|
540
541
|
}
|
|
541
542
|
}
|
|
542
543
|
|
|
543
|
-
|
|
544
|
+
// DO NOT CHANGE THE SYMBOL NAME
|
|
545
|
+
const $componentName = Symbol("component-name");
|
|
544
546
|
|
|
545
547
|
/**
|
|
546
548
|
* Needle Engine component's are the main building blocks of the Needle Engine.
|
|
@@ -581,6 +583,12 @@ export abstract class Component implements IComponent, EventTarget,
|
|
|
581
583
|
*/
|
|
582
584
|
get isComponent(): boolean { return true; }
|
|
583
585
|
|
|
586
|
+
/**
|
|
587
|
+
* Get the original component type name before minification (available if the component is registered in the TypeStore)
|
|
588
|
+
*/
|
|
589
|
+
get [$componentName]() { return TypeStore.getKey(this.constructor as any) || undefined; }
|
|
590
|
+
|
|
591
|
+
|
|
584
592
|
private __context: Context | undefined;
|
|
585
593
|
|
|
586
594
|
/**
|
|
@@ -29,8 +29,9 @@ export class InstancingHandler {
|
|
|
29
29
|
* (The instancing mesh renderer will grow x2 if the max instance count is reached)
|
|
30
30
|
* @default 4
|
|
31
31
|
* @returns The initial instance count
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
*/
|
|
33
|
+
// @ts-ignore (ignore the unused parameter warning)
|
|
34
|
+
static getStartInstanceCount = (obj: Object3D) => {
|
|
34
35
|
return 4;
|
|
35
36
|
};
|
|
36
37
|
|
|
@@ -45,20 +46,24 @@ export class InstancingHandler {
|
|
|
45
46
|
if (res) {
|
|
46
47
|
if (handlesArray === null) handlesArray = [];
|
|
47
48
|
handlesArray.push(res);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
NEEDLE_progressive.assignMeshLOD(mesh, 0).then(lod => {
|
|
57
|
-
if (lod && renderer.activeAndEnabled && geometry != lod) {
|
|
58
|
-
res.setGeometry(lod);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
49
|
+
|
|
50
|
+
// Load LOD for textures
|
|
51
|
+
const mat = res.object.material;
|
|
52
|
+
if(Array.isArray(mat)) {
|
|
53
|
+
mat.forEach(m => NEEDLE_progressive.assignTextureLOD(m, 0));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
NEEDLE_progressive.assignTextureLOD(mat, 0);
|
|
61
57
|
}
|
|
58
|
+
|
|
59
|
+
// Load LOD for geometry
|
|
60
|
+
const mesh = res.object;
|
|
61
|
+
const geometry = mesh.geometry;
|
|
62
|
+
NEEDLE_progressive.assignMeshLOD(mesh, 0).then(lod => {
|
|
63
|
+
if (lod && geometry != lod) {
|
|
64
|
+
res.setGeometry(lod);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
else if (level <= 0 && obj.type !== "Mesh") {
|
|
@@ -349,7 +354,7 @@ class InstancedMeshRenderer {
|
|
|
349
354
|
private _context: Context;
|
|
350
355
|
private _batchedMesh: BatchedMesh;
|
|
351
356
|
private _handles: (InstanceHandle | null)[] = [];
|
|
352
|
-
private
|
|
357
|
+
private _geometryIds = new WeakMap<BufferGeometry, number>();
|
|
353
358
|
private _maxInstanceCount: number;
|
|
354
359
|
|
|
355
360
|
private _currentInstanceCount = 0;
|
|
@@ -439,6 +444,10 @@ class InstancedMeshRenderer {
|
|
|
439
444
|
private _needUpdateBounds: boolean = false;
|
|
440
445
|
private _debugMaterial: MeshStandardMaterial | null = null;
|
|
441
446
|
|
|
447
|
+
private getBatchedMeshName() {
|
|
448
|
+
return this.name ? `${this.name} (BatchedMesh)` : "BatchedMesh";
|
|
449
|
+
}
|
|
450
|
+
|
|
442
451
|
constructor(name: string, geo: BufferGeometry, material: Material, initialMaxCount: number, context: Context) {
|
|
443
452
|
this.name = name;
|
|
444
453
|
this.geometry = geo;
|
|
@@ -452,6 +461,7 @@ class InstancedMeshRenderer {
|
|
|
452
461
|
this._maxVertexCount = estimate.vertexCount;
|
|
453
462
|
this._maxIndexCount = estimate.indexCount;
|
|
454
463
|
this._batchedMesh = new BatchedMesh(this._maxInstanceCount, this._maxVertexCount, this._maxIndexCount, this._debugMaterial ?? this.material);
|
|
464
|
+
this._batchedMesh.name = this.getBatchedMeshName();
|
|
455
465
|
// this.inst = new InstancedMesh(geo, material, count);
|
|
456
466
|
this._batchedMesh[$instancingAutoUpdateBounds] = true;
|
|
457
467
|
// this.inst.count = 0;
|
|
@@ -475,7 +485,7 @@ class InstancedMeshRenderer {
|
|
|
475
485
|
context.post_render_callbacks.push(this.onAfterRender);
|
|
476
486
|
|
|
477
487
|
if (debugInstancing) {
|
|
478
|
-
console.log(`Instanced renderer created with ${this._maxInstanceCount} instances, ${this._maxVertexCount} max vertices and ${this._maxIndexCount} max indices for \"${name}\"`)
|
|
488
|
+
console.log(`Instanced renderer (${this.name}) created with ${this._maxInstanceCount} instances, ${this._maxVertexCount} max vertices and ${this._maxIndexCount} max indices for \"${name}\"`)
|
|
479
489
|
}
|
|
480
490
|
}
|
|
481
491
|
|
|
@@ -522,7 +532,8 @@ class InstancedMeshRenderer {
|
|
|
522
532
|
return false;
|
|
523
533
|
}
|
|
524
534
|
|
|
525
|
-
|
|
535
|
+
const newInstanceCount = this._currentInstanceCount + 1;
|
|
536
|
+
if (newInstanceCount > this._maxInstanceCount || this.mustGrow(geo)) {
|
|
526
537
|
if (this.allowResize) {
|
|
527
538
|
this.grow(geo);
|
|
528
539
|
}
|
|
@@ -644,34 +655,42 @@ class InstancedMeshRenderer {
|
|
|
644
655
|
private mustGrow(geo?: BufferGeometry): boolean {
|
|
645
656
|
if (this.count >= this._maxInstanceCount) return true;
|
|
646
657
|
if (!geo || !geo.attributes) return false;
|
|
658
|
+
|
|
659
|
+
const isKnownGeometry = this._geometryIds.has(geo);
|
|
660
|
+
if (isKnownGeometry) return false;
|
|
661
|
+
|
|
647
662
|
const meshInfo = getMeshInformation(geo);
|
|
648
663
|
const newVertexCount = meshInfo.vertexCount;
|
|
649
664
|
const newIndexCount = meshInfo.indexCount;
|
|
650
665
|
return this._currentVertexCount + newVertexCount > this._maxVertexCount || this._currentIndexCount + newIndexCount > this._maxIndexCount;
|
|
651
666
|
}
|
|
652
667
|
|
|
668
|
+
private _growId = 0;
|
|
653
669
|
private grow(geometry: BufferGeometry) {
|
|
670
|
+
const id = ++this._growId;
|
|
654
671
|
const growFactor = 2;
|
|
655
672
|
const newSize = Math.ceil(this._maxInstanceCount * growFactor);
|
|
656
673
|
|
|
657
674
|
// create a new BatchedMesh instance
|
|
675
|
+
// TODO: we should keep track of how many instances for each geometry we have and consider that when estimating new space
|
|
658
676
|
const estimatedSpace = this.tryEstimateVertexCountSize(newSize, [geometry]);// geometry.attributes.position.count;
|
|
659
677
|
// const indices = geometry.index ? geometry.index.count : 0;
|
|
660
678
|
const newMaxVertexCount = Math.max(this._maxVertexCount, estimatedSpace.vertexCount);
|
|
661
|
-
const newMaxIndexCount = Math.max(this._maxIndexCount, estimatedSpace.indexCount
|
|
679
|
+
const newMaxIndexCount = Math.max(this._maxIndexCount, estimatedSpace.indexCount);//, Math.ceil(this._maxVertexCount * growFactor));
|
|
662
680
|
|
|
663
681
|
if (debugInstancing) {
|
|
664
682
|
const geometryInfo = getMeshInformation(geometry);
|
|
665
|
-
console.warn(`[Instancing] Growing Buffer\nMesh: \"${this.name}${geometry.name?.length ? "/" + geometry.name : ""}\"
|
|
683
|
+
console.warn(`[Instancing] Growing Buffer\nMesh: \"${this.name}${geometry.name?.length ? "/" + geometry.name : ""}\" (${geometryInfo.vertexCount.toLocaleString()} vertices, ${geometryInfo.indexCount.toLocaleString()} indices)\nMax count ${this._maxInstanceCount.toLocaleString()} → ${newSize.toLocaleString()}\nMax vertex count ${this._maxVertexCount.toLocaleString()} -> ${newMaxVertexCount.toLocaleString()}\nMax index count ${this._maxIndexCount.toLocaleString()} -> ${newMaxIndexCount.toLocaleString()}`);
|
|
666
684
|
this._debugMaterial = createDebugMaterial();
|
|
667
685
|
}
|
|
668
686
|
else if (isDevEnvironment()) {
|
|
669
|
-
console.debug(`[Instancing] Growing Buffer\nMesh: \"${this.name}${geometry.name?.length ? "/" + geometry.name : ""}\"\nMax count ${this._maxInstanceCount} → ${newSize}\nMax vertex count ${this._maxVertexCount} -> ${newMaxVertexCount}\nMax index count ${this._maxIndexCount} -> ${newMaxIndexCount}`);
|
|
687
|
+
console.debug(`[Instancing] Growing Buffer\nMesh: \"${this.name}${geometry.name?.length ? "/" + geometry.name : ""}\"\nMax count ${this._maxInstanceCount} → ${newSize}\nMax vertex count ${this._maxVertexCount.toLocaleString()} -> ${newMaxVertexCount.toLocaleString()}\nMax index count ${this._maxIndexCount.toLocaleString()} -> ${newMaxIndexCount.toLocaleString()}`);
|
|
670
688
|
}
|
|
671
689
|
|
|
672
690
|
this._maxVertexCount = newMaxVertexCount;
|
|
673
691
|
this._maxIndexCount = newMaxIndexCount;
|
|
674
692
|
const newInst = new BatchedMesh(newSize, this._maxVertexCount, this._maxIndexCount, this._debugMaterial ?? this.material);
|
|
693
|
+
newInst.name = this.getBatchedMeshName();
|
|
675
694
|
newInst.layers = this._batchedMesh.layers;
|
|
676
695
|
newInst.castShadow = this._batchedMesh.castShadow;
|
|
677
696
|
newInst.receiveShadow = this._batchedMesh.receiveShadow;
|
|
@@ -686,7 +705,7 @@ class InstancedMeshRenderer {
|
|
|
686
705
|
// dispose the old batched mesh
|
|
687
706
|
this._batchedMesh.dispose();
|
|
688
707
|
this._batchedMesh.removeFromParent();
|
|
689
|
-
this._geometryIds
|
|
708
|
+
this._geometryIds = new WeakMap<BufferGeometry, number>();
|
|
690
709
|
|
|
691
710
|
this._batchedMesh = newInst;
|
|
692
711
|
this._maxInstanceCount = newSize;
|
|
@@ -698,6 +717,11 @@ class InstancedMeshRenderer {
|
|
|
698
717
|
const original = [...this._handles];
|
|
699
718
|
this._handles = [];
|
|
700
719
|
for (const handle of original) {
|
|
720
|
+
if (id !== this._growId) {
|
|
721
|
+
// another grow happened in the meantime
|
|
722
|
+
if (debugInstancing) console.warn("[Instancing] Aborting grow since another grow happened in the meantime");
|
|
723
|
+
return;
|
|
724
|
+
}
|
|
701
725
|
if (handle && handle.__instanceIndex >= 0) {
|
|
702
726
|
this.addGeometry(handle);
|
|
703
727
|
this._handles[handle.__instanceIndex] = handle;
|
|
@@ -722,23 +746,31 @@ class InstancedMeshRenderer {
|
|
|
722
746
|
entry.count += 1;
|
|
723
747
|
}
|
|
724
748
|
|
|
749
|
+
if (_newGeometries && _newGeometries?.length > 0) {
|
|
750
|
+
const index = _newGeometries.indexOf(handle.object.geometry as BufferGeometry);
|
|
751
|
+
if (index !== -1) {
|
|
752
|
+
_newGeometries.splice(index, 1);
|
|
753
|
+
}
|
|
754
|
+
}
|
|
725
755
|
}
|
|
726
756
|
}
|
|
727
757
|
|
|
728
758
|
// then calculate the total vertex count
|
|
729
759
|
let totalVertices = 0;
|
|
730
760
|
let totalIndices = 0;
|
|
761
|
+
let totalGeometries = 0;
|
|
731
762
|
// let maxVertices = 0;
|
|
732
763
|
for (const [_geo, data] of usedGeometries) {
|
|
733
|
-
|
|
734
|
-
|
|
764
|
+
totalGeometries += 1;
|
|
765
|
+
totalVertices += data.vertexCount;
|
|
766
|
+
totalIndices += data.indexCount;
|
|
735
767
|
// maxVertices = Math.max(maxVertices, geo.attributes.position.count * count);
|
|
736
768
|
}
|
|
737
769
|
// we calculate the average to make an educated guess of how many vertices will be needed with the new buffer count
|
|
738
|
-
const averageVerts = Math.ceil(totalVertices / Math.max(1,
|
|
739
|
-
let maxVertexCount = averageVerts *
|
|
740
|
-
const averageIndices = Math.ceil(totalIndices / Math.max(1,
|
|
741
|
-
let maxIndexCount = averageIndices *
|
|
770
|
+
const averageVerts = Math.ceil(totalVertices / Math.max(1, totalGeometries));
|
|
771
|
+
let maxVertexCount = averageVerts * totalGeometries;
|
|
772
|
+
const averageIndices = Math.ceil(totalIndices / Math.max(1, totalGeometries));
|
|
773
|
+
let maxIndexCount = averageIndices * totalGeometries;
|
|
742
774
|
|
|
743
775
|
// if new geometries are provided we *know* that they will be added
|
|
744
776
|
// so we make sure to include them in the calculation
|
|
@@ -753,6 +785,10 @@ class InstancedMeshRenderer {
|
|
|
753
785
|
}
|
|
754
786
|
}
|
|
755
787
|
|
|
788
|
+
if (debugInstancing) {
|
|
789
|
+
console.log(`[Instancing] Estimated size for new buffer ${this.name}\nGeometries: ${totalGeometries} (New: ${_newGeometries?.length || 0})\nInstances: ${newMaxInstances}\nEstimated Vertices: ${maxVertexCount.toLocaleString()}\nEstimated Indices: ${maxIndexCount.toLocaleString()}`);
|
|
790
|
+
}
|
|
791
|
+
|
|
756
792
|
return { vertexCount: maxVertexCount, indexCount: maxIndexCount };
|
|
757
793
|
}
|
|
758
794
|
|
|
@@ -770,16 +806,16 @@ class InstancedMeshRenderer {
|
|
|
770
806
|
let geometryId = this._geometryIds.get(geo);
|
|
771
807
|
if (geometryId === undefined || geometryId === null) {
|
|
772
808
|
if (debugInstancing)
|
|
773
|
-
console.
|
|
809
|
+
console.warn(`[Instancing] > ADD NEW GEOMETRY \"${handle.name} (${geo.name}; ${geo.uuid})\"\nCurrent Instances: ${this._currentInstanceCount}\nMax Vertices: ${handle.maxVertexCount.toLocaleString()}\nMax Indices: ${handle.maxIndexCount.toLocaleString()}\nMax Triangles: ${(handle.maxIndexCount / 3).toLocaleString()}`);
|
|
774
810
|
|
|
775
811
|
geometryId = this._batchedMesh.addGeometry(geo, handle.maxVertexCount, handle.maxIndexCount);
|
|
776
812
|
this._geometryIds.set(geo, geometryId);
|
|
813
|
+
this._currentVertexCount += handle.maxVertexCount;
|
|
814
|
+
this._currentIndexCount += handle.maxIndexCount;
|
|
777
815
|
}
|
|
778
816
|
else {
|
|
779
817
|
if (debugInstancing === "verbose") console.log(`[Instancing] > ADD INSTANCE \"${handle.name}\"\nGEOMETRY_ID=${geometryId}\n${this._currentInstanceCount} instances`);
|
|
780
818
|
}
|
|
781
|
-
this._currentVertexCount += handle.maxVertexCount;
|
|
782
|
-
this._currentIndexCount += handle.maxIndexCount;
|
|
783
819
|
const i = this._batchedMesh.addInstance(geometryId);
|
|
784
820
|
handle.__geometryIndex = geometryId;
|
|
785
821
|
handle.__instanceIndex = i;
|
|
@@ -787,7 +823,7 @@ class InstancedMeshRenderer {
|
|
|
787
823
|
handle.__reservedIndexRange = handle.maxIndexCount;
|
|
788
824
|
this._batchedMesh.setMatrixAt(i, handle.object.matrixWorld);
|
|
789
825
|
if (debugInstancing)
|
|
790
|
-
console.debug(`[Instancing] > ADDED INSTANCE \"${handle.name}\"\nGEOMETRY_ID=${geometryId}\n${this._currentInstanceCount} instances\nIndex: ${handle.__instanceIndex}`);
|
|
826
|
+
console.debug(`[Instancing] > ADDED INSTANCE \"${handle.name}\"\nGEOMETRY_ID=${geometryId}\n${this._currentInstanceCount} instances\nIndex: ${handle.__instanceIndex}\nVertices: ${this._currentVertexCount.toLocaleString()}/${this._maxVertexCount.toLocaleString()},\nIndices: ${this._currentIndexCount.toLocaleString()}/${this._maxIndexCount.toLocaleString()}`);
|
|
791
827
|
|
|
792
828
|
}
|
|
793
829
|
|
|
@@ -803,7 +839,7 @@ class InstancedMeshRenderer {
|
|
|
803
839
|
// this.inst.deleteGeometry(handle.__instanceIndex);
|
|
804
840
|
// else
|
|
805
841
|
// this._batchedMesh.setVisibleAt(handle.__instanceIndex, false);
|
|
806
|
-
if(debugInstancing) {
|
|
842
|
+
if (debugInstancing) {
|
|
807
843
|
console.debug(`[Instancing] < REMOVE INSTANCE \"${handle.name}\" at [${handle.__instanceIndex}]\nGEOMETRY_ID=${handle.__geometryIndex}\n${this._currentInstanceCount} instances\nIndex: ${handle.__instanceIndex}`);
|
|
808
844
|
}
|
|
809
845
|
this._batchedMesh.deleteInstance(handle.__instanceIndex);
|