Explorar el Código

Fixing remaining Heap Leaks (still GPU to do)

sebastien hace 7 años
padre
commit
01188aae6a

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6572 - 6572
Playground/babylon.d.txt


+ 1 - 0
Viewer/src/configuration/loader.ts

@@ -73,6 +73,7 @@ export class ConfigurationLoader {
         this.loadRequests.forEach(request => {
             request.abort();
         });
+        this.loadRequests.length = 0;
     }
 
     private loadFile(url: string): Promise<any> {

+ 8 - 2
Viewer/src/viewer/viewer.ts

@@ -1,6 +1,6 @@
 import { viewerManager } from './viewerManager';
 import { TemplateManager } from './../templateManager';
-import configurationLoader from './../configuration/loader';
+import { ConfigurationLoader } from './../configuration/loader';
 import { CubeTexture, Color3, IEnvironmentHelperOptions, EnvironmentHelper, Effect, SceneOptimizer, SceneOptimizerOptions, Observable, Engine, Scene, ArcRotateCamera, Vector3, SceneLoader, AbstractMesh, Mesh, HemisphericLight, Database, SceneLoaderProgressEvent, ISceneLoaderPlugin, ISceneLoaderPluginAsync, Quaternion, Light, ShadowLight, ShadowGenerator, Tags, AutoRotationBehavior, BouncingBehavior, FramingBehavior, Behavior, Tools } from 'babylonjs';
 import { ViewerConfiguration, ISceneConfiguration, ISceneOptimizerConfiguration, IObserversConfiguration, IModelConfiguration, ISkyboxConfiguration, IGroundConfiguration, ILightConfiguration, ICameraConfiguration } from '../configuration/configuration';
 
@@ -52,6 +52,7 @@ export abstract class AbstractViewer {
     public canvas: HTMLCanvasElement;
 
     protected registeredOnBeforerenderFunctions: Array<() => void>;
+    protected _configurationLoader: ConfigurationLoader;
 
     constructor(public containerElement: HTMLElement, initialConfiguration: ViewerConfiguration = {}) {
         // if exists, use the container id. otherwise, generate a random string.
@@ -81,7 +82,8 @@ export abstract class AbstractViewer {
         this.prepareContainerElement();
 
         // extend the configuration
-        configurationLoader.loadConfiguration(initialConfiguration, (configuration) => {
+        this._configurationLoader = new ConfigurationLoader();
+        this._configurationLoader.loadConfiguration(initialConfiguration, (configuration) => {
             this.configuration = deepmerge(this.configuration || {}, configuration);
             if (this.configuration.observers) {
                 this.configureObservers(this.configuration.observers);
@@ -634,6 +636,10 @@ export abstract class AbstractViewer {
             this.environmentHelper.dispose();
         }
 
+        if (this._configurationLoader) {
+            this._configurationLoader.dispose();
+        }
+
         //observers
         this.onEngineInitObservable.clear();
         delete this.onEngineInitObservable;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 7585 - 7585
dist/preview release/babylon.d.ts


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 3861 - 3861
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


+ 1 - 1
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js

@@ -96305,7 +96305,7 @@ var BABYLON;
                                 if (indexLOD !== 0) {
                                     var previousNodeLOD = nodeLODs[indexLOD - 1];
                                     if (previousNodeLOD._babylonMesh) {
-                                        previousNodeLOD._babylonMesh.dispose();
+                                        previousNodeLOD._babylonMesh.dispose(false, true);
                                         delete previousNodeLOD._babylonMesh;
                                     }
                                 }

+ 1 - 1
dist/preview release/customConfigurations/minimalGLTFViewer/es6.js

@@ -96278,7 +96278,7 @@ var BABYLON;
                                 if (indexLOD !== 0) {
                                     var previousNodeLOD = nodeLODs[indexLOD - 1];
                                     if (previousNodeLOD._babylonMesh) {
-                                        previousNodeLOD._babylonMesh.dispose();
+                                        previousNodeLOD._babylonMesh.dispose(false, true);
                                         delete previousNodeLOD._babylonMesh;
                                     }
                                 }

+ 1 - 1
dist/preview release/loaders/babylon.glTF2FileLoader.js

@@ -2022,7 +2022,7 @@ var BABYLON;
                                 if (indexLOD !== 0) {
                                     var previousNodeLOD = nodeLODs[indexLOD - 1];
                                     if (previousNodeLOD._babylonMesh) {
-                                        previousNodeLOD._babylonMesh.dispose();
+                                        previousNodeLOD._babylonMesh.dispose(false, true);
                                         delete previousNodeLOD._babylonMesh;
                                     }
                                 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
dist/preview release/loaders/babylon.glTF2FileLoader.min.js


+ 1 - 1
dist/preview release/loaders/babylon.glTFFileLoader.js

@@ -4220,7 +4220,7 @@ var BABYLON;
                                 if (indexLOD !== 0) {
                                     var previousNodeLOD = nodeLODs[indexLOD - 1];
                                     if (previousNodeLOD._babylonMesh) {
-                                        previousNodeLOD._babylonMesh.dispose();
+                                        previousNodeLOD._babylonMesh.dispose(false, true);
                                         delete previousNodeLOD._babylonMesh;
                                     }
                                 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
dist/preview release/loaders/babylon.glTFFileLoader.min.js


+ 1 - 1
dist/preview release/loaders/babylonjs.loaders.js

@@ -5194,7 +5194,7 @@ var BABYLON;
                                 if (indexLOD !== 0) {
                                     var previousNodeLOD = nodeLODs[indexLOD - 1];
                                     if (previousNodeLOD._babylonMesh) {
-                                        previousNodeLOD._babylonMesh.dispose();
+                                        previousNodeLOD._babylonMesh.dispose(false, true);
                                         delete previousNodeLOD._babylonMesh;
                                     }
                                 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
dist/preview release/loaders/babylonjs.loaders.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 8 - 8
dist/preview release/viewer/babylon.viewer.js


+ 7 - 2
dist/preview release/viewer/babylon.viewer.max.js

@@ -93685,7 +93685,8 @@ var AbstractViewer = (function () {
         viewerManager_1.viewerManager.addViewer(this);
         this.templateManager = new templateManager_1.TemplateManager(containerElement);
         this.prepareContainerElement();
-        loader_1.default.loadConfiguration(initialConfiguration, function (configuration) {
+        this._configurationLoader = new loader_1.ConfigurationLoader();
+        this._configurationLoader.loadConfiguration(initialConfiguration, function (configuration) {
             _this.configuration = deepmerge(_this.configuration || {}, configuration);
             if (_this.configuration.observers) {
                 _this.configureObservers(_this.configuration.observers);
@@ -94155,6 +94156,9 @@ var AbstractViewer = (function () {
         if (this.environmentHelper) {
             this.environmentHelper.dispose();
         }
+        if (this._configurationLoader) {
+            this._configurationLoader.dispose();
+        }
         this.onEngineInitObservable.clear();
         delete this.onEngineInitObservable;
         this.onInitDoneObservable.clear();
@@ -95145,6 +95149,7 @@ var ConfigurationLoader = (function () {
         this.loadRequests.forEach(function (request) {
             request.abort();
         });
+        this.loadRequests.length = 0;
     };
     ConfigurationLoader.prototype.loadFile = function (url) {
         var _this = this;
@@ -100827,7 +100832,7 @@ var BABYLON;
                                 if (indexLOD !== 0) {
                                     var previousNodeLOD = nodeLODs[indexLOD - 1];
                                     if (previousNodeLOD._babylonMesh) {
-                                        previousNodeLOD._babylonMesh.dispose();
+                                        previousNodeLOD._babylonMesh.dispose(false, true);
                                         delete previousNodeLOD._babylonMesh;
                                     }
                                 }

+ 1 - 1
loaders/src/glTF/2.0/Extensions/MSFT_lod.ts

@@ -43,7 +43,7 @@ module BABYLON.GLTF2.Extensions {
                         if (indexLOD !== 0) {
                             const previousNodeLOD = nodeLODs[indexLOD - 1];
                             if (previousNodeLOD._babylonMesh) {
-                                previousNodeLOD._babylonMesh.dispose();
+                                previousNodeLOD._babylonMesh.dispose(false, true);
                                 delete previousNodeLOD._babylonMesh;
                             }
                         }