@babylonjs/viewer
Version:
The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.
70 lines (67 loc) • 3.75 kB
JavaScript
import { y as Logger } from './index-MZPybX0H.esm.js';
const RegisteredTextureLoaders = new Map();
/**
* Registers a texture loader.
* If a loader for the extension exists in the registry, it will be replaced.
* @param extension The name of the loader extension.
* @param loaderFactory The factory function that creates the loader extension.
*/
// eslint-disable-next-line @typescript-eslint/naming-convention
function registerTextureLoader(extension, loaderFactory) {
if (unregisterTextureLoader(extension)) {
Logger.Warn(`Extension with the name '${extension}' already exists`);
}
RegisteredTextureLoaders.set(extension, loaderFactory);
}
/**
* Unregisters a texture loader.
* @param extension The name of the loader extension.
* @returns A boolean indicating whether the extension has been unregistered
*/
// eslint-disable-next-line @typescript-eslint/naming-convention
function unregisterTextureLoader(extension) {
return RegisteredTextureLoaders.delete(extension);
}
/**
* Function used to get the correct texture loader for a specific extension.
* @param extension defines the file extension of the file being loaded
* @param mimeType defines the optional mime type of the file being loaded
* @returns the IInternalTextureLoader or null if it wasn't found
*/
function _GetCompatibleTextureLoader(extension, mimeType) {
if (mimeType === "image/ktx" || mimeType === "image/ktx2") {
extension = ".ktx";
}
if (!RegisteredTextureLoaders.has(extension)) {
if (extension.endsWith(".ies")) {
registerTextureLoader(".ies", async () => await import('./iesTextureLoader-Bl-92D48.esm.js').then((module) => new module._IESTextureLoader()));
}
if (extension.endsWith(".dds")) {
registerTextureLoader(".dds", async () => await import('./ddsTextureLoader-B0PNjb9x.esm.js').then((module) => new module._DDSTextureLoader()));
}
if (extension.endsWith(".basis")) {
registerTextureLoader(".basis", async () => await import('./basisTextureLoader-CWzZEDEr.esm.js').then((module) => new module._BasisTextureLoader()));
}
if (extension.endsWith(".env")) {
registerTextureLoader(".env", async () => await import('./envTextureLoader-DP2RdHAG.esm.js').then((module) => new module._ENVTextureLoader()));
}
if (extension.endsWith(".hdr")) {
registerTextureLoader(".hdr", async () => await import('./hdrTextureLoader-BCQFYvFI.esm.js').then((module) => new module._HDRTextureLoader()));
}
// The ".ktx2" file extension is still up for debate: https://github.com/KhronosGroup/KTX-Specification/issues/18
if (extension.endsWith(".ktx") || extension.endsWith(".ktx2")) {
registerTextureLoader(".ktx", async () => await import('./ktxTextureLoader-DJQFkkaK.esm.js').then((module) => new module._KTXTextureLoader()));
registerTextureLoader(".ktx2", async () => await import('./ktxTextureLoader-DJQFkkaK.esm.js').then((module) => new module._KTXTextureLoader()));
}
if (extension.endsWith(".tga")) {
registerTextureLoader(".tga", async () => await import('./tgaTextureLoader-YYjIUunv.esm.js').then((module) => new module._TGATextureLoader()));
}
if (extension.endsWith(".exr")) {
registerTextureLoader(".exr", async () => await import('./exrTextureLoader-DrwzDOR5.esm.js').then((module) => new module._ExrTextureLoader()));
}
}
const registered = RegisteredTextureLoaders.get(extension);
return registered ? Promise.resolve(registered(mimeType)) : null;
}
export { _GetCompatibleTextureLoader as _ };
//# sourceMappingURL=textureLoaderManager-l5zAgBPe.esm.js.map