浏览代码

SceneLoader2 finally starting to work.

Mr.doob 12 年之前
父节点
当前提交
0cc3b88626
共有 2 个文件被更改,包括 38 次插入12 次删除
  1. 12 8
      editor/index.html
  2. 26 4
      examples/js/loaders/SceneLoader2.js

+ 12 - 8
editor/index.html

@@ -284,21 +284,25 @@
 								if ( data.metadata.version < 4 ) {
 
 									loader = new THREE.SceneLoader();
+									loader.parse( data, function ( result ) {
 
-								} else {
+										result.scene.name = filename;
 
-									loader = new THREE.SceneLoader2();
+										signals.objectAdded.dispatch( result.scene );
+										signals.objectSelected.dispatch( result.scene );
 
-								}
+									}, '' );
 
-								loader.parse( data, function ( result ) {
+								} else {
 
-									result.scene.name = filename;
+									loader = new THREE.SceneLoader2();
+
+									var scene = loader.parse( data );
 
-									signals.objectAdded.dispatch( result.scene );
-									signals.objectSelected.dispatch( result.scene );
+									signals.objectAdded.dispatch( scene );
+									signals.objectSelected.dispatch( scene );
 
-								}, '' );
+								}
 
 							}
 

+ 26 - 4
examples/js/loaders/SceneLoader2.js

@@ -44,20 +44,42 @@ THREE.SceneLoader2.prototype = {
 
 	parse: function ( json ) {
 
-		console.log( json );
+		// console.log( json );
+
+		var scene = new THREE.Scene();
 
 		var geometries = [];
 		var loader = new THREE.JSONLoader();
 
 		for ( var i = 0, l = json.geometries.length; i < l; i ++ ) {
 
-			console.log( json.geometries[ i ] );
-
 			geometries.push( loader.parse( json.geometries[ i ] ) );
 
 		}
 
-		console.log( geometries );
+		// TODO: Implement hierarchy
+
+		for ( var i = 0, l = json.scene.length; i < l; i ++ ) {
+
+			var object = json.scene[ i ];
+
+			switch ( object.type ) {
+
+				case "Mesh":
+
+					var mesh = new THREE.Mesh( geometries[ object.geometry ].geometry ); // TODO: Material
+					mesh.position.fromArray( object.position );
+					mesh.rotation.fromArray( object.rotation );
+					mesh.scale.fromArray( object.scale );
+					scene.add( mesh );
+
+					break;
+
+			}
+
+		}
+
+		return scene;
 
 	}