Browse Source

Object3D: Added dispose() method.

Mr.doob 11 years ago
parent
commit
c7241348cd
3 changed files with 18 additions and 0 deletions
  1. 1 0
      examples/webgl_test_memory.html
  2. 6 0
      src/core/Object3D.js
  3. 11 0
      src/renderers/WebGLRenderer.js

+ 1 - 0
examples/webgl_test_memory.html

@@ -88,6 +88,7 @@
 
 
 				// clean up
 				// clean up
 
 
+				mesh.dispose();
 				geometry.dispose();
 				geometry.dispose();
 				material.dispose();
 				material.dispose();
 				texture.dispose();
 				texture.dispose();

+ 6 - 0
src/core/Object3D.js

@@ -544,6 +544,12 @@ THREE.Object3D.prototype = {
 
 
 		return object;
 		return object;
 
 
+	},
+
+	dispose: function () {
+
+		this.dispatchEvent( { type: 'dispose' } );
+
 	}
 	}
 
 
 };
 };

+ 11 - 0
src/renderers/WebGLRenderer.js

@@ -510,6 +510,16 @@ THREE.WebGLRenderer = function ( parameters ) {
 	};
 	};
 
 
 	// Events
 	// Events
+	
+	var onObjectDispose = function ( event ) {
+
+		var object = event.target;
+
+		object.removeEventListener( 'dispose', onObjectDispose );
+
+		removeObject( object )
+
+	};
 
 
 	var onGeometryDispose = function ( event ) {
 	var onGeometryDispose = function ( event ) {
 
 
@@ -3578,6 +3588,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		if ( object.__webglInit === undefined ) {
 		if ( object.__webglInit === undefined ) {
 
 
 			object.__webglInit = true;
 			object.__webglInit = true;
+			object.addEventListener( 'dispose', onObjectDispose );
 
 
 			object._modelViewMatrix = new THREE.Matrix4();
 			object._modelViewMatrix = new THREE.Matrix4();
 			object._normalMatrix = new THREE.Matrix3();
 			object._normalMatrix = new THREE.Matrix3();