Browse Source

SceneLoader2: Added more object types.

Mr.doob 12 years ago
parent
commit
165aa2572e
2 changed files with 65 additions and 3 deletions
  1. 0 1
      examples/js/exporters/SceneExporter2.js
  2. 65 2
      examples/js/loaders/SceneLoader2.js

+ 0 - 1
examples/js/exporters/SceneExporter2.js

@@ -86,7 +86,6 @@ THREE.SceneExporter2.prototype = {
 
 				data.type = 'AmbientLight';
 				data.color = object.color.getHex();
-				data.intensity = object.intensity;
 
 			} else if ( object instanceof THREE.DirectionalLight ) {
 

+ 65 - 2
examples/js/loaders/SceneLoader2.js

@@ -48,6 +48,8 @@ THREE.SceneLoader2.prototype = {
 
 		var scene = new THREE.Scene();
 
+		// geometries
+
 		var geometries = [];
 		var loader = new THREE.JSONLoader();
 
@@ -57,6 +59,10 @@ THREE.SceneLoader2.prototype = {
 
 		}
 
+		// materials
+
+		// objects
+
 		var parseObject = function ( array, parent ) {
 
 			for ( var i = 0, l = array.length; i < l; i ++ ) {
@@ -66,7 +72,7 @@ THREE.SceneLoader2.prototype = {
 
 				switch ( data.type ) {
 
-					case "PerspectiveCamera":
+					case 'PerspectiveCamera':
 
 						object = new THREE.PerspectiveCamera( data.fov, data.aspect, data.near, data.far );
 						object.name = data.name;
@@ -77,7 +83,61 @@ THREE.SceneLoader2.prototype = {
 
 						break;
 
-					case "Mesh":
+					case 'OrthographicCamera':
+
+						object = new THREE.OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );
+						object.name = data.name;
+						object.position.fromArray( data.position );
+						object.rotation.fromArray( data.rotation );
+						object.userData = data.userData;
+						parent.add( object );
+
+						break;
+
+					case 'AmbientLight':
+
+						object = new THREE.AmbientLight( data.color );
+						object.name = data.name;
+						parent.add( object );
+
+						break;
+
+					case 'DirectionalLight':
+
+						object = new THREE.DirectionalLight( data.color, data.intensity );
+						object.name = data.name;
+						object.position.fromArray( data.position );
+						parent.add( object );
+
+						break;
+
+					case 'PointLight':
+
+						object = new THREE.PointLight( data.color, data.intensity );
+						object.name = data.name;
+						object.position.fromArray( data.position );
+						parent.add( object );
+
+						break;
+
+					case 'SpotLight':
+
+						object = new THREE.SpotLight( data.color, data.intensity );
+						object.name = data.name;
+						object.position.fromArray( data.position );
+						parent.add( object );
+
+						break;
+
+					case 'HemisphereLight':
+
+						object = new THREE.HemisphereLight( data.color );
+						object.name = data.name;
+						parent.add( object );
+
+						break;
+
+					case 'Mesh':
 
 						object = new THREE.Mesh( geometries[ data.geometry ].geometry ); // TODO: Material
 						object.name = data.name;
@@ -93,6 +153,9 @@ THREE.SceneLoader2.prototype = {
 
 						object = new THREE.Object3D();
 						object.name = data.name;
+						object.position.fromArray( data.position );
+						object.rotation.fromArray( data.rotation );
+						object.scale.fromArray( data.scale );
 						object.userData = data.userData;
 						parent.add( object );