Garrett Johnson 5 anni fa
parent
commit
908535ed1a
1 ha cambiato i file con 37 aggiunte e 17 eliminazioni
  1. 37 17
      src/three/TilesRenderer.js

+ 37 - 17
src/three/TilesRenderer.js

@@ -311,6 +311,27 @@ export class TilesRenderer extends TilesRendererBase {
 
 			} );
 
+			const materials = [];
+			const geometry = [];
+			scene.traverse( c => {
+
+				if ( c.geometry ) {
+
+					geometry.push( c.geometry );
+
+				}
+
+				if ( c.material ) {
+
+					materials.push( c.material );
+
+				}
+
+			} );
+
+			cached.materials = materials;
+			cached.geometry = geometry;
+
 		} );
 
 	}
@@ -321,41 +342,40 @@ export class TilesRenderer extends TilesRendererBase {
 		if ( cached.scene ) {
 
 			const scene = cached.scene;
+			const materials = cached.materials;
+			const geometry = cached.geometry;
 			if ( scene.parent ) {
 
 				scene.parent.remove( scene );
 
 			}
 
-			scene.traverse( c => {
-
-				const geometry = c.geometry;
-				const material = c.material;
-
-				if ( geometry ) {
+			for ( let i = 0, l = geometry.length; i < l; i ++ ) {
 
-					geometry.dispose();
+				geometry[ i ].dispose();
 
-				}
-
-				if ( material ) {
+			}
 
-					material.dispose();
-					for ( const key in material ) {
+			for ( let i = 0, l = materials.length; i < l; i ++ ) {
 
-						const value = material[ key ];
-						if ( value && value.isTexture ) {
+				const material = materials[ i ];
+				for ( const key in material ) {
 
-							value.dispose();
+					const value = material[ key ];
+					if ( value && value.isTexture ) {
 
-						}
+						value.dispose();
 
 					}
 
 				}
+				material.dispose();
+
+			}
 
-			} );
 			cached.scene = null;
+			cached.materials = null;
+			cached.geometry = null;
 			cached.boxHelperGroup = null;
 
 		}