Browse Source

Editor: Moved exporting stuff out of Viewport.

Mr.doob 12 years ago
parent
commit
1297e21b31
3 changed files with 83 additions and 54 deletions
  1. 0 2
      editor/index.html
  2. 83 5
      editor/js/ui/Menubar.File.js
  3. 0 47
      editor/js/ui/Viewport.js

+ 0 - 2
editor/index.html

@@ -135,8 +135,6 @@
 
 				cloneSelectedObject: new SIGNALS.Signal(),
 				removeSelectedObject: new SIGNALS.Signal(),
-				exportGeometry: new SIGNALS.Signal(),
-				exportScene: new SIGNALS.Signal(),
 
 				// notifications
 

+ 83 - 5
editor/js/ui/Menubar.File.js

@@ -11,6 +11,9 @@ Menubar.File = function ( signals ) {
 
 	//
 
+	var selectedObject;
+	var scene;
+
 	var options = new UI.Panel();
 	options.setClass( 'options' );
 	container.add( options );
@@ -52,7 +55,11 @@ Menubar.File = function ( signals ) {
 	var option = new UI.Panel();
 	option.setClass( 'option' );
 	option.setTextContent( 'Export Geometry' );
-	option.onClick( function () { signals.exportGeometry.dispatch( { exporter: THREE.GeometryExporter } ); } );
+	option.onClick( function () {
+
+		exportGeometry( THREE.GeometryExporter );
+
+	} );
 	options.add( option );
 
 	/*
@@ -62,7 +69,11 @@ Menubar.File = function ( signals ) {
 	var option = new UI.Panel();
 	option.setClass( 'option' );
 	option.setTextContent( 'Export Scene' );
-	option.onClick( function () { signals.exportScene.dispatch( { exporter: THREE.SceneExporter } ); } );
+	option.onClick( function () {
+
+		exportScene( THREE.SceneExporter );
+
+	} );
 	options.add( option );
 
 	*/
@@ -72,7 +83,11 @@ Menubar.File = function ( signals ) {
 	var option = new UI.Panel();
 	option.setClass( 'option' );
 	option.setTextContent( 'Export Scene 2' );
-	option.onClick( function () { signals.exportScene.dispatch( { exporter: THREE.SceneExporter2 } ); } );
+	option.onClick( function () {
+
+		exportScene( THREE.SceneExporter2 );
+
+	} );
 	options.add( option );
 
 	// export OBJ
@@ -80,10 +95,73 @@ Menubar.File = function ( signals ) {
 	var option = new UI.Panel();
 	option.setClass( 'option' );
 	option.setTextContent( 'Export OBJ' );
-	option.onClick( function () { signals.exportGeometry.dispatch( { exporter: THREE.OBJExporter } ); } );
+	option.onClick( function () {
+
+		exportGeometry( THREE.OBJExporter );
+
+	} );
 	options.add( option );
 
-	//
+	var exportGeometry = function ( exporterClass ) {
+
+		if ( selectedObject.geometry === undefined ) {
+
+			alert( "Selected object doesn't have any geometry" );
+			return;
+
+		}
+
+		var exporter = new exporterClass();
+
+		var output;
+
+		if ( exporter instanceof THREE.GeometryExporter ) {
+
+			output = JSON.stringify( exporter.parse( selectedObject.geometry ), null, '\t' );
+			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
+
+		} else {
+
+			output = exporter.parse( selectedObject.geometry );
+
+		}
+
+		var blob = new Blob( [ output ], { type: 'text/plain' } );
+		var objectURL = URL.createObjectURL( blob );
+
+		window.open( objectURL, '_blank' );
+		window.focus();
+
+	};
+
+	var exportScene = function ( exporterClass ) {
+
+		var exporter = new exporterClass();
+
+		var output = JSON.stringify( exporter.parse( scene ), null, '\t' );
+		output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
+
+		var blob = new Blob( [ output ], { type: 'text/plain' } );
+		var objectURL = URL.createObjectURL( blob );
+
+		window.open( objectURL, '_blank' );
+		window.focus();
+
+	};
+
+	// signals
+
+	signals.objectSelected.add( function ( object ) {
+
+		selectedObject = object;
+
+	} );
+
+	signals.sceneChanged.add( function ( object ) {
+
+		scene = object;
+
+	} );
 
 	return container;
 

+ 0 - 47
editor/js/ui/Viewport.js

@@ -508,53 +508,6 @@ var Viewport = function ( signals ) {
 
 	} );
 
-	signals.exportGeometry.add( function ( object ) {
-
-		if ( selected.geometry === undefined ) {
-
-			alert( "Selected object doesn't have any geometry" );
-			return;
-
-		}
-
-		var exporter = new object.exporter();
-
-		var output;
-
-		if ( exporter instanceof THREE.GeometryExporter ) {
-
-			output = JSON.stringify( exporter.parse( selected.geometry ), null, '\t' );
-			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
-
-		} else {
-
-			output = exporter.parse( selected.geometry );
-
-		}
-
-		var blob = new Blob( [ output ], { type: 'text/plain' } );
-		var objectURL = URL.createObjectURL( blob );
-
-		window.open( objectURL, '_blank' );
-		window.focus();
-
-	} );
-
-	signals.exportScene.add( function ( object ) {
-
-		var exporter = new object.exporter();
-
-		var output = JSON.stringify( exporter.parse( scene ), null, '\t' );
-		output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
-
-		var blob = new Blob( [ output ], { type: 'text/plain' } );
-		var objectURL = URL.createObjectURL( blob );
-
-		window.open( objectURL, '_blank' );
-		window.focus();
-
-	} );
-
 	//
 
 	var renderer = new THREE.WebGLRenderer( { antialias: true, alpha: false } );