提交 5670f0e8 编写于 作者: A alteredq

Editor: reapplying deletion / selection handling code that got lost in the merge.

上级 8b06b211
......@@ -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();
} );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册