82 lines
1.3 KiB
JavaScript
82 lines
1.3 KiB
JavaScript
/**
|
|
* @author mrdoob / http://mrdoob.com/
|
|
*/
|
|
|
|
THREE.XHRLoader = function ( manager ) {
|
|
|
|
this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
|
|
|
|
};
|
|
|
|
THREE.XHRLoader.prototype = {
|
|
|
|
constructor: THREE.XHRLoader,
|
|
|
|
load: function ( url, onLoad, onProgress, onError ) {
|
|
|
|
var scope = this;
|
|
|
|
var cached = THREE.Cache.get( url );
|
|
|
|
if ( cached !== undefined ) {
|
|
|
|
if ( onLoad ) onLoad( cached );
|
|
return;
|
|
|
|
}
|
|
|
|
var request = new XMLHttpRequest();
|
|
request.open( 'GET', url, true );
|
|
|
|
request.addEventListener( 'load', function ( event ) {
|
|
|
|
THREE.Cache.add( url, this.response );
|
|
|
|
if ( onLoad ) onLoad( this.response );
|
|
|
|
scope.manager.itemEnd( url );
|
|
|
|
}, false );
|
|
|
|
if ( onProgress !== undefined ) {
|
|
|
|
request.addEventListener( 'progress', function ( event ) {
|
|
|
|
onProgress( event );
|
|
|
|
}, false );
|
|
|
|
}
|
|
|
|
if ( onError !== undefined ) {
|
|
|
|
request.addEventListener( 'error', function ( event ) {
|
|
|
|
onError( event );
|
|
|
|
}, false );
|
|
|
|
}
|
|
|
|
if ( this.crossOrigin !== undefined ) request.crossOrigin = this.crossOrigin;
|
|
if ( this.responseType !== undefined ) request.responseType = this.responseType;
|
|
|
|
request.send( null );
|
|
|
|
scope.manager.itemStart( url );
|
|
|
|
},
|
|
|
|
setResponseType: function ( value ) {
|
|
|
|
this.responseType = value;
|
|
|
|
},
|
|
|
|
setCrossOrigin: function ( value ) {
|
|
|
|
this.crossOrigin = value;
|
|
|
|
}
|
|
|
|
};
|