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