Browse Source

Fix loading screen logic

Gary Hsu 5 years ago
parent
commit
f742176823
1 changed files with 8 additions and 16 deletions
  1. 8 16
      src/Loading/sceneLoader.ts

+ 8 - 16
src/Loading/sceneLoader.ts

@@ -352,6 +352,8 @@ export class SceneLoader {
 
 
     private static _registeredPlugins: { [extension: string]: IRegisteredPlugin } = {};
     private static _registeredPlugins: { [extension: string]: IRegisteredPlugin } = {};
 
 
+    private static _showingLoadingScreen = false;
+
     private static _getDefaultPlugin(): IRegisteredPlugin {
     private static _getDefaultPlugin(): IRegisteredPlugin {
         return SceneLoader._registeredPlugins[".babylon"];
         return SceneLoader._registeredPlugins[".babylon"];
     }
     }
@@ -785,8 +787,13 @@ export class SceneLoader {
             return null;
             return null;
         }
         }
 
 
-        if (SceneLoader.ShowLoadingScreen) {
+        if (SceneLoader.ShowLoadingScreen && !this._showingLoadingScreen) {
+            this._showingLoadingScreen = true;
             scene.getEngine().displayLoadingUI();
             scene.getEngine().displayLoadingUI();
+            scene.executeWhenReady(() => {
+                scene.getEngine().hideLoadingUI();
+                this._showingLoadingScreen = false;
+            });
         }
         }
 
 
         var loadingToken = {};
         var loadingToken = {};
@@ -794,9 +801,6 @@ export class SceneLoader {
 
 
         var disposeHandler = () => {
         var disposeHandler = () => {
             scene._removePendingData(loadingToken);
             scene._removePendingData(loadingToken);
-            if (SceneLoader.ShowLoadingScreen) {
-                scene.getEngine().hideLoadingUI();
-            }
         };
         };
 
 
         var errorHandler = (message: Nullable<string>, exception?: any) => {
         var errorHandler = (message: Nullable<string>, exception?: any) => {
@@ -851,12 +855,6 @@ export class SceneLoader {
                     errorHandler(error.message, error);
                     errorHandler(error.message, error);
                 });
                 });
             }
             }
-
-            if (SceneLoader.ShowLoadingScreen) {
-                scene.executeWhenReady(() => {
-                    scene.getEngine().hideLoadingUI();
-                });
-            }
         }, progressHandler, errorHandler, disposeHandler, pluginExtension);
         }, progressHandler, errorHandler, disposeHandler, pluginExtension);
     }
     }
 
 
@@ -976,12 +974,6 @@ export class SceneLoader {
             } else {
             } else {
                 errorHandler("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.");
                 errorHandler("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.");
             }
             }
-
-            if (SceneLoader.ShowLoadingScreen) {
-                scene.executeWhenReady(() => {
-                    scene.getEngine().hideLoadingUI();
-                });
-            }
         }, progressHandler, errorHandler, disposeHandler, pluginExtension);
         }, progressHandler, errorHandler, disposeHandler, pluginExtension);
     }
     }