@needle-tools/engine 4.11.5-next.9fa3148 → 4.11.5-next.a900688

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 (30) hide show
  1. package/dist/{needle-engine.bundle-D8QnRDOA.js → needle-engine.bundle-Bwinyjsh.js} +2338 -2373
  2. package/dist/{needle-engine.bundle-aQ4JfO6G.umd.cjs → needle-engine.bundle-Dsfd8BPk.umd.cjs} +113 -121
  3. package/dist/{needle-engine.bundle-BODHvc75.min.js → needle-engine.bundle-vPWPv18K.min.js} +108 -116
  4. package/dist/needle-engine.js +2 -2
  5. package/dist/needle-engine.min.js +1 -1
  6. package/dist/needle-engine.umd.cjs +1 -1
  7. package/lib/engine/engine_application.d.ts +0 -7
  8. package/lib/engine/engine_application.js +1 -8
  9. package/lib/engine/engine_application.js.map +1 -1
  10. package/lib/engine/engine_assetdatabase.d.ts +6 -0
  11. package/lib/engine/engine_assetdatabase.js +15 -0
  12. package/lib/engine/engine_assetdatabase.js.map +1 -1
  13. package/lib/engine/engine_context.d.ts +0 -1
  14. package/lib/engine/engine_context.js +2 -5
  15. package/lib/engine/engine_context.js.map +1 -1
  16. package/lib/engine/engine_loaders.js +25 -24
  17. package/lib/engine/engine_loaders.js.map +1 -1
  18. package/lib/engine-components/RendererInstancing.d.ts +3 -5
  19. package/lib/engine-components/RendererInstancing.js +31 -64
  20. package/lib/engine-components/RendererInstancing.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/engine/engine_application.ts +1 -16
  23. package/src/engine/engine_assetdatabase.ts +21 -0
  24. package/src/engine/engine_context.ts +2 -6
  25. package/src/engine/engine_loaders.ts +26 -24
  26. package/src/engine-components/RendererInstancing.ts +33 -69
  27. package/lib/engine/debug/debug_spector.d.ts +0 -16
  28. package/lib/engine/debug/debug_spector.js +0 -28
  29. package/lib/engine/debug/debug_spector.js.map +0 -1
  30. package/src/engine/debug/debug_spector.ts +0 -43
@@ -18,9 +18,8 @@ export class InstancingHandler {
18
18
  * (The instancing mesh renderer will grow x2 if the max instance count is reached)
19
19
  * @default 4
20
20
  * @returns The initial instance count
21
- */
22
- // @ts-ignore (ignore the unused parameter warning)
23
- static getStartInstanceCount = (obj) => {
21
+ * */
22
+ static getStartInstanceCount = (_obj) => {
24
23
  return 4;
25
24
  };
26
25
  objs = [];
@@ -32,22 +31,19 @@ export class InstancingHandler {
32
31
  if (handlesArray === null)
33
32
  handlesArray = [];
34
33
  handlesArray.push(res);
35
- // Load LOD for textures
36
- const mat = res.object.material;
37
- if (Array.isArray(mat)) {
38
- mat.forEach(m => NEEDLE_progressive.assignTextureLOD(m, 0));
39
- }
40
- else {
41
- NEEDLE_progressive.assignTextureLOD(mat, 0);
34
+ // load texture lods
35
+ NEEDLE_progressive.assignTextureLOD(res.renderer.material, 0);
36
+ // Load mesh lods
37
+ // TODO: technically for multi meshes we do this work multiple times (we search for meshes in children and then use the renderer sharedMeshes... that doesnt make sense)
38
+ for (let i = 0; i < renderer.sharedMeshes.length; i++) {
39
+ const mesh = renderer.sharedMeshes[i];
40
+ const geometry = mesh.geometry;
41
+ NEEDLE_progressive.assignMeshLOD(mesh, 0).then(lod => {
42
+ if (lod && renderer.activeAndEnabled && geometry != lod) {
43
+ res.setGeometry(lod);
44
+ }
45
+ });
42
46
  }
43
- // Load LOD for geometry
44
- const mesh = res.object;
45
- const geometry = mesh.geometry;
46
- NEEDLE_progressive.assignMeshLOD(mesh, 0).then(lod => {
47
- if (lod && geometry != lod) {
48
- res.setGeometry(lod);
49
- }
50
- });
51
47
  }
52
48
  else if (level <= 0 && obj.type !== "Mesh") {
53
49
  const nextLevel = level + 1;
@@ -315,7 +311,7 @@ class InstancedMeshRenderer {
315
311
  _context;
316
312
  _batchedMesh;
317
313
  _handles = [];
318
- _geometryIds = new WeakMap();
314
+ _geometryIds = new Map();
319
315
  _maxInstanceCount;
320
316
  _currentInstanceCount = 0;
321
317
  _currentVertexCount = 0;
@@ -395,9 +391,6 @@ class InstancedMeshRenderer {
395
391
  }
396
392
  _needUpdateBounds = false;
397
393
  _debugMaterial = null;
398
- getBatchedMeshName() {
399
- return this.name ? `${this.name} (BatchedMesh)` : "BatchedMesh";
400
- }
401
394
  constructor(name, geo, material, initialMaxCount, context) {
402
395
  this.name = name;
403
396
  this.geometry = geo;
@@ -411,7 +404,6 @@ class InstancedMeshRenderer {
411
404
  this._maxVertexCount = estimate.vertexCount;
412
405
  this._maxIndexCount = estimate.indexCount;
413
406
  this._batchedMesh = new BatchedMesh(this._maxInstanceCount, this._maxVertexCount, this._maxIndexCount, this._debugMaterial ?? this.material);
414
- this._batchedMesh.name = this.getBatchedMeshName();
415
407
  // this.inst = new InstancedMesh(geo, material, count);
416
408
  this._batchedMesh[$instancingAutoUpdateBounds] = true;
417
409
  // this.inst.count = 0;
@@ -432,7 +424,7 @@ class InstancedMeshRenderer {
432
424
  context.pre_render_callbacks.push(this.onBeforeRender);
433
425
  context.post_render_callbacks.push(this.onAfterRender);
434
426
  if (debugInstancing) {
435
- console.log(`Instanced renderer (${this.name}) created with ${this._maxInstanceCount} instances, ${this._maxVertexCount} max vertices and ${this._maxIndexCount} max indices for \"${name}\"`);
427
+ console.log(`Instanced renderer created with ${this._maxInstanceCount} instances, ${this._maxVertexCount} max vertices and ${this._maxIndexCount} max indices for \"${name}\"`);
436
428
  }
437
429
  }
438
430
  dispose() {
@@ -470,8 +462,7 @@ class InstancedMeshRenderer {
470
462
  console.error("Cannot add object to instancing without geometry", handle.name);
471
463
  return false;
472
464
  }
473
- const newInstanceCount = this._currentInstanceCount + 1;
474
- if (newInstanceCount > this._maxInstanceCount || this.mustGrow(geo)) {
465
+ if (this.mustGrow(geo)) {
475
466
  if (this.allowResize) {
476
467
  this.grow(geo);
477
468
  }
@@ -576,37 +567,30 @@ class InstancedMeshRenderer {
576
567
  return true;
577
568
  if (!geo || !geo.attributes)
578
569
  return false;
579
- const isKnownGeometry = this._geometryIds.has(geo);
580
- if (isKnownGeometry)
581
- return false;
582
570
  const meshInfo = getMeshInformation(geo);
583
571
  const newVertexCount = meshInfo.vertexCount;
584
572
  const newIndexCount = meshInfo.indexCount;
585
573
  return this._currentVertexCount + newVertexCount > this._maxVertexCount || this._currentIndexCount + newIndexCount > this._maxIndexCount;
586
574
  }
587
- _growId = 0;
588
575
  grow(geometry) {
589
- const id = ++this._growId;
590
576
  const growFactor = 2;
591
577
  const newSize = Math.ceil(this._maxInstanceCount * growFactor);
592
578
  // create a new BatchedMesh instance
593
- // TODO: we should keep track of how many instances for each geometry we have and consider that when estimating new space
594
579
  const estimatedSpace = this.tryEstimateVertexCountSize(newSize, [geometry]); // geometry.attributes.position.count;
595
580
  // const indices = geometry.index ? geometry.index.count : 0;
596
581
  const newMaxVertexCount = Math.max(this._maxVertexCount, estimatedSpace.vertexCount);
597
- const newMaxIndexCount = Math.max(this._maxIndexCount, estimatedSpace.indexCount); //, Math.ceil(this._maxVertexCount * growFactor));
582
+ const newMaxIndexCount = Math.max(this._maxIndexCount, estimatedSpace.indexCount, Math.ceil(this._maxVertexCount * growFactor));
598
583
  if (debugInstancing) {
599
584
  const geometryInfo = getMeshInformation(geometry);
600
- 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()}`);
585
+ console.warn(`[Instancing] Growing Buffer\nMesh: \"${this.name}${geometry.name?.length ? "/" + geometry.name : ""}\"\n${geometryInfo.vertexCount} vertices, ${geometryInfo.indexCount} indices\nMax count ${this._maxInstanceCount} → ${newSize}\nMax vertex count ${this._maxVertexCount} -> ${newMaxVertexCount}\nMax index count ${this._maxIndexCount} -> ${newMaxIndexCount}`);
601
586
  this._debugMaterial = createDebugMaterial();
602
587
  }
603
588
  else if (isDevEnvironment()) {
604
- 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()}`);
589
+ 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}`);
605
590
  }
606
591
  this._maxVertexCount = newMaxVertexCount;
607
592
  this._maxIndexCount = newMaxIndexCount;
608
593
  const newInst = new BatchedMesh(newSize, this._maxVertexCount, this._maxIndexCount, this._debugMaterial ?? this.material);
609
- newInst.name = this.getBatchedMeshName();
610
594
  newInst.layers = this._batchedMesh.layers;
611
595
  newInst.castShadow = this._batchedMesh.castShadow;
612
596
  newInst.receiveShadow = this._batchedMesh.receiveShadow;
@@ -620,7 +604,7 @@ class InstancedMeshRenderer {
620
604
  // dispose the old batched mesh
621
605
  this._batchedMesh.dispose();
622
606
  this._batchedMesh.removeFromParent();
623
- this._geometryIds = new WeakMap();
607
+ this._geometryIds.clear();
624
608
  this._batchedMesh = newInst;
625
609
  this._maxInstanceCount = newSize;
626
610
  // since we have a new batched mesh we need to re-add all the instances
@@ -629,12 +613,6 @@ class InstancedMeshRenderer {
629
613
  const original = [...this._handles];
630
614
  this._handles = [];
631
615
  for (const handle of original) {
632
- if (id !== this._growId) {
633
- // another grow happened in the meantime
634
- if (debugInstancing)
635
- console.warn("[Instancing] Aborting grow since another grow happened in the meantime");
636
- return;
637
- }
638
616
  if (handle && handle.__instanceIndex >= 0) {
639
617
  this.addGeometry(handle);
640
618
  this._handles[handle.__instanceIndex] = handle;
@@ -656,30 +634,22 @@ class InstancedMeshRenderer {
656
634
  const entry = usedGeometries.get(handle.object.geometry);
657
635
  entry.count += 1;
658
636
  }
659
- if (_newGeometries && _newGeometries?.length > 0) {
660
- const index = _newGeometries.indexOf(handle.object.geometry);
661
- if (index !== -1) {
662
- _newGeometries.splice(index, 1);
663
- }
664
- }
665
637
  }
666
638
  }
667
639
  // then calculate the total vertex count
668
640
  let totalVertices = 0;
669
641
  let totalIndices = 0;
670
- let totalGeometries = 0;
671
642
  // let maxVertices = 0;
672
643
  for (const [_geo, data] of usedGeometries) {
673
- totalGeometries += 1;
674
- totalVertices += data.vertexCount;
675
- totalIndices += data.indexCount;
644
+ totalVertices += data.vertexCount * data.count;
645
+ totalIndices += data.indexCount * data.count;
676
646
  // maxVertices = Math.max(maxVertices, geo.attributes.position.count * count);
677
647
  }
678
648
  // we calculate the average to make an educated guess of how many vertices will be needed with the new buffer count
679
- const averageVerts = Math.ceil(totalVertices / Math.max(1, totalGeometries));
680
- let maxVertexCount = averageVerts * totalGeometries;
681
- const averageIndices = Math.ceil(totalIndices / Math.max(1, totalGeometries));
682
- let maxIndexCount = averageIndices * totalGeometries;
649
+ const averageVerts = Math.ceil(totalVertices / Math.max(1, this._currentInstanceCount));
650
+ let maxVertexCount = averageVerts * newMaxInstances;
651
+ const averageIndices = Math.ceil(totalIndices / Math.max(1, this._currentInstanceCount));
652
+ let maxIndexCount = averageIndices * newMaxInstances * 2;
683
653
  // if new geometries are provided we *know* that they will be added
684
654
  // so we make sure to include them in the calculation
685
655
  if (_newGeometries) {
@@ -691,9 +661,6 @@ class InstancedMeshRenderer {
691
661
  }
692
662
  }
693
663
  }
694
- if (debugInstancing) {
695
- 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()}`);
696
- }
697
664
  return { vertexCount: maxVertexCount, indexCount: maxIndexCount };
698
665
  }
699
666
  addGeometry(handle) {
@@ -707,16 +674,16 @@ class InstancedMeshRenderer {
707
674
  let geometryId = this._geometryIds.get(geo);
708
675
  if (geometryId === undefined || geometryId === null) {
709
676
  if (debugInstancing)
710
- 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()}`);
677
+ console.debug(`[Instancing] > ADD NEW GEOMETRY \"${handle.name} (${geo.name}; ${geo.uuid})\"\n${this._currentInstanceCount} instances, ${handle.maxVertexCount} max vertices, ${handle.maxIndexCount} max indices`);
711
678
  geometryId = this._batchedMesh.addGeometry(geo, handle.maxVertexCount, handle.maxIndexCount);
712
679
  this._geometryIds.set(geo, geometryId);
713
- this._currentVertexCount += handle.maxVertexCount;
714
- this._currentIndexCount += handle.maxIndexCount;
715
680
  }
716
681
  else {
717
682
  if (debugInstancing === "verbose")
718
683
  console.log(`[Instancing] > ADD INSTANCE \"${handle.name}\"\nGEOMETRY_ID=${geometryId}\n${this._currentInstanceCount} instances`);
719
684
  }
685
+ this._currentVertexCount += handle.maxVertexCount;
686
+ this._currentIndexCount += handle.maxIndexCount;
720
687
  const i = this._batchedMesh.addInstance(geometryId);
721
688
  handle.__geometryIndex = geometryId;
722
689
  handle.__instanceIndex = i;
@@ -724,7 +691,7 @@ class InstancedMeshRenderer {
724
691
  handle.__reservedIndexRange = handle.maxIndexCount;
725
692
  this._batchedMesh.setMatrixAt(i, handle.object.matrixWorld);
726
693
  if (debugInstancing)
727
- 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()}`);
694
+ console.debug(`[Instancing] > ADDED INSTANCE \"${handle.name}\"\nGEOMETRY_ID=${geometryId}\n${this._currentInstanceCount} instances\nIndex: ${handle.__instanceIndex}`);
728
695
  }
729
696
  removeGeometry(handle, _del) {
730
697
  if (handle.__instanceIndex < 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"RendererInstancing.js","sourceRoot":"","sources":["../../src/engine-components/RendererInstancing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RendererInstancing.js","sourceRoot":"","sources":["../../src/engine-components/RendererInstancing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "4.11.5-next.9fa3148",
3
+ "version": "4.11.5-next.a900688",
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": {
@@ -15,7 +15,7 @@ const userInteractionCallbacks: Function[] = [];
15
15
  */
16
16
  export function internalOnUserInputRegistered() {
17
17
  if (userInteractionRegistered) return;
18
- if (isDevEnvironment()) console.debug("[Needle Engine] User input registered: Media playback is now allowed.");
18
+ if (isDevEnvironment()) console.debug("User interaction registered: audio can now be played");
19
19
  userInteractionRegistered = true;
20
20
  const copy = [...userInteractionCallbacks];
21
21
  userInteractionCallbacks.length = 0;
@@ -28,21 +28,6 @@ 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
-
46
31
  /**
47
32
  * 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).
48
33
  */
@@ -2,6 +2,7 @@ import { Bone, BufferAttribute, BufferGeometry, InterleavedBuffer, InterleavedBu
2
2
 
3
3
  import { addPatch } from "./engine_patcher.js";
4
4
  import { Physics } from "./engine_physics.js";
5
+ import { Model } from "./engine_types.js";
5
6
  import { getParam } from "./engine_utils.js";
6
7
  import { InternalUsageTrackerPlugin } from "./extensions/usage_tracker.js";
7
8
 
@@ -20,6 +21,26 @@ export class AssetDatabase {
20
21
  }
21
22
  });
22
23
  }
24
+
25
+ dispose() {
26
+ this._models.clear();
27
+ }
28
+
29
+ private readonly _models = new Map<string, Model>();
30
+
31
+ add(url: string, model: Model) {
32
+ if (!this._models.has(url)) {
33
+ this._models.set(url, model);
34
+ }
35
+ }
36
+
37
+ has(url: string): boolean {
38
+ return this._models.has(url);
39
+ }
40
+
41
+ get(url: string): Model | null {
42
+ return this._models.get(url) || null;
43
+ }
23
44
  }
24
45
 
25
46
  const trackUsageParam = getParam("trackresources");
@@ -42,7 +42,6 @@ import { deepClone, delay, DeviceUtilities, getParam } from './engine_utils.js';
42
42
  import type { INeedleXRSessionEventReceiver, NeedleXRSession } from './engine_xr.js';
43
43
  import { NeedleMenu } from './webcomponents/needle menu/needle-menu.js';
44
44
  import type { NeedleEngineWebComponent } from './webcomponents/needle-engine.js';
45
- import { initSpectorIfAvailable } from './debug/debug_spector.js';
46
45
 
47
46
  const debug = getParam("debugcontext");
48
47
  const stats = getParam("stats");
@@ -488,7 +487,6 @@ export class Context implements IContext {
488
487
  physics: Physics;
489
488
  /** access networking methods (use it to send or listen to messages or join a networking backend) */
490
489
  connection: NetworkConnection;
491
- /** @deprecated AssetDatabase is deprecated */
492
490
  assets: AssetDatabase;
493
491
  /** The main light in the scene */
494
492
  mainLight: ILight | null = null;
@@ -623,8 +621,6 @@ export class Context implements IContext {
623
621
 
624
622
  this.input.bindEvents();
625
623
 
626
- initSpectorIfAvailable(this, this.renderer.domElement);
627
-
628
624
  return this.renderer;
629
625
  }
630
626
 
@@ -793,6 +789,7 @@ export class Context implements IContext {
793
789
  this.lightmaps?.clear();
794
790
  this.physics?.engine?.clearCaches();
795
791
  this.lodsManager.disable();
792
+ this.assets.dispose();
796
793
 
797
794
  this._onBeforeRenderListeners.clear();
798
795
  this._onAfterRenderListeners.clear();
@@ -1709,8 +1706,7 @@ export class Context implements IContext {
1709
1706
 
1710
1707
  if (this._stats) {
1711
1708
  this._stats.end();
1712
- const dt = this.time.fps < 20 ? 50 : 150;
1713
- if (this.time.frameCount % dt === 0)
1709
+ if (this.time.frameCount % 150 === 0)
1714
1710
  console.log(this.renderer.info.render.calls + " DrawCalls", "\nRender:", { ...this.renderer.info.render }, "\nMemory:", { ...this.renderer.info.memory }, "\nTarget Framerate: " + this.targetFrameRate);
1715
1711
  }
1716
1712
 
@@ -236,20 +236,20 @@ function onBeforeLoad(loader: Loader | CustomLoader, context: Context): { compon
236
236
 
237
237
 
238
238
  /** Call after a 3d model has been loaded to compile shaders and construct the needle engine model structure with relevant metadata (if necessary) */
239
- async function onAfterLoaded(loader: Loader | CustomLoader, context: Context, gltfId: string, model: ValidLoaderReturnType, seed: number | null | UIDProvider, componentsExtension: NEEDLE_components | null): Promise<Model> {
240
- if (printGltf) console.warn("Loaded", gltfId, model);
239
+ async function onAfterLoaded(loader: Loader | CustomLoader, context: Context, pathOrUrl: string, asset: ValidLoaderReturnType, seed: number | null | UIDProvider, componentsExtension: NEEDLE_components | null): Promise<Model> {
240
+ if (printGltf) console.warn("Loaded", pathOrUrl, asset);
241
241
 
242
242
  // Handle loader was registered but no model was returned - should not completely break the engine
243
- if (model == null) {
244
- console.error(`Loaded model is null '${gltfId}' - please make sure the loader is registered correctly`);
243
+ if (asset == null) {
244
+ console.error(`Loaded model is null '${pathOrUrl}' - please make sure the loader is registered correctly`);
245
245
  return {
246
246
  scene: new Object3D(),
247
247
  animations: [],
248
248
  scenes: []
249
249
  };
250
250
  }
251
- else if (typeof model !== "object") {
252
- console.error(`Loaded model is not an object '${gltfId}' - please make sure the loader is registered correctly`);
251
+ else if (typeof asset !== "object") {
252
+ console.error(`Loaded model is not an object '${pathOrUrl}' - please make sure the loader is registered correctly`);
253
253
  return {
254
254
  scene: new Object3D(),
255
255
  animations: [],
@@ -258,48 +258,50 @@ async function onAfterLoaded(loader: Loader | CustomLoader, context: Context, gl
258
258
  }
259
259
 
260
260
  // Handle OBJ or FBX loader results
261
- if (model instanceof Object3D) {
262
- model = {
263
- scene: model,
264
- animations: model.animations,
265
- scenes: [model]
261
+ if (asset instanceof Object3D) {
262
+ asset = {
263
+ scene: asset,
264
+ animations: asset.animations,
265
+ scenes: [asset]
266
266
  }
267
267
  }
268
268
  // Handle STL loader results
269
- else if (model instanceof BufferGeometry) {
269
+ else if (asset instanceof BufferGeometry) {
270
270
  const mat = new MeshStandardMaterial({
271
271
  color: new Color(0xdddddd)
272
272
  });
273
- const mesh = new Mesh(model, mat);
274
- model = {
273
+ const mesh = new Mesh(asset, mat);
274
+ asset = {
275
275
  scene: mesh,
276
276
  animations: [],
277
277
  scenes: [mesh]
278
278
  }
279
279
  }
280
- else if (Array.isArray(model.scenes) === false) {
281
- console.error(`[Needle Engine] The loaded model object does not have a scenes property '${gltfId}' - please make sure the loader is registered correctly and three.js is not imported multiple times.`);
280
+ else if (Array.isArray(asset.scenes) === false) {
281
+ console.error(`[Needle Engine] The loaded model object does not have a scenes property '${pathOrUrl}' - please make sure the loader is registered correctly and three.js is not imported multiple times.`);
282
282
  }
283
283
 
284
284
 
285
285
  // Remove query parameters from gltfId
286
- if (gltfId.includes("?")) {
287
- gltfId = gltfId.split("?")[0];
286
+ if (pathOrUrl.includes("?")) {
287
+ pathOrUrl = pathOrUrl.split("?")[0];
288
288
  }
289
289
 
290
290
  // E.g. fbx material cleanup
291
- postprocessLoadedFile(loader, model);
291
+ postprocessLoadedFile(loader, asset);
292
+
293
+ context.assets.add(pathOrUrl, asset);
292
294
 
293
295
  // load components
294
- if (isGLTFModel(model)) {
295
- invokeLoadedImportPluginHooks(gltfId, model, context);
296
- await getLoader().createBuiltinComponents(context, gltfId, model, seed, componentsExtension || undefined);
296
+ if (isGLTFModel(asset)) {
297
+ invokeLoadedImportPluginHooks(pathOrUrl, asset, context);
298
+ await getLoader().createBuiltinComponents(context, pathOrUrl, asset, seed, componentsExtension || undefined);
297
299
  }
298
300
 
299
301
  // Warmup the scene
300
- await compileAsync(model.scene, context, context.mainCamera);
302
+ await compileAsync(asset.scene, context, context.mainCamera);
301
303
 
302
- return model;
304
+ return asset;
303
305
  }
304
306
 
305
307
  async function compileAsync(scene: Object3D, context: Context, camera?: Camera | null) {