瀏覽代碼

Object3D: Added dispose() method.

Mr.doob 11 年之前
父節點
當前提交
c7241348cd
共有 3 個文件被更改,包括 18 次插入0 次删除
  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
 
+				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();