Browse Source

Editor: Yet more refactoring.

Mr.doob 12 years ago
parent
commit
5a27fa305f
3 changed files with 20 additions and 158 deletions
  1. 2 18
      editor/index.html
  2. 0 8
      editor/js/ui/Menubar.File.js
  3. 18 132
      editor/js/ui/Viewport.js

+ 2 - 18
editor/index.html

@@ -121,12 +121,10 @@
 				exportGeometry: new SIGNALS.Signal(),
 				exportGeometry: new SIGNALS.Signal(),
 				exportScene: new SIGNALS.Signal(),
 				exportScene: new SIGNALS.Signal(),
 				toggleHelpers: new SIGNALS.Signal(),
 				toggleHelpers: new SIGNALS.Signal(),
-				resetScene: new SIGNALS.Signal(),
 
 
 				// notifications
 				// notifications
 
 
 				rendererChanged: new SIGNALS.Signal(),
 				rendererChanged: new SIGNALS.Signal(),
-				sceneAdded: new SIGNALS.Signal(),
 				sceneChanged: new SIGNALS.Signal(),
 				sceneChanged: new SIGNALS.Signal(),
 				objectAdded: new SIGNALS.Signal(),
 				objectAdded: new SIGNALS.Signal(),
 				objectSelected: new SIGNALS.Signal(),
 				objectSelected: new SIGNALS.Signal(),
@@ -298,18 +296,8 @@
 
 
 									result.scene.name = filename;
 									result.scene.name = filename;
 
 
-									var resetScene = true;
-
-									if ( resetScene ) {
-
-										signals.sceneAdded.dispatch( result.scene, result.currentCamera );
-
-									} else {
-
-										signals.objectAdded.dispatch( result.scene );
-										signals.objectSelected.dispatch( result.scene );
-
-									}
+									signals.objectAdded.dispatch( result.scene );
+									signals.objectSelected.dispatch( result.scene );
 
 
 								}, '' );
 								}, '' );
 
 
@@ -454,10 +442,6 @@
 
 
 			}
 			}
 
 
-			// create default scene
-
-			signals.resetScene.dispatch();
-
 			//
 			//
 
 
 			var onWindowResize = function ( event ) {
 			var onWindowResize = function ( event ) {

+ 0 - 8
editor/js/ui/Menubar.File.js

@@ -25,14 +25,6 @@ Menubar.File = function ( signals ) {
 	options.add( option );
 	options.add( option );
 	*/
 	*/
 
 
-	// reset scene
-
-	var option = new UI.Panel();
-	option.setClass( 'option' );
-	option.setTextContent( 'Reset' );
-	option.onClick( function () { signals.resetScene.dispatch(); } );
-	options.add( option );
-
 	// export geometry
 	// export geometry
 
 
 	var option = new UI.Panel();
 	var option = new UI.Panel();

+ 18 - 132
editor/js/ui/Viewport.js

@@ -48,10 +48,13 @@ var Viewport = function ( signals ) {
 	selectionAxis.visible = false;
 	selectionAxis.visible = false;
 	sceneHelpers.add( selectionAxis );
 	sceneHelpers.add( selectionAxis );
 
 
-	// default dummy scene and camera
+	//
 
 
 	var scene = new THREE.Scene();
 	var scene = new THREE.Scene();
-	var camera = new THREE.Camera();
+
+	var camera = new THREE.PerspectiveCamera( 50, container.dom.offsetWidth / container.dom.offsetHeight, 1, 5000 );
+	camera.position.set( 500, 250, 500 );
+	camera.lookAt( scene.position );
 
 
 	// fog
 	// fog
 
 
@@ -332,7 +335,6 @@ var Viewport = function ( signals ) {
 	signals.objectAdded.add( function ( object ) {
 	signals.objectAdded.add( function ( object ) {
 
 
 		object.traverse( handleAddition );
 		object.traverse( handleAddition );
-
 		scene.add( object );
 		scene.add( object );
 
 
 		if ( object instanceof THREE.Light )  {
 		if ( object instanceof THREE.Light )  {
@@ -341,9 +343,8 @@ var Viewport = function ( signals ) {
 
 
 		}
 		}
 
 
-		render();
-
 		signals.sceneChanged.dispatch( scene );
 		signals.sceneChanged.dispatch( scene );
+		signals.objectSelected.dispatch( object );
 
 
 	} );
 	} );
 
 
@@ -382,44 +383,38 @@ var Viewport = function ( signals ) {
 
 
 		if ( confirm( 'Delete ' + name + '?' ) === false ) return;
 		if ( confirm( 'Delete ' + name + '?' ) === false ) return;
 
 
-		var object = selected;
-
 		if ( selected instanceof THREE.Light ) {
 		if ( selected instanceof THREE.Light ) {
 
 
-			var helper = objectsToHelpers[ object.id ];
+			var helper = objectsToHelpers[ selected.id ];
 
 
 			objects.splice( objects.indexOf( helper ), 1 );
 			objects.splice( objects.indexOf( helper ), 1 );
 
 
 			helper.parent.remove( helper );
 			helper.parent.remove( helper );
-			object.parent.remove( object );
+			selected.parent.remove( selected );
 
 
-			delete objectsToHelpers[ object.id ];
+			delete objectsToHelpers[ selected.id ];
 			delete helpersToObjects[ helper.id ];
 			delete helpersToObjects[ helper.id ];
 
 
+			updateMaterials( scene );
+
 		} else {
 		} else {
 
 
-			object.parent.remove( object );
-			objects.splice( objects.indexOf( object ), 1 );
+			selected.traverse( function ( object ) {
 
 
-		}
+				var index = objects.indexOf( object );
 
 
-		// clean selection highlight
+				if ( index !== -1 ) {
 
 
-		selectionBox.visible = false;
-		selectionAxis.visible = false;
+					objects.splice( index, 1 )
 
 
-		// remove selected object from the scene
+				}
 
 
+			} );
 
 
-		if ( object instanceof THREE.Light )  {
-
-			updateMaterials( scene );
+			selected.parent.remove( selected );
 
 
 		}
 		}
 
 
-		render();
-
-		signals.sceneChanged.dispatch( scene );
 		signals.objectSelected.dispatch( null );
 		signals.objectSelected.dispatch( null );
 
 
 	} );
 	} );
@@ -613,98 +608,6 @@ var Viewport = function ( signals ) {
 
 
 	} );
 	} );
 
 
-	signals.resetScene.add( function () {
-
-		var defaultScene = createDefaultScene();
-		var defaultCamera = createDefaultCamera();
-		var defaultBgColor = new THREE.Color( 0xaaaaaa );
-
-		defaultCamera.lookAt( defaultScene.position );
-		defaultScene.add( defaultCamera );
-
-		signals.sceneAdded.dispatch( defaultScene, defaultCamera, defaultBgColor );
-		signals.objectSelected.dispatch( defaultCamera );
-
-	} );
-
-	signals.sceneAdded.add( function ( newScene, newCamera ) {
-
-		scene = newScene;
-
-		// remove old gizmos
-
-		var toRemove = {};
-
-		sceneHelpers.traverse( function ( child ) {
-
-			if ( child.userData.isGizmo ) {
-
-				toRemove[ child.id ] = child;
-
-			}
-
-		} );
-
-		for ( var id in toRemove ) {
-
-			sceneHelpers.remove( toRemove[ id ] );
-
-		}
-
-		// reset picking list
-
-		objects = [];
-
-		// add new gizmos and fill picking list
-
-		scene.traverse( handleAddition );
-
-		//
-
-		if ( newCamera ) {
-
-			camera = newCamera;
-
-			camera.aspect = container.dom.offsetWidth / container.dom.offsetHeight;
-			camera.updateProjectionMatrix();
-
-			controls.object = camera;
-			controls.update();
-
-		} else {
-
-			scene.add( camera );
-
-		}
-
-		if ( newScene.fog ) {
-
-			oldFogColor = newScene.fog.color.getHex();
-
-			if ( newScene.fog instanceof THREE.Fog ) {
-
-				oldFogType = "Fog";
-				oldFogNear = newScene.fog.near;
-				oldFogFar = newScene.fog.far;
-
-			} else if ( newScene.fog instanceof THREE.FogExp2 ) {
-
-				oldFogType = "FogExp2";
-				oldFogDensity = newScene.fog.density;
-
-			}
-
-		} else {
-
-			oldFogType = "None";
-
-		}
-
-		signals.sceneChanged.dispatch( scene );
-		signals.objectSelected.dispatch( camera );
-
-	} );
-
 	//
 	//
 
 
 	var renderer = new THREE.WebGLRenderer( { antialias: true, alpha: false, clearColor: 0xaaaaaa, clearAlpha: 1 } );
 	var renderer = new THREE.WebGLRenderer( { antialias: true, alpha: false, clearColor: 0xaaaaaa, clearAlpha: 1 } );
@@ -765,23 +668,6 @@ var Viewport = function ( signals ) {
 
 
 	}
 	}
 
 
-	function createDefaultScene() {
-
-		return new THREE.Scene();
-
-	}
-
-	function createDefaultCamera() {
-
-		var camera = new THREE.PerspectiveCamera( 50, 1, 1, 5000 );
-
-		camera.name = "Camera";
-		camera.position.set( 500, 250, 500 );
-
-		return camera;
-
-	}
-
 	function animate() {
 	function animate() {
 
 
 		requestAnimationFrame( animate );
 		requestAnimationFrame( animate );