Просмотр исходного кода

Added scene.onDataLoadedObservable

David Catuhe 7 лет назад
Родитель
Сommit
6ec8f04eff
5 измененных файлов с 22119 добавлено и 22084 удалено
  1. 11047 11041
      dist/preview release/babylon.d.ts
  2. 11047 11041
      dist/preview release/babylon.module.d.ts
  3. 1 0
      dist/preview release/what's new.md
  4. 9 1
      src/babylon.node.ts
  5. 15 1
      src/babylon.scene.ts

Разница между файлами не показана из-за своего большого размера
+ 11047 - 11041
dist/preview release/babylon.d.ts


Разница между файлами не показана из-за своего большого размера
+ 11047 - 11041
dist/preview release/babylon.module.d.ts


+ 1 - 0
dist/preview release/what's new.md

@@ -22,6 +22,7 @@
 - Complete rework of Unity3D exporter. [Doc here](http://doc.babylonjs.com/resources/intro) ([MackeyK24](https://github.com/MackeyK24))
 
 ## Updates
+- Added scene.onDataLoadedObservable which is raised when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed ([deltakosh](https://github.com/deltakosh))
 - Support for adaptiveKernelBlur on MirrorTexture ([deltakosh](https://github.com/deltakosh))
 - Support for non uniform scaling. Normals are now correctly computed ([deltakosh](https://github.com/deltakosh))
 - Added `MultiObserver`. [Doc here](http://doc.babylonjs.com/overviews/observables#multiobserver) ([deltakosh](https://github.com/deltakosh))

+ 9 - 1
src/babylon.node.ts

@@ -114,7 +114,15 @@
                 return this;
             }
 
-            behavior.attach(this);
+            if (this._scene.isLoading) {
+                // We defer the attach when the scene will be loaded
+                var observer = this._scene.onDataLoadedObservable.add(() => {
+                    behavior.attach(this);
+                    this._scene.onDataLoadedObservable.remove(observer);
+                });
+            } else {
+                behavior.attach(this);
+            }
             this._behaviors.push(behavior);
 
             return this;

+ 15 - 1
src/babylon.scene.ts

@@ -360,7 +360,11 @@
         */
         public onAfterSpritesRenderingObservable = new Observable<Scene>();          
 
-         
+        /**
+        * An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
+        * @type {BABYLON.Observable}
+        */
+        public onDataLoadedObservable = new Observable<Scene>();            
 
         /**
         * An event triggered when a camera is created
@@ -1893,17 +1897,26 @@
         }
 
         public _removePendingData(data: any): void {
+            var wasLoading = this.isLoading;
             var index = this._pendingData.indexOf(data);
 
             if (index !== -1) {
                 this._pendingData.splice(index, 1);
             }
+
+            if (wasLoading && !this.isLoading) {
+                this.onDataLoadedObservable.notifyObservers(this);
+            }
         }
 
         public getWaitingItemsCount(): number {
             return this._pendingData.length;
         }
 
+        public get isLoading(): boolean {
+            return this._pendingData.length > 0;
+        }
+
         /**
          * Registers a function to be executed when the scene is ready.
          * @param {Function} func - the function to be executed.
@@ -3718,6 +3731,7 @@
             this.onAfterPhysicsObservable.clear();
             this.onBeforeAnimationsObservable.clear();
             this.onAfterAnimationsObservable.clear();
+            this.onDataLoadedObservable.clear();
 
             this.detachControl();