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

Adding observables to the AssetsManager

They coexist with the current success and error handling and can be used
from now on just like the old method.
Raanan Weber 8 лет назад
Родитель
Сommit
fabc4c5d5a
1 измененных файлов с 9 добавлено и 0 удалено
  1. 9 0
      src/Tools/babylon.assetsManager.ts

+ 9 - 0
src/Tools/babylon.assetsManager.ts

@@ -263,6 +263,12 @@
         public onTaskSuccess: (task: IAssetTask) => void;
         public onTaskError: (task: IAssetTask) => void;
 
+        //Observables
+
+        public onTaskSuccessObservable = new Observable<IAssetTask>();
+        public onTaskErrorObservable = new Observable<IAssetTask>();
+        public onTasksDoneObservable = new Observable<IAssetTask[]>();
+
         public useDefaultLoadingScreen = true;
 
         constructor(scene: Scene) {
@@ -336,11 +342,13 @@
                 if (this.onTaskSuccess) {
                     this.onTaskSuccess(task);
                 }
+                this.onTaskSuccessObservable.notifyObservers(task);
                 this._decreaseWaitingTasksCount();
             }, () => {
                 if (this.onTaskError) {
                     this.onTaskError(task);
                 }
+                this.onTaskErrorObservable.notifyObservers(task);
                 this._decreaseWaitingTasksCount();
             });
         }
@@ -357,6 +365,7 @@
                 if (this.onFinish) {
                     this.onFinish(this.tasks);
                 }
+                this.onTasksDoneObservable.notifyObservers(this.tasks);
                 return this;
             }