瀏覽代碼

Object3D.removed(): Moved descendants traversal into the renderer. See #5269.

Mr.doob 11 年之前
父節點
當前提交
0d94e17e41
共有 2 個文件被更改,包括 9 次插入13 次删除
  1. 1 9
      src/core/Object3D.js
  2. 8 4
      src/renderers/WebGLRenderer.js

+ 1 - 9
src/core/Object3D.js

@@ -358,17 +358,9 @@ THREE.Object3D.prototype = {
 
 			object.parent = undefined;
 
-			this.children.splice( index, 1 );
-
 			object.dispatchEvent( { type: 'removed' } );
 
-			// notify renderer object and descendants were removed.
-
-			object.traverse( function ( child ) {
-
-				child.dispatchEvent( { type: 'removedFromScene' } );
-
-			} );
+			this.children.splice( index, 1 );
 
 		}
 

+ 8 - 4
src/renderers/WebGLRenderer.js

@@ -513,13 +513,17 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	// Events
 	
-	var onObjectRemovedFromScene = function ( event ) {
+	var onObjectRemoved = function ( event ) {
 
 		var object = event.target;
 
-		object.removeEventListener( 'removedFromScene', onObjectRemovedFromScene );
+		object.removeEventListener( 'remove', onObjectRemoved );
 
-		removeObject( object )
+		object.traverse( function ( child ) {
+
+			removeObject( child );
+
+		} );
 
 	};
 
@@ -3553,7 +3557,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			object._modelViewMatrix = new THREE.Matrix4();
 			object._normalMatrix = new THREE.Matrix3();
 
-			object.addEventListener( 'removedFromScene', onObjectRemovedFromScene );
+			object.addEventListener( 'removed', onObjectRemoved );
 
 		}