diff --git a/examples/css3d_molecules.html b/examples/css3d_molecules.html index 5cf3393291323b8d46afbc4c66b00f87c046f405..dd4df1ef54b9b28145ff01a47883ebd226d51701 100644 --- a/examples/css3d_molecules.html +++ b/examples/css3d_molecules.html @@ -19,7 +19,6 @@ background: -o-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* Opera 12+ */ background: -ms-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* IE10+ */ background: radial-gradient(ellipse at center, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2b2d30', endColorstr='#000000',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ margin: 0; font-family: Arial; @@ -339,21 +338,8 @@ for ( var i = 0; i < objects.length; i ++ ) { var object = objects[ i ]; - object.parent.remove( object ); - if ( object.element.parentNode === renderer.cameraElement ) { - - renderer.cameraElement.removeChild( object.element ); - - } - - if ( object.userData.joint ) { - - object.userData.joint.parent.remove( object.userData.joint ); - - } - } objects = []; diff --git a/examples/js/renderers/CSS3DRenderer.js b/examples/js/renderers/CSS3DRenderer.js index 43b3cd3f61adb5ec0d20f5c4e8440ebef3921f33..79c090304bf0264b62063d5570c1ad2c41637c98 100644 --- a/examples/js/renderers/CSS3DRenderer.js +++ b/examples/js/renderers/CSS3DRenderer.js @@ -8,12 +8,22 @@ THREE.CSS3DObject = function ( element ) { THREE.Object3D.call( this ); this.element = element; - this.element.style.position = "absolute"; + this.element.style.position = 'absolute'; this.element.style.WebkitTransformStyle = 'preserve-3d'; this.element.style.MozTransformStyle = 'preserve-3d'; this.element.style.oTransformStyle = 'preserve-3d'; this.element.style.transformStyle = 'preserve-3d'; + this.addEventListener( 'removed', function () { + + if ( this.element.parentNode !== null ) { + + this.element.parentNode.removeChild( this.element ); + + } + + } ); + }; THREE.CSS3DObject.prototype = Object.create( THREE.Object3D.prototype ); diff --git a/src/core/Object3D.js b/src/core/Object3D.js index 41a75266bdfe202c46b62e461e37b4d839ef60c8..60f0e100235acc3cfd72c6ddbf320c4faa741b05 100644 --- a/src/core/Object3D.js +++ b/src/core/Object3D.js @@ -307,6 +307,8 @@ THREE.Object3D.prototype = { } object.parent = this; + object.dispatchEvent( { type: 'added' } ); + this.children.push( object ); // add to scene @@ -336,6 +338,8 @@ THREE.Object3D.prototype = { if ( index !== - 1 ) { object.parent = undefined; + object.dispatchEvent( { type: 'removed' } ); + this.children.splice( index, 1 ); // remove from scene