Skip to content

Commit 03759e1

Browse files
committed
Object3D now dispatching added/removed events when object is removed from it's parent. CSS3D can nore auto-remove DOM elements. See mrdoob#3575.
1 parent dbcc13b commit 03759e1

3 files changed

Lines changed: 15 additions & 15 deletions

File tree

examples/css3d_molecules.html

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
background: -o-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* Opera 12+ */
2020
background: -ms-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* IE10+ */
2121
background: radial-gradient(ellipse at center, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* W3C */
22-
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2b2d30', endColorstr='#000000',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
2322

2423
margin: 0;
2524
font-family: Arial;
@@ -339,21 +338,8 @@
339338
for ( var i = 0; i < objects.length; i ++ ) {
340339

341340
var object = objects[ i ];
342-
343341
object.parent.remove( object );
344342

345-
if ( object.element.parentNode === renderer.cameraElement ) {
346-
347-
renderer.cameraElement.removeChild( object.element );
348-
349-
}
350-
351-
if ( object.userData.joint ) {
352-
353-
object.userData.joint.parent.remove( object.userData.joint );
354-
355-
}
356-
357343
}
358344

359345
objects = [];

examples/js/renderers/CSS3DRenderer.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,22 @@ THREE.CSS3DObject = function ( element ) {
88
THREE.Object3D.call( this );
99

1010
this.element = element;
11-
this.element.style.position = "absolute";
11+
this.element.style.position = 'absolute';
1212
this.element.style.WebkitTransformStyle = 'preserve-3d';
1313
this.element.style.MozTransformStyle = 'preserve-3d';
1414
this.element.style.oTransformStyle = 'preserve-3d';
1515
this.element.style.transformStyle = 'preserve-3d';
1616

17+
this.addEventListener( 'removed', function () {
18+
19+
if ( this.element.parentNode !== null ) {
20+
21+
this.element.parentNode.removeChild( this.element );
22+
23+
}
24+
25+
} );
26+
1727
};
1828

1929
THREE.CSS3DObject.prototype = Object.create( THREE.Object3D.prototype );

src/core/Object3D.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,8 @@ THREE.Object3D.prototype = {
307307
}
308308

309309
object.parent = this;
310+
object.dispatchEvent( { type: 'added' } );
311+
310312
this.children.push( object );
311313

312314
// add to scene
@@ -336,6 +338,8 @@ THREE.Object3D.prototype = {
336338
if ( index !== - 1 ) {
337339

338340
object.parent = undefined;
341+
object.dispatchEvent( { type: 'removed' } );
342+
339343
this.children.splice( index, 1 );
340344

341345
// remove from scene

0 commit comments

Comments
 (0)