|
@@ -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 ) {
|
|
if ( cached.scene ) {
|
|
|
|
|
|
const scene = cached.scene;
|
|
const scene = cached.scene;
|
|
|
|
+ const materials = cached.materials;
|
|
|
|
+ const geometry = cached.geometry;
|
|
if ( scene.parent ) {
|
|
if ( scene.parent ) {
|
|
|
|
|
|
scene.parent.remove( scene );
|
|
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.scene = null;
|
|
|
|
+ cached.materials = null;
|
|
|
|
+ cached.geometry = null;
|
|
cached.boxHelperGroup = null;
|
|
cached.boxHelperGroup = null;
|
|
|
|
|
|
}
|
|
}
|