2
0
Эх сурвалжийг харах

Object3D: Added dispose() method.

Mr.doob 11 жил өмнө
parent
commit
c7241348cd

+ 1 - 0
examples/webgl_test_memory.html

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

+ 6 - 0
src/core/Object3D.js

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

+ 11 - 0
src/renderers/WebGLRenderer.js

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