|
@@ -108,8 +108,9 @@ var Viewport = function ( signals ) {
|
|
|
intersectionPlane.lookAt( camera.position );
|
|
|
|
|
|
picked = intersects[ 0 ].object;
|
|
|
+ selected = picked;
|
|
|
|
|
|
- signals.objectSelected.dispatch( picked );
|
|
|
+ signals.objectSelected.dispatch( selected );
|
|
|
|
|
|
var intersects = ray.intersectObject( intersectionPlane );
|
|
|
offset.copy( intersects[ 0 ].point ).subSelf( intersectionPlane.position );
|
|
@@ -173,14 +174,16 @@ var Viewport = function ( signals ) {
|
|
|
|
|
|
if ( intersects.length > 0 ) {
|
|
|
|
|
|
- signals.objectSelected.dispatch( intersects[ 0 ].object );
|
|
|
+ selected = intersects[ 0 ].object;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- signals.objectSelected.dispatch( null );
|
|
|
+ selected = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
+ signals.objectSelected.dispatch( selected );
|
|
|
+
|
|
|
};
|
|
|
|
|
|
container.dom.addEventListener( 'mousedown', onMouseDown, false );
|
|
@@ -228,6 +231,55 @@ var Viewport = function ( signals ) {
|
|
|
|
|
|
} );
|
|
|
|
|
|
+ signals.objectRemoved.add( function ( ) {
|
|
|
+
|
|
|
+ if ( !selected ) {
|
|
|
+
|
|
|
+ console.warn( "No object selected for delete" );
|
|
|
+ return;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ var toRemove = {};
|
|
|
+
|
|
|
+ selected.traverse( function ( child ) {
|
|
|
+
|
|
|
+ toRemove[ child.id ] = true;
|
|
|
+
|
|
|
+ } );
|
|
|
+
|
|
|
+ var newObjects = [];
|
|
|
+
|
|
|
+ for ( var i = 0; i < objects.length; i ++ ) {
|
|
|
+
|
|
|
+ var object = objects[ i ];
|
|
|
+
|
|
|
+ if ( ! ( object.id in toRemove ) ) {
|
|
|
+
|
|
|
+ newObjects.push( object );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ objects = newObjects;
|
|
|
+
|
|
|
+ selectionBox.visible = false;
|
|
|
+ selectionAxis.visible = false;
|
|
|
+
|
|
|
+ scene.traverse( function( node ) {
|
|
|
+
|
|
|
+ node.remove( selected );
|
|
|
+
|
|
|
+ } );
|
|
|
+
|
|
|
+ render();
|
|
|
+
|
|
|
+ signals.sceneChanged.dispatch( scene );
|
|
|
+ signals.objectSelected.dispatch( null );
|
|
|
+
|
|
|
+ } );
|
|
|
+
|
|
|
var selected = null;
|
|
|
|
|
|
signals.objectSelected.add( function ( object ) {
|
|
@@ -289,6 +341,12 @@ var Viewport = function ( signals ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ if ( object !== null ) {
|
|
|
+
|
|
|
+ selected = object;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
render();
|
|
|
|
|
|
} );
|