Browse Source

GUI: Exporting vertices by now. Fun hack for downloading "geometry.js" file ^^

Mr.doob 13 years ago
parent
commit
5958803c08
2 changed files with 38 additions and 7 deletions
  1. 8 5
      gui/index.html
  2. 30 2
      gui/js/ui/Sidebar.Properties.Geometry.js

+ 8 - 5
gui/index.html

@@ -39,6 +39,9 @@
 
 
 		<script>
 		<script>
 
 
+			window.URL = window.URL || window.webkitURL;
+			window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
+
 			var SIGNALS = signals;
 			var SIGNALS = signals;
 
 
 			var signals = {
 			var signals = {
@@ -52,6 +55,11 @@
 
 
 			//
 			//
 
 
+			var menubar = new MenuBar( signals );
+			menubar.setWidth( '100%' );
+			menubar.setHeight( '32px' );
+			document.body.appendChild( menubar.dom );
+
 			var viewport = new Viewport( signals );
 			var viewport = new Viewport( signals );
 			viewport.setTop( '32px' );
 			viewport.setTop( '32px' );
 			viewport.setWidth( '-webkit-calc(100% - 300px)', '-moz-calc(100% - 300px)', 'calc(100% - 300px)' );
 			viewport.setWidth( '-webkit-calc(100% - 300px)', '-moz-calc(100% - 300px)', 'calc(100% - 300px)' );
@@ -64,11 +72,6 @@
 			sidebar.setHeight( '-webkit-calc(100% - 32px)', '-moz-calc(100% - 32px)', 'calc(100% - 32px)' );
 			sidebar.setHeight( '-webkit-calc(100% - 32px)', '-moz-calc(100% - 32px)', 'calc(100% - 32px)' );
 			document.body.appendChild( sidebar.dom );
 			document.body.appendChild( sidebar.dom );
 
 
-			var menubar = new MenuBar( signals );
-			menubar.setWidth( '100%' );
-			menubar.setHeight( '32px' );
-			document.body.appendChild( menubar.dom );
-
 			document.addEventListener( 'drop', function ( event ) {
 			document.addEventListener( 'drop', function ( event ) {
 
 
 				event.preventDefault();
 				event.preventDefault();

+ 30 - 2
gui/js/ui/Sidebar.Properties.Geometry.js

@@ -5,7 +5,9 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 
 	container.add( new UI.Text().setText( 'GEOMETRY' ).setColor( '#666' ) );
 	container.add( new UI.Text().setText( 'GEOMETRY' ).setColor( '#666' ) );
 
 
-	container.add( new UI.Button( 'absolute' ).setRight( '0px' ).setText( 'Export' ).onClick( exportGeometry ) );
+	var button = new UI.Button( 'absolute' ).setRight( '0px' ).setText( 'Export' ).onClick( exportGeometry );
+	button.download = 'test.js';
+	container.add( button );
 
 
 	container.add( new UI.Break(), new UI.Break() );
 	container.add( new UI.Break(), new UI.Break() );
 
 
@@ -91,7 +93,33 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 
 	function exportGeometry() {
 	function exportGeometry() {
 
 
-		console.log( selected );
+		var geometry = selected;
+
+		var json = { "metadata": { "formatVersion" : 3 } };
+
+		json.vertices = [];
+
+		for ( var i = 0; i < geometry.vertices.length; i ++ ) {
+
+			var vertex = geometry.vertices[ i ];
+			json.vertices.push( vertex.x, vertex.y, vertex.z );
+
+		}
+
+		var file = new BlobBuilder();
+		file.append( JSON.stringify( json ) );
+
+		var objectURL = URL.createObjectURL( file.getBlob( 'text/json' ) );
+
+		var clickEvent = document.createEvent( 'MouseEvent' );
+		clickEvent.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null );
+
+		var download = document.createElement( 'a' );
+		download.href = objectURL;
+		download.download = 'geometry.js';
+		download.dispatchEvent( clickEvent );
+
+		URL.revokeObjectURL( objectURL );
 
 
 	}
 	}