Skip to content

Commit d68205c

Browse files
committed
Updated builds.
1 parent c651f13 commit d68205c

File tree

2 files changed

+582
-488
lines changed

2 files changed

+582
-488
lines changed

build/three.js

Lines changed: 124 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23876,7 +23876,7 @@
2387623876

2387723877
// build geometry
2387823878

23879-
this.setIndex( Uint16Attribute( indices, 1 ) );
23879+
this.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );
2388023880
this.addAttribute( 'position', Float32Attribute( vertices, 3 ) );
2388123881
this.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );
2388223882

@@ -28824,6 +28824,8 @@
2882428824

2882528825
load: function ( url, onLoad, onProgress, onError ) {
2882628826

28827+
if ( url === undefined ) url = '';
28828+
2882728829
if ( this.path !== undefined ) url = this.path + url;
2882828830

2882928831
var scope = this;
@@ -28846,66 +28848,156 @@
2884628848

2884728849
}
2884828850

28849-
var request = new XMLHttpRequest();
28850-
request.open( 'GET', url, true );
28851+
// Check for data: URI
28852+
var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;
28853+
var dataUriRegexResult = url.match( dataUriRegex );
2885128854

28852-
request.addEventListener( 'load', function ( event ) {
28855+
// Safari can not handle Data URIs through XMLHttpRequest so process manually
28856+
if ( dataUriRegexResult ) {
2885328857

28854-
var response = event.target.response;
28858+
var mimeType = dataUriRegexResult[1];
28859+
var isBase64 = !!dataUriRegexResult[2];
28860+
var data = dataUriRegexResult[3];
2885528861

28856-
exports.Cache.add( url, response );
28862+
data = window.decodeURIComponent(data);
2885728863

28858-
if ( this.status === 200 ) {
28864+
if( isBase64 ) {
28865+
data = window.atob(data);
28866+
}
2885928867

28860-
if ( onLoad ) onLoad( response );
28868+
try {
2886128869

28862-
scope.manager.itemEnd( url );
28870+
var response;
28871+
var responseType = ( this.responseType || '' ).toLowerCase();
2886328872

28864-
} else if ( this.status === 0 ) {
28873+
switch ( responseType ) {
2886528874

28866-
// Some browsers return HTTP Status 0 when using non-http protocol
28867-
// e.g. 'file://' or 'data://'. Handle as success.
28875+
case 'arraybuffer':
28876+
case 'blob':
2886828877

28869-
console.warn( 'THREE.XHRLoader: HTTP Status 0 received.' );
28878+
response = new ArrayBuffer( data.length );
28879+
var view = new Uint8Array( response );
28880+
for ( var i = 0; i < data.length; i ++ ) {
2887028881

28871-
if ( onLoad ) onLoad( response );
28882+
view[ i ] = data.charCodeAt( i );
2887228883

28873-
scope.manager.itemEnd( url );
28884+
}
2887428885

28875-
} else {
28886+
if ( responseType === 'blob' ) {
2887628887

28877-
if ( onError ) onError( event );
28888+
response = new Blob( [ response ], { "type" : mimeType } );
2887828889

28879-
scope.manager.itemError( url );
28890+
}
28891+
28892+
break;
28893+
28894+
case 'document':
28895+
28896+
var parser = new DOMParser();
28897+
response = parser.parseFromString( data, mimeType );
28898+
28899+
break;
28900+
28901+
case 'json':
28902+
28903+
response = JSON.parse( data );
28904+
28905+
break;
28906+
28907+
default: // 'text' or other
28908+
28909+
response = data;
28910+
28911+
break;
28912+
28913+
}
28914+
28915+
// Wait for next browser tick
28916+
window.setTimeout( function() {
28917+
28918+
if ( onLoad ) onLoad( response );
28919+
28920+
scope.manager.itemEnd( url );
28921+
28922+
}, 0);
28923+
28924+
} catch ( error ) {
28925+
28926+
// Wait for next browser tick
28927+
window.setTimeout( function() {
28928+
28929+
if ( onError ) onError( error );
28930+
28931+
scope.manager.itemError( url );
28932+
28933+
}, 0);
2888028934

2888128935
}
2888228936

28883-
}, false );
28937+
} else {
28938+
28939+
var request = new XMLHttpRequest();
28940+
request.open( 'GET', url, true );
28941+
28942+
request.addEventListener( 'load', function ( event ) {
28943+
28944+
var response = event.target.response;
2888428945

28885-
if ( onProgress !== undefined ) {
28946+
exports.Cache.add( url, response );
2888628947

28887-
request.addEventListener( 'progress', function ( event ) {
28948+
if ( this.status === 200 ) {
2888828949

28889-
onProgress( event );
28950+
if ( onLoad ) onLoad( response );
28951+
28952+
scope.manager.itemEnd( url );
28953+
28954+
} else if ( this.status === 0 ) {
28955+
28956+
// Some browsers return HTTP Status 0 when using non-http protocol
28957+
// e.g. 'file://' or 'data://'. Handle as success.
28958+
28959+
console.warn( 'THREE.XHRLoader: HTTP Status 0 received.' );
28960+
28961+
if ( onLoad ) onLoad( response );
28962+
28963+
scope.manager.itemEnd( url );
28964+
28965+
} else {
28966+
28967+
if ( onError ) onError( event );
28968+
28969+
scope.manager.itemError( url );
28970+
28971+
}
2889028972

2889128973
}, false );
2889228974

28893-
}
28975+
if ( onProgress !== undefined ) {
2889428976

28895-
request.addEventListener( 'error', function ( event ) {
28977+
request.addEventListener( 'progress', function ( event ) {
2889628978

28897-
if ( onError ) onError( event );
28979+
onProgress( event );
2889828980

28899-
scope.manager.itemError( url );
28981+
}, false );
2890028982

28901-
}, false );
28983+
}
2890228984

28903-
if ( this.responseType !== undefined ) request.responseType = this.responseType;
28904-
if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;
28985+
request.addEventListener( 'error', function ( event ) {
2890528986

28906-
if ( request.overrideMimeType ) request.overrideMimeType( 'text/plain' );
28987+
if ( onError ) onError( event );
2890728988

28908-
request.send( null );
28989+
scope.manager.itemError( url );
28990+
28991+
}, false );
28992+
28993+
if ( this.responseType !== undefined ) request.responseType = this.responseType;
28994+
if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;
28995+
28996+
if ( request.overrideMimeType ) request.overrideMimeType( 'text/plain' );
28997+
28998+
request.send( null );
28999+
29000+
}
2890929001

2891029002
scope.manager.itemStart( url );
2891129003

@@ -29187,6 +29279,7 @@
2918729279
scope.manager.itemEnd( url );
2918829280

2918929281
};
29282+
image.onerror = onError;
2919029283

2919129284
if ( url.indexOf( 'data:' ) === 0 ) {
2919229285

0 commit comments

Comments
 (0)