Browse Source

ObjectLoader: Code clean up.

Mr.doob 10 năm trước cách đây
mục cha
commit
933be4a2ec
1 tập tin đã thay đổi với 40 bổ sung34 xóa
  1. 40 34
      src/loaders/ObjectLoader.js

+ 40 - 34
src/loaders/ObjectLoader.js

@@ -6,8 +6,6 @@ THREE.ObjectLoader = function ( manager ) {
 
 	this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
 
-	this.texturePath = '';
-
 };
 
 THREE.ObjectLoader.prototype = {
@@ -16,6 +14,12 @@ THREE.ObjectLoader.prototype = {
 
 	load: function ( url, onLoad, onProgress, onError ) {
 
+		if ( this.texturePath === undefined ) {
+
+			this.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );
+
+		}
+
 		var scope = this;
 
 		var loader = new THREE.XHRLoader( scope.manager );
@@ -28,14 +32,9 @@ THREE.ObjectLoader.prototype = {
 
 	},
 
-	setTexturePath: function ( texturePath ) {
+	setTexturePath: function ( value ) {
 
-		if ( typeof texturePath === 'string' ) {
-			this.texturePath = texturePath;
-		}
-		else {
-			console.warn( 'THREE.ObjectLoader: texturePath should be a string', texturePath );
-		}
+		this.texturePath = value;
 
 	},
 
@@ -47,22 +46,24 @@ THREE.ObjectLoader.prototype = {
 
 	parse: function ( json, onLoad ) {
 
+		var scope = this;
 		var geometries, materials, images, textures;
-		var self = this;
 
-		self.manager.itemStart(json.object.uuid);
-		var manager = new THREE.LoadingManager( function() {
+		this.manager.itemStart( json.object.uuid );
+
+		var manager = new THREE.LoadingManager( function () {
+
+			textures  = scope.parseTextures( json.textures, images );
+
+			materials = scope.parseMaterials( json.materials, textures );
 
-			textures  = self.parseTextures( json.textures, images );
-			materials = self.parseMaterials( json.materials, textures );
+			onLoad( scope.parseObject( json.object, geometries, materials ) );
 
-			onLoad( self.parseObject( json.object, geometries, materials ) );
 			// report back to parent manager
-			self.manager.itemEnd(json.object.uuid);
+			scope.manager.itemEnd( json.object.uuid );
 
 		} );
 
-		geometries = this.parseGeometries( json.geometries );
 		images = this.parseImages( json.images, manager );
 
 	},
@@ -226,11 +227,13 @@ THREE.ObjectLoader.prototype = {
 
 				if ( data.map ) {
 
-					if ( !textures[data.map] ) {
+					if ( textures[ data.map ] === undefined ) {
+
 						console.warn( 'THREE.ObjectLoader: Undefined texture', data.map );
-					}
 
-					material.map = textures[data.map];
+				}
+
+					material.map = textures[ data.map ];
 
 				}
 
@@ -246,8 +249,8 @@ THREE.ObjectLoader.prototype = {
 
 	parseImages: function ( json, manager ) {
 
+		var scope = this;
 		var images = {};
-		var self   = this;
 
 		if ( json !== undefined ) {
 
@@ -263,12 +266,12 @@ THREE.ObjectLoader.prototype = {
 			for ( var i = 0, l = json.length; i < l; i ++ ) {
 
 				var data = json[ i ];
-				var url  = self.texturePath + data.url;
+				var url  = scope.texturePath + data.url;
 
-				self.manager.itemStart( url );
+				scope.manager.itemStart( url );
 				loader.load( url, function ( uuid, url, image ) {
 
-					self.manager.itemEnd( url );
+					scope.manager.itemEnd( url );
 
 					images[ uuid ] = image;
 
@@ -276,8 +279,7 @@ THREE.ObjectLoader.prototype = {
 
 			}
 
-		}
-		else {
+		} else {
 
 			manager.onLoad();
 
@@ -297,28 +299,32 @@ THREE.ObjectLoader.prototype = {
 
 				var data = json[ i ];
 
-				if ( !data.image ) {
+				if ( data.image === undefined ) {
+
 					console.warn( 'THREE.ObjectLoader: No "image" speficied for', data.uuid );
+
 				}
 
-				if ( !images[data.image] ) {
+				if ( images[ data.image ] === undefined ) {
+
 					console.warn( 'THREE.ObjectLoader: Undefined image', data.image );
+
 				}
 
-				var texture = new THREE.Texture( images[data.image] );
+				var texture = new THREE.Texture( images[ data.image ] );
 				texture.needsUpdate = true;
 
 				texture.uuid = data.uuid;
 
 				if ( data.name !== undefined ) texture.name = data.name;
-				if ( data.repeat !== undefined ) texture.repeat = new THREE.Vector2(data.repeat[0], data.repeat[1]);
-				if ( data.minFilter !== undefined ) texture.minFilter = THREE[data.minFilter];
-				if ( data.magFilter !== undefined ) texture.magFilter = THREE[data.magFilter];
+				if ( data.repeat !== undefined ) texture.repeat = new THREE.Vector2( data.repeat[ 0 ], data.repeat[ 1 ] );
+				if ( data.minFilter !== undefined ) texture.minFilter = THREE[ data.minFilter ];
+				if ( data.magFilter !== undefined ) texture.magFilter = THREE[ data.magFilter ];
 				if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;
 				if ( data.wrap instanceof Array ) {
 
-					texture.wrapS = THREE[data.wrap[0]];
-					texture.wrapT = THREE[data.wrap[1]];
+					texture.wrapS = THREE[ data.wrap[ 0 ] ];
+					texture.wrapT = THREE[ data.wrap[ 1 ] ];
 
 				}