@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
39 lines (38 loc) • 1.37 kB
JavaScript
;
import { ASSETS_ROOT } from "../AssetsUtils";
import { CubeTextureLoader } from "three";
import { CoreBaseLoader } from "../_Base";
import { CoreLoaderTexture } from "../Texture";
import { Poly } from "../../../engine/Poly";
export class CoreCubeTextureLoader extends CoreBaseLoader {
async loadImage(options) {
const urls = this._urlToLoad();
return new Promise(async (resolve, reject) => {
const loader = await this._getLoader(options);
urls.forEach((url) => CoreLoaderTexture.incrementInProgressLoadsCount());
await CoreLoaderTexture.waitForMaxConcurrentLoadsQueueFreed();
loader.load(
urls,
(texture) => {
urls.forEach((url, i) => {
const isLast = i == urls.length - 1;
CoreLoaderTexture.decrementInProgressLoadsCount(url, isLast ? texture : void 0);
});
resolve(texture);
},
void 0,
(error) => {
urls.forEach((url) => CoreLoaderTexture.decrementInProgressLoadsCount(url));
Poly.warn("error", error);
reject();
}
);
});
}
async _getLoader(options) {
const loader = new CubeTextureLoader(this.loadingManager);
return loader;
}
}
CoreCubeTextureLoader.PARAM_DEFAULT_PREFIX = `${ASSETS_ROOT}/textures/cube`;
CoreCubeTextureLoader.PARAM_DEFAULT_SUFFIX = `.jpg`;