Browse Source

Simplified ObjectLoader.

Mr.doob 10 years ago
parent
commit
57dbbab577
1 changed files with 73 additions and 132 deletions
  1. 73 132
      src/loaders/ObjectLoader.js

+ 73 - 132
src/loaders/ObjectLoader.js

@@ -202,6 +202,18 @@ THREE.ObjectLoader.prototype = {
 
 
 		if ( json !== undefined ) {
 		if ( json !== undefined ) {
 
 
+			var getTexture = function ( name ) {
+
+				if ( textures[ name ] === undefined ) {
+
+					THREE.warn( 'THREE.ObjectLoader: Undefined texture', name );
+
+				}
+
+				return textures[ name ];
+
+			};
+
 			var loader = new THREE.MaterialLoader();
 			var loader = new THREE.MaterialLoader();
 
 
 			for ( var i = 0, l = json.length; i < l; i ++ ) {
 			for ( var i = 0, l = json.length; i < l; i ++ ) {
@@ -213,88 +225,46 @@ THREE.ObjectLoader.prototype = {
 
 
 				if ( data.name !== undefined ) material.name = data.name;
 				if ( data.name !== undefined ) material.name = data.name;
 
 
-				if ( data.map ) {
+				if ( data.map !== undefined ) {
 
 
-					if ( textures[ data.map ] === undefined ) {
+					material.map = getTexture( data.map );
 
 
-						console.warn( 'THREE.ObjectLoader: Undefined texture', data.map );
+				}
 
 
-					}
+				if ( data.bumpMap !== undefined ) {
 
 
-					material.map = textures[ data.map ];
+					material.bumpMap = getTexture( data.bumpMap );
 
 
 				}
 				}
-				
-				if ( data.bumpMap ) {	
-			
-					if ( !textures[data.bumpMap] ) {
-						
-						console.warn( 'THREE.ObjectLoader: Undefined texture', data.bumpMap );
-					
-					}
-					
-					material.bumpMap = textures[data.bumpMap];
-					
-				}
-				
-				if ( data.alphaMap ) {
-					
-					if ( !textures[data.alphaMap] ) {
-						
-						console.warn( 'THREE.ObjectLoader: Undefined texture', data.alphaMap );
-						
-					}
-					
-					material.alphaMap = textures[data.alphaMap];
-					
+
+				if ( data.alphaMap !== undefined ) {
+
+					material.alphaMap = getTexture( data.alphaMap );
+
 				}
 				}
-				
-				if ( data.envMap ) {
-				
-					if ( !textures[data.envMap] ) {
-						
-						console.warn( 'THREE.ObjectLoader: Undefined texture', data.envMap );
-						
-					}
-					
-					material.envMap = textures[data.envMap];
-					
+
+				if ( data.envMap !== undefined ) {
+
+					material.envMap = getTexture( data.envMap );
+
 				}
 				}
-				
-				if ( data.normalMap ) {
-				
-					if ( !textures[data.normalMap] ) {
-						
-						console.warn( 'THREE.ObjectLoader: Undefined texture', data.normalMap );
-						
-					}
-					
-					material.normalMap = textures[data.normalMap];
-					
+
+				if ( data.normalMap !== undefined ) {
+
+					material.normalMap = getTexture( data.normalMap );
+
 				}
 				}
-				
-				if ( data.lightMap ) {
-				
-					if ( !textures[data.lightMap] ) {
-						
-						console.warn( 'THREE.ObjectLoader: Undefined texture', data.lightMap );
-						
-					}
-					
-					material.lightMap = textures[data.lightMap];
-					
+
+				if ( data.lightMap !== undefined ) {
+
+					material.lightMap = getTexture( data.lightMap );
+
 				}
 				}
-				
-				if ( data.specularMap ) {
-				
-					if ( !textures[data.specularMap] ) {
-						
-						console.warn( 'THREE.ObjectLoader: Undefined texture', data.specularMap );
-						
-					}
-					
-					material.specularMap = textures[data.specularMap];
-					
+
+				if ( data.specularMap !== undefined ) {
+
+					material.specularMap = getTexture( data.specularMap );
+
 				}
 				}
 
 
 				materials[ data.uuid ] = material;
 				materials[ data.uuid ] = material;
@@ -363,13 +333,13 @@ THREE.ObjectLoader.prototype = {
 
 
 				if ( data.image === undefined ) {
 				if ( data.image === undefined ) {
 
 
-					console.warn( 'THREE.ObjectLoader: No "image" speficied for', data.uuid );
+					THREE.warn( 'THREE.ObjectLoader: No "image" speficied for', data.uuid );
 
 
 				}
 				}
 
 
 				if ( images[ data.image ] === undefined ) {
 				if ( images[ data.image ] === undefined ) {
 
 
-					console.warn( 'THREE.ObjectLoader: Undefined image', data.image );
+					THREE.warn( 'THREE.ObjectLoader: Undefined image', data.image );
 
 
 				}
 				}
 
 
@@ -408,6 +378,30 @@ THREE.ObjectLoader.prototype = {
 
 
 			var object;
 			var object;
 
 
+			var getGeometry = function ( name ) {
+
+				if ( geometries[ name ] === undefined ) {
+
+					THREE.warn( 'THREE.ObjectLoader: Undefined geometry', name );
+
+				}
+
+				return geometries[ name ];
+
+			};
+
+			var getMaterial = function ( name ) {
+
+				if ( materials[ name ] === undefined ) {
+
+					THREE.warn( 'THREE.ObjectLoader: Undefined material', name );
+
+				}
+
+				return materials[ name ];
+
+			};
+
 			switch ( data.type ) {
 			switch ( data.type ) {
 
 
 				case 'Scene':
 				case 'Scene':
@@ -460,78 +454,25 @@ THREE.ObjectLoader.prototype = {
 
 
 				case 'Mesh':
 				case 'Mesh':
 
 
-					var geometry = geometries[ data.geometry ];
-					var material = materials[ data.material ];
-
-					if ( geometry === undefined ) {
-
-						THREE.warn( 'THREE.ObjectLoader: Undefined geometry', data.geometry );
-
-					}
-
-					if ( material === undefined ) {
-
-						THREE.warn( 'THREE.ObjectLoader: Undefined material', data.material );
-
-					}
-
-					object = new THREE.Mesh( geometry, material );
+					object = new THREE.Mesh( getGeometry( data.geometry ), getMaterial( data.material ) );
 
 
 					break;
 					break;
 
 
 				case 'Line':
 				case 'Line':
 
 
-					var geometry = geometries[ data.geometry ];
-					var material = materials[ data.material ];
-
-					if ( geometry === undefined ) {
-
-						THREE.warn( 'THREE.ObjectLoader: Undefined geometry', data.geometry );
-
-					}
-
-					if ( material === undefined ) {
-
-						THREE.warn( 'THREE.ObjectLoader: Undefined material', data.material );
-
-					}
-
-					object = new THREE.Line( geometry, material );
+					object = new THREE.Line( getGeometry( data.geometry ), getMaterial( data.material ) );
 
 
 					break;
 					break;
-					
-				case 'PointCloud':
-
-					var geometry = geometries[ data.geometry ];
-					var material = materials[ data.material ];
-
-					if ( geometry === undefined ) {
-
-						console.warn( 'THREE.ObjectLoader: Undefined geometry', data.geometry );
 
 
-					}
-
-					if ( material === undefined ) {
-
-						console.warn( 'THREE.ObjectLoader: Undefined material', data.material );
-
-					}
+				case 'PointCloud':
 
 
-					object = new THREE.PointCloud( geometry, material );
+					object = new THREE.PointCloud( getGeometry( data.geometry ), getMaterial( data.material ) );
 
 
 					break;
 					break;
 
 
 				case 'Sprite':
 				case 'Sprite':
 
 
-					var material = materials[ data.material ];
-
-					if ( material === undefined ) {
-
-						THREE.warn( 'THREE.ObjectLoader: Undefined material', data.material );
-
-					}
-
-					object = new THREE.Sprite( material );
+					object = new THREE.Sprite( getMaterial( data.material ) );
 
 
 					break;
 					break;