@babylonjs/core 8.53.1 → 8.54.0
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/Engines/AbstractEngine/abstractEngine.renderPass.js +1 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +44 -14
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Maths/index.d.ts +2 -0
- package/Maths/index.js +2 -0
- package/Maths/index.js.map +1 -1
- package/Maths/math.geospatial.d.ts +12 -0
- package/Maths/math.geospatial.functions.d.ts +19 -0
- package/Maths/math.geospatial.functions.js +27 -0
- package/Maths/math.geospatial.functions.js.map +1 -0
- package/Maths/math.geospatial.js +2 -0
- package/Maths/math.geospatial.js.map +1 -0
- package/Meshes/abstractMesh.d.ts +4 -0
- package/Meshes/abstractMesh.js +4 -0
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/mesh.d.ts +2 -0
- package/Meshes/mesh.js +19 -2
- package/Meshes/mesh.js.map +1 -1
- package/Shaders/ShadersInclude/screenSpaceRayTrace.js +18 -8
- package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js +18 -7
- package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
- package/package.json +1 -1
|
@@ -151,8 +151,36 @@ export function LoadAssetContainerFromSerializedScene(scene, serializedScene, ro
|
|
|
151
151
|
}
|
|
152
152
|
const LoadAssetContainer = (scene, data, rootUrl, onError, addToScene = false) => {
|
|
153
153
|
const container = new AssetContainer(scene);
|
|
154
|
+
// When loading into a container (not directly into the scene), suppress entity-added
|
|
155
|
+
// observables to prevent scene events during loading. Entities still get added to scene
|
|
156
|
+
// arrays (so the linking code can find them), but no events fire.
|
|
157
|
+
// They are removed from the scene at the end via container.removeAllFromScene().
|
|
158
|
+
let savedObservables;
|
|
154
159
|
if (!addToScene) {
|
|
155
|
-
|
|
160
|
+
savedObservables = {
|
|
161
|
+
mesh: scene.onNewMeshAddedObservable,
|
|
162
|
+
transformNode: scene.onNewTransformNodeAddedObservable,
|
|
163
|
+
light: scene.onNewLightAddedObservable,
|
|
164
|
+
camera: scene.onNewCameraAddedObservable,
|
|
165
|
+
material: scene.onNewMaterialAddedObservable,
|
|
166
|
+
multiMaterial: scene.onNewMultiMaterialAddedObservable,
|
|
167
|
+
texture: scene.onNewTextureAddedObservable,
|
|
168
|
+
skeleton: scene.onNewSkeletonAddedObservable,
|
|
169
|
+
geometry: scene.onNewGeometryAddedObservable,
|
|
170
|
+
animationGroup: scene.onNewAnimationGroupAddedObservable,
|
|
171
|
+
particleSystem: scene.onNewParticleSystemAddedObservable,
|
|
172
|
+
};
|
|
173
|
+
scene.onNewMeshAddedObservable = new Observable();
|
|
174
|
+
scene.onNewTransformNodeAddedObservable = new Observable();
|
|
175
|
+
scene.onNewLightAddedObservable = new Observable();
|
|
176
|
+
scene.onNewCameraAddedObservable = new Observable();
|
|
177
|
+
scene.onNewMaterialAddedObservable = new Observable();
|
|
178
|
+
scene.onNewMultiMaterialAddedObservable = new Observable();
|
|
179
|
+
scene.onNewTextureAddedObservable = new Observable();
|
|
180
|
+
scene.onNewSkeletonAddedObservable = new Observable();
|
|
181
|
+
scene.onNewGeometryAddedObservable = new Observable();
|
|
182
|
+
scene.onNewAnimationGroupAddedObservable = new Observable();
|
|
183
|
+
scene.onNewParticleSystemAddedObservable = new Observable();
|
|
156
184
|
}
|
|
157
185
|
// Entire method running in try block, so ALWAYS logs as far as it got, only actually writes details
|
|
158
186
|
// when SceneLoader.debugLogging = true (default), or exception encountered.
|
|
@@ -341,17 +369,7 @@ const LoadAssetContainer = (scene, data, rootUrl, onError, addToScene = false) =
|
|
|
341
369
|
if (vertexData !== undefined && vertexData !== null) {
|
|
342
370
|
for (index = 0, cache = vertexData.length; index < cache; index++) {
|
|
343
371
|
const parsedVertexData = vertexData[index];
|
|
344
|
-
// Geometies are found by loadedUniqueId when imported
|
|
345
|
-
// So we need to temporarily unblock the entity collection to add them to the scene
|
|
346
|
-
scene._blockEntityCollection = false;
|
|
347
|
-
// Temporarily replace the onNewGeometryAddedObservable to avoid multiple notifications
|
|
348
|
-
const onNewGeometryAddedObservable = scene.onNewGeometryAddedObservable;
|
|
349
|
-
scene.onNewGeometryAddedObservable = new Observable();
|
|
350
372
|
addedGeometry.push(Geometry.Parse(parsedVertexData, scene, rootUrl));
|
|
351
|
-
// Restore the onNewGeometryAddedObservable
|
|
352
|
-
scene.onNewGeometryAddedObservable = onNewGeometryAddedObservable;
|
|
353
|
-
// Restore the previous state of entity collection blocking
|
|
354
|
-
scene._blockEntityCollection = !addToScene;
|
|
355
373
|
}
|
|
356
374
|
}
|
|
357
375
|
for (const g of addedGeometry) {
|
|
@@ -655,10 +673,22 @@ const LoadAssetContainer = (scene, data, rootUrl, onError, addToScene = false) =
|
|
|
655
673
|
TempMorphTargetManagerIndexContainer = {};
|
|
656
674
|
TempSkeletonIndexContainer = {};
|
|
657
675
|
if (!addToScene) {
|
|
658
|
-
//
|
|
676
|
+
// Restore observables before removing from scene
|
|
677
|
+
if (savedObservables) {
|
|
678
|
+
scene.onNewMeshAddedObservable = savedObservables.mesh;
|
|
679
|
+
scene.onNewTransformNodeAddedObservable = savedObservables.transformNode;
|
|
680
|
+
scene.onNewLightAddedObservable = savedObservables.light;
|
|
681
|
+
scene.onNewCameraAddedObservable = savedObservables.camera;
|
|
682
|
+
scene.onNewMaterialAddedObservable = savedObservables.material;
|
|
683
|
+
scene.onNewMultiMaterialAddedObservable = savedObservables.multiMaterial;
|
|
684
|
+
scene.onNewTextureAddedObservable = savedObservables.texture;
|
|
685
|
+
scene.onNewSkeletonAddedObservable = savedObservables.skeleton;
|
|
686
|
+
scene.onNewGeometryAddedObservable = savedObservables.geometry;
|
|
687
|
+
scene.onNewAnimationGroupAddedObservable = savedObservables.animationGroup;
|
|
688
|
+
scene.onNewParticleSystemAddedObservable = savedObservables.particleSystem;
|
|
689
|
+
}
|
|
690
|
+
// Removes entities from scene arrays and moves them to the container
|
|
659
691
|
container.removeAllFromScene();
|
|
660
|
-
// Unblock entity collection
|
|
661
|
-
scene._blockEntityCollection = false;
|
|
662
692
|
}
|
|
663
693
|
if (log !== null && SceneLoaderFlags.loggingLevel !== 0) {
|
|
664
694
|
Logger.Log(logOperation("loadAssets", parsedData ? parsedData.producer : "Unknown") + (SceneLoaderFlags.loggingLevel !== 1 ? log : ""));
|