瀏覽代碼

feat: Create, clear and notifyObservers with new onNewTexture/onTextureRemoved Observable

yuccai 7 年之前
父節點
當前提交
c900ceae48
共有 2 個文件被更改,包括 17 次插入0 次删除
  1. 2 0
      src/Materials/Textures/babylon.baseTexture.ts
  2. 15 0
      src/babylon.scene.ts

+ 2 - 0
src/Materials/Textures/babylon.baseTexture.ts

@@ -185,6 +185,7 @@
             this._scene = scene || Engine.LastCreatedScene;
             if (this._scene) {
                 this._scene.textures.push(this);
+                this._scene.onNewTextureAddedObservable.notifyObservers(this);
             }
             this._uid = null;
         }
@@ -410,6 +411,7 @@
             if (index >= 0) {
                 this._scene.textures.splice(index, 1);
             }
+            this._scene.onTextureRemovedObservable.notifyObservers(this);
 
             if (this._texture === undefined) {
                 return;

+ 15 - 0
src/babylon.scene.ts

@@ -449,6 +449,16 @@ module BABYLON {
         * An event triggered when a material is removed
         */
         public onMaterialRemovedObservable = new Observable<Material>();
+        
+        /**
+        * An event triggered when a texture is created
+        */
+        public onNewTextureAddedObservable = new Observable<BaseTexture>();
+
+        /**
+        * An event triggered when a texture is removed
+        */
+        public onTextureRemovedObservable = new Observable<BaseTexture>();
 
         /**
         * An event triggered when render targets are about to be rendered
@@ -3146,6 +3156,8 @@ module BABYLON {
             if (index !== -1) {
                 this.textures.splice(index, 1);
             }
+            this.onTextureRemovedObservable.notifyObservers(toRemove);
+            
             return index;
         }
 
@@ -3265,6 +3277,7 @@ module BABYLON {
          */
         public addTexture(newTexture: BaseTexture): void {
             this.textures.push(newTexture);
+            this.onNewTextureAddedObservable.notifyObservers(newTexture);
         }
 
         /**
@@ -4684,6 +4697,8 @@ module BABYLON {
             this.onMeshRemovedObservable.clear();
             this.onNewMaterialAddedObservable.clear();
             this.onMaterialRemovedObservable.clear();
+            this.onNewTextureAddedObservable.clear();
+            this.onTextureRemovedObservable.clear();
             this.onPrePointerObservable.clear();
             this.onPointerObservable.clear();
             this.onPreKeyboardObservable.clear();