From e15d53a7c43879ccf801eb1582499abdf80fb0a4 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Mon, 15 Aug 2022 08:56:44 +0300 Subject: [PATCH] hack(viewer): allow for loading assets load with data urls (`data:img/png...`) --- packages/viewer/src/modules/Assets.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/viewer/src/modules/Assets.ts b/packages/viewer/src/modules/Assets.ts index e16535494..c431e6142 100644 --- a/packages/viewer/src/modules/Assets.ts +++ b/packages/viewer/src/modules/Assets.ts @@ -80,10 +80,20 @@ export class Assets { } else { srcUrl = asset as string } + if (this._cache[srcUrl]) { return Promise.resolve(this._cache[srcUrl]) } + // Hack to load 'data:image's - for some reason, the frontend receives the default + // gradient map as a data image url, rather than a file (?). + if (srcUrl.includes('data:image')) { + const texture = new Texture(srcUrl as unknown as HTMLImageElement) + texture.needsUpdate = true + this._cache[srcUrl] = texture + return Promise.resolve(texture) + } + return new Promise((resolve, reject) => { const loader = Assets.getLoader(srcUrl, assetType) if (loader) {