فهرست منبع

Fix instances + cache issue

David Catuhe 7 سال پیش
والد
کامیت
99843237eb
2فایلهای تغییر یافته به همراه18 افزوده شده و 5 حذف شده
  1. 9 4
      src/Mesh/babylon.abstractMesh.ts
  2. 9 1
      src/Mesh/babylon.mesh.ts

+ 9 - 4
src/Mesh/babylon.abstractMesh.ts

@@ -248,12 +248,10 @@
                 return;
             }
 
-            for (var subMesh of this.subMeshes) {
-                subMesh.setEffect(null);
-            }
+            this._unBindEffect();
         }
 
-        private _receiveShadows = false;
+       private _receiveShadows = false;
         public get receiveShadows(): boolean {
             return this._receiveShadows;
         }
@@ -538,6 +536,13 @@
             this._markSubMeshesAsLightDirty();
         }
 
+        /** @ignore */
+        public _unBindEffect() {
+            for (var subMesh of this.subMeshes) {
+                subMesh.setEffect(null);
+            }
+        }        
+
         public _removeLightSource(light: Light): void {
             var index = this._lightSources.indexOf(light);
 

+ 9 - 1
src/Mesh/babylon.mesh.ts

@@ -87,7 +87,7 @@
                 this.onBeforeDrawObservable.remove(this._onBeforeDrawObserver);
             }
             this._onBeforeDrawObserver = this.onBeforeDrawObservable.add(callback);
-        }
+        }     
 
         // Members
         public delayLoadState = Engine.DELAYLOADSTATE_NONE;
@@ -288,6 +288,14 @@
             return ret;
         }
 
+        public _unBindEffect() {
+            super._unBindEffect();
+
+            for (var instance of this.instances) {
+                instance._unBindEffect();
+            }
+        }           
+
         /**
          * True if the mesh has some Levels Of Details (LOD).  
          * Returns a boolean.