|
@@ -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 ] ];
|
|
|
|
|
|
}
|
|
|
|