Browse Source

GUI: Prettier geometry exporter output.

Mr.doob 13 years ago
parent
commit
71ff55fbdb
1 changed files with 28 additions and 20 deletions
  1. 28 20
      gui/js/ui/Sidebar.Properties.Geometry.js

+ 28 - 20
gui/js/ui/Sidebar.Properties.Geometry.js

@@ -95,18 +95,18 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 		var geometry = selected;
 
-		var json = { "metadata": { "formatVersion" : 3 } };
-
-		json.vertices = [];
+		var vertices = [];
 
 		for ( var i = 0; i < geometry.vertices.length; i ++ ) {
 
 			var vertex = geometry.vertices[ i ];
-			json.vertices.push( vertex.x, vertex.y, vertex.z );
+			vertices.push( vertex.x, vertex.y, vertex.z );
 
 		}
 
-		json.faces = [];
+		var faces = [];
+		var uvs = [[]];
+		var normals = [];
 
 		for ( var i = 0; i < geometry.faces.length; i ++ ) {
 
@@ -133,31 +133,29 @@ Sidebar.Properties.Geometry = function ( signals ) {
 			faceType = setBit( faceType, 7, hasFaceVertexColor );
 			*/
 
-			json.faces.push( faceType );
+			faces.push( faceType );
 
 			if ( isTriangle ) {
 
-				json.faces.push( face.a, face.b, face.c );
+				faces.push( face.a, face.b, face.c );
 
 			} else {
 
-				json.faces.push( face.a, face.b, face.c, face.d );
+				faces.push( face.a, face.b, face.c, face.d );
 
 			}
 
 			if ( hasMaterial ) {
 
-				json.faces.push( face.materialIndex );
+				faces.push( face.materialIndex );
 
 			}
 
-			if ( hasFaceUv || hasFaceVertexUv ) json.uvs = [ [] ];
-
 			if ( hasFaceUv ) {
 
 				/*
 				var uv = geometry.faceUvs[ 0 ][ i ];
-				json.uvs[ 0 ].push( uv.u, uv.v );
+				uvs[ 0 ].push( uv.u, uv.v );
 				*/
 
 			}
@@ -169,7 +167,7 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 				if ( isTriangle ) {
 
-					json.faces.push(
+					faces.push(
 						uvs[ 0 ].u, uvs[ 0 ].v,
 						uvs[ 1 ].u, uvs[ 1 ].v,
 						uvs[ 2 ].u, uvs[ 2 ].v
@@ -177,7 +175,7 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 				} else {
 
-					json.faces.push(
+					faces.push(
 						uvs[ 0 ].u, uvs[ 0 ].v,
 						uvs[ 1 ].u, uvs[ 1 ].v,
 						uvs[ 2 ].u, uvs[ 2 ].v,
@@ -189,13 +187,11 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 			}
 
-			if ( hasFaceNormal || hasFaceVertexNormal ) json.normals = [];
-
 			if ( hasFaceNormal ) {
 
 				/*
 				var normal = face.normal;
-				json.faces.push( normal.x, normal.y, normal.z );
+				faces.push( normal.x, normal.y, normal.z );
 				*/
 
 			}
@@ -207,7 +203,7 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 				if ( isTriangle ) {
 
-					json.faces.push(
+					faces.push(
 						normals[ 0 ].u, normals[ 0 ].y, normals[ 0 ].z,
 						normals[ 1 ].u, normals[ 1 ].y, normals[ 1 ].z,
 						normals[ 2 ].u, normals[ 2 ].y, normals[ 2 ].z
@@ -215,7 +211,7 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 				} else {
 
-					json.faces.push(
+					faces.push(
 						normals[ 0 ].x, normals[ 0 ].y, normals[ 0 ].z,
 						normals[ 1 ].x, normals[ 1 ].y, normals[ 1 ].z,
 						normals[ 2 ].x, normals[ 2 ].y, normals[ 2 ].z,
@@ -237,8 +233,20 @@ Sidebar.Properties.Geometry = function ( signals ) {
 
 		//
 
+		var output = [
+			'{',
+			'	"metadata": {',
+			'		"formatVersion" : 3',
+			'	},',
+			'	"vertices": ' + JSON.stringify( vertices ) + ',',
+			'	"normals": ' + JSON.stringify( normals ) + ',',
+			'	"uvs": ' + JSON.stringify( uvs ) + ',',
+			'	"faces": ' + JSON.stringify( faces ),
+			'}'
+		].join( '\n' );
+
 		var file = new BlobBuilder();
-		file.append( JSON.stringify( json ) );
+		file.append( output );
 
 		var objectURL = URL.createObjectURL( file.getBlob( 'text/json' ) );