Browse Source

Tweaks to GeometryLoader/GeometryExporter.

Mr.doob 12 years ago
parent
commit
194633ff28
2 changed files with 58 additions and 18 deletions
  1. 21 17
      examples/js/exporters/GeometryExporter.js
  2. 37 1
      src/loaders/GeometryLoader.js

+ 21 - 17
examples/js/exporters/GeometryExporter.js

@@ -10,6 +10,14 @@ THREE.GeometryExporter.prototype = {
 
 
 	parse: function ( geometry ) {
 	parse: function ( geometry ) {
 
 
+		var output = {
+			metadata: {
+				version: 4.0,
+				type: 'geometry',
+				generator: 'GeometryExporter'
+			}
+		};
+
 		var vertices = [];
 		var vertices = [];
 
 
 		for ( var i = 0; i < geometry.vertices.length; i ++ ) {
 		for ( var i = 0; i < geometry.vertices.length; i ++ ) {
@@ -144,33 +152,29 @@ THREE.GeometryExporter.prototype = {
 
 
 		function getNormalIndex( x, y, z ) {
 		function getNormalIndex( x, y, z ) {
 
 
-				var hash = x.toString() + y.toString() + z.toString();
+			var hash = x.toString() + y.toString() + z.toString();
 
 
-				if ( normalsHash[ hash ] !== undefined ) {
+			if ( normalsHash[ hash ] !== undefined ) {
 
 
-					return normalsHash[ hash ];
+				return normalsHash[ hash ];
 
 
-				}
+			}
 
 
-				normalsHash[ hash ] = normals.length / 3;
-				normals.push( x, y, z );
+			normalsHash[ hash ] = normals.length / 3;
+			normals.push( x, y, z );
 
 
-				return normalsHash[ hash ];
+			return normalsHash[ hash ];
 
 
 		}
 		}
 
 
+		output.vertices = vertices;
+		output.normals = normals;
+		output.uvs = uvs;
+		output.faces = faces;
+
 		//
 		//
 
 
-		return {
-			metadata: {
-				version: 4,
-				generator: "GeometryExporter",
-			},
-			vertices: vertices,
-			normals: normals,
-			uvs: uvs,
-			faces: faces
-		};
+		return output;
 
 
 	}
 	}
 
 

+ 37 - 1
src/loaders/GeometryLoader.js

@@ -10,6 +10,42 @@ THREE.GeometryLoader.prototype = {
 	addEventListener: THREE.EventDispatcher.prototype.addEventListener,
 	addEventListener: THREE.EventDispatcher.prototype.addEventListener,
 	hasEventListener: THREE.EventDispatcher.prototype.hasEventListener,
 	hasEventListener: THREE.EventDispatcher.prototype.hasEventListener,
 	removeEventListener: THREE.EventDispatcher.prototype.removeEventListener,
 	removeEventListener: THREE.EventDispatcher.prototype.removeEventListener,
-	dispatchEvent: THREE.EventDispatcher.prototype.dispatchEvent
+	dispatchEvent: THREE.EventDispatcher.prototype.dispatchEvent,
+
+	load: function ( url ) {
+
+		var scope = this;
+		var request = new XMLHttpRequest();
+
+		request.addEventListener( 'load', function ( event ) {
+
+			var response = scope.parse( JSON.parse( event.target.responseText ) );
+
+			scope.dispatchEvent( { type: 'load', content: response } );
+
+		}, false );
+
+		request.addEventListener( 'progress', function ( event ) {
+
+			scope.dispatchEvent( { type: 'progress', loaded: event.loaded, total: event.total } );
+
+		}, false );
+
+		request.addEventListener( 'error', function () {
+
+			scope.dispatchEvent( { type: 'error', message: 'Couldn\'t load URL [' + url + ']' } );
+
+		}, false );
+
+		request.open( 'GET', url, true );
+		request.send( null );
+
+	},
+
+	parse: function ( json ) {
+
+		
+
+	}
 
 
 };
 };