Browse Source

Merge pull request #14955 from looeee/fbxloader_setResourcePath

FBXLoader: added setResourcePath()
Mr.doob 6 years ago
parent
commit
1e9e2b00e3
1 changed files with 23 additions and 6 deletions
  1. 23 6
      examples/js/loaders/FBXLoader.js

+ 23 - 6
examples/js/loaders/FBXLoader.js

@@ -41,16 +41,16 @@ THREE.FBXLoader = ( function () {
 
 
 			var self = this;
 			var self = this;
 
 
-			var resourceDirectory = THREE.LoaderUtils.extractUrlBase( url );
+			var path = ( self.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : self.path;
 
 
 			var loader = new THREE.FileLoader( this.manager );
 			var loader = new THREE.FileLoader( this.manager );
 			loader.setResponseType( 'arraybuffer' );
 			loader.setResponseType( 'arraybuffer' );
+
 			loader.load( url, function ( buffer ) {
 			loader.load( url, function ( buffer ) {
 
 
 				try {
 				try {
 
 
-					var scene = self.parse( buffer, resourceDirectory );
-					onLoad( scene );
+					onLoad( self.parse( buffer, path ) );
 
 
 				} catch ( error ) {
 				} catch ( error ) {
 
 
@@ -68,6 +68,20 @@ THREE.FBXLoader = ( function () {
 
 
 		},
 		},
 
 
+		setPath: function ( value ) {
+
+			this.path = value;
+			return this;
+
+		},
+
+		setResourcePath: function ( value ) {
+
+			this.resourcePath = value;
+			return this;
+
+		},
+
 		setCrossOrigin: function ( value ) {
 		setCrossOrigin: function ( value ) {
 
 
 			this.crossOrigin = value;
 			this.crossOrigin = value;
@@ -75,7 +89,7 @@ THREE.FBXLoader = ( function () {
 
 
 		},
 		},
 
 
-		parse: function ( FBXBuffer, resourceDirectory ) {
+		parse: function ( FBXBuffer, path ) {
 
 
 			if ( isFbxFormatBinary( FBXBuffer ) ) {
 			if ( isFbxFormatBinary( FBXBuffer ) ) {
 
 
@@ -103,7 +117,7 @@ THREE.FBXLoader = ( function () {
 
 
 			// console.log( fbxTree );
 			// console.log( fbxTree );
 
 
-			var textureLoader = new THREE.TextureLoader( this.manager ).setPath( resourceDirectory ).setCrossOrigin( this.crossOrigin );
+			var textureLoader = new THREE.TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );
 
 
 			return new FBXTreeParser( textureLoader ).parse( fbxTree );
 			return new FBXTreeParser( textureLoader ).parse( fbxTree );
 
 
@@ -282,7 +296,10 @@ THREE.FBXLoader = ( function () {
 
 
 						if ( THREE.Loader.Handlers.get( '.tga' ) === null ) {
 						if ( THREE.Loader.Handlers.get( '.tga' ) === null ) {
 
 
-							THREE.Loader.Handlers.add( /\.tga$/i, new THREE.TGALoader() );
+							var tgaLoader = new THREE.TGALoader();
+							tgaLoader.setPath( this.textureLoader.path );
+
+							THREE.Loader.Handlers.add( /\.tga$/i, tgaLoader );
 
 
 						}
 						}