|
@@ -82,7 +82,21 @@ export class TilesRenderer extends TilesRendererBase {
|
|
|
this.onLoadModel = null;
|
|
|
this.onDisposeModel = null;
|
|
|
|
|
|
- this.manager = new LoadingManager();
|
|
|
+ const manager = new LoadingManager();
|
|
|
+ manager.setURLModifier( url => {
|
|
|
+
|
|
|
+ if ( this.preprocessURL ) {
|
|
|
+
|
|
|
+ return this.preprocessURL( url );
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ return url;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } );
|
|
|
+ this.manager = manager;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -495,6 +509,12 @@ export class TilesRenderer extends TilesRendererBase {
|
|
|
tile._loadIndex = tile._loadIndex || 0;
|
|
|
tile._loadIndex ++;
|
|
|
|
|
|
+ const uri = tile.content.uri;
|
|
|
+ const uriSplits = uri.split( /[\\\/]/g );
|
|
|
+ uriSplits.pop();
|
|
|
+ const workingPath = uriSplits.join( '/' );
|
|
|
+ const fetchOptions = this.fetchOptions;
|
|
|
+
|
|
|
const manager = this.manager;
|
|
|
const loadIndex = tile._loadIndex;
|
|
|
let promise = null;
|
|
@@ -511,18 +531,32 @@ export class TilesRenderer extends TilesRendererBase {
|
|
|
promise = Promise.resolve( new PNTSLoader( manager ).parse( buffer ).scene );
|
|
|
break;
|
|
|
|
|
|
- case 'i3dm':
|
|
|
- promise = new I3DMLoader( manager )
|
|
|
+ case 'i3dm': {
|
|
|
+
|
|
|
+ const loader = new I3DMLoader( manager );
|
|
|
+ loader.workingPath = workingPath;
|
|
|
+ loader.fetchOptions = fetchOptions;
|
|
|
+ promise = loader
|
|
|
.parse( buffer )
|
|
|
.then( res => res.scene );
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
- case 'cmpt':
|
|
|
- promise = new CMPTLoader( manager )
|
|
|
+ }
|
|
|
+
|
|
|
+ case 'cmpt': {
|
|
|
+
|
|
|
+ const loader = new CMPTLoader( manager );
|
|
|
+ loader.workingPath = workingPath;
|
|
|
+ loader.fetchOptions = fetchOptions;
|
|
|
+ promise = loader
|
|
|
.parse( buffer )
|
|
|
.then( res => res.scene );
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
+ }
|
|
|
+
|
|
|
default:
|
|
|
console.warn( `TilesRenderer: Content type "${ extension }" not supported.` );
|
|
|
promise = Promise.resolve( null );
|