UNPKG

@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
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