From 5670f0e8184e71d6389ce14329c36cfe31f0bc19 Mon Sep 17 00:00:00 2001 From: alteredq Date: Tue, 16 Oct 2012 18:07:29 +0200 Subject: [PATCH] Editor: reapplying deletion / selection handling code that got lost in the merge. --- editor/js/ui/Viewport.js | 64 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/editor/js/ui/Viewport.js b/editor/js/ui/Viewport.js index 0870ec4884..285e7d1545 100644 --- a/editor/js/ui/Viewport.js +++ b/editor/js/ui/Viewport.js @@ -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(); } ); -- GitLab