From 65bda50eac61694bb4e8354ee2f1744c876bd7ba Mon Sep 17 00:00:00 2001 From: ShuangLiu Date: Wed, 13 Mar 2024 03:59:02 +0800 Subject: [PATCH] fix(loaderFunctions): onUrl on loadGltf --- src/assets/Res.ts | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/assets/Res.ts b/src/assets/Res.ts index 8e2b768c..3ef00b0b 100644 --- a/src/assets/Res.ts +++ b/src/assets/Res.ts @@ -179,13 +179,15 @@ export class Res { if (this._prefabPool.has(url)) { return this._prefabPool.get(url) as Object3D; } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let parser; let ext = url.substring(url.lastIndexOf('.')).toLowerCase(); let loader = new FileLoader(); if (ext == '.gltf') { parser = await loader.load(url, GLTFParser, loaderFunctions); - } else { parser = await loader.load(url, GLBParser, loaderFunctions); } @@ -206,6 +208,9 @@ export class Res { if (this._prefabPool.has(url)) { return this._prefabPool.get(url) as Object3D; } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let parser; let ext = url.substring(url.lastIndexOf('.')).toLowerCase(); @@ -229,6 +234,9 @@ export class Res { if (this._prefabPool.has(url)) { return this._prefabPool.get(url) as Object3D; } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let loader = new FileLoader(); let parser = await loader.load(url, B3DMParser, loaderFunctions, userData); let obj = parser.data; @@ -246,6 +254,9 @@ export class Res { if (this._prefabPool.has(url)) { return this._prefabPool.get(url) as Object3D; } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let loader = new FileLoader(); let parser = await loader.load(url, I3DMParser, loaderFunctions, userData); let obj = parser.data; @@ -264,6 +275,9 @@ export class Res { if (this._texturePool.has(url)) { return this._texturePool.get(url); } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let texture = new BitmapTexture2D(); texture.flipY = flipY; await texture.load(url, loaderFunctions); @@ -314,7 +328,9 @@ export class Res { if (this._texturePool.has(url)) { return this._texturePool.get(url); } - + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let hdrTexture = new HDRTexture(); hdrTexture = await hdrTexture.load(url, loaderFunctions); this._texturePool.set(url, hdrTexture); @@ -332,6 +348,9 @@ export class Res { if (this._texturePool.has(url)) { return this._texturePool.get(url); } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let hdrTexture = new HDRTextureCube(); hdrTexture = await hdrTexture.load(url, loaderFunctions); this._texturePool.set(url, hdrTexture); @@ -348,6 +367,9 @@ export class Res { if (this._texturePool.has(url)) { return this._texturePool.get(url); } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let ldrTextureCube = new LDRTextureCube(); ldrTextureCube = await ldrTextureCube.load(url, loaderFunctions); this._texturePool.set(url, ldrTextureCube); @@ -381,6 +403,9 @@ export class Res { if (this._texturePool.has(url)) { return this._texturePool.get(url); } + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } let cubeMap = new BitmapTextureCube(); await cubeMap.loadStd(url); @@ -392,6 +417,9 @@ export class Res { * @param url the path of image */ public async loadJSON(url: string, loaderFunctions?: LoaderFunctions) { + if (loaderFunctions?.onUrl) { + url = await loaderFunctions.onUrl(url); + } return await new FileLoader() .loadJson(url, loaderFunctions) .then(async (ret) => {