@babylonjs/core
Version:
Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.
64 lines • 3.35 kB
JavaScript
import { Logger } from "../../../Misc/logger.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.
*/
export function registerTextureLoader(extension, loaderFactory) {
if (unregisterTextureLoader(extension)) {
Logger.Warn(`Extension with the name '${name}' 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
*/
export 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
*/
export function _GetCompatibleTextureLoader(extension, mimeType) {
if (mimeType === "image/ktx" || mimeType === "image/ktx2") {
extension = ".ktx";
}
if (!_registeredTextureLoaders.has(extension)) {
if (extension.endsWith(".ies")) {
registerTextureLoader(".ies", () => import("./iesTextureLoader.js").then((module) => new module._IESTextureLoader()));
}
if (extension.endsWith(".dds")) {
registerTextureLoader(".dds", () => import("./ddsTextureLoader.js").then((module) => new module._DDSTextureLoader()));
}
if (extension.endsWith(".basis")) {
registerTextureLoader(".basis", () => import("./basisTextureLoader.js").then((module) => new module._BasisTextureLoader()));
}
if (extension.endsWith(".env")) {
registerTextureLoader(".env", () => import("./envTextureLoader.js").then((module) => new module._ENVTextureLoader()));
}
if (extension.endsWith(".hdr")) {
registerTextureLoader(".hdr", () => import("./hdrTextureLoader.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", () => import("./ktxTextureLoader.js").then((module) => new module._KTXTextureLoader()));
registerTextureLoader(".ktx2", () => import("./ktxTextureLoader.js").then((module) => new module._KTXTextureLoader()));
}
if (extension.endsWith(".tga")) {
registerTextureLoader(".tga", () => import("./tgaTextureLoader.js").then((module) => new module._TGATextureLoader()));
}
if (extension.endsWith(".exr")) {
registerTextureLoader(".exr", () => import("./exrTextureLoader.js").then((module) => new module._ExrTextureLoader()));
}
}
const registered = _registeredTextureLoaders.get(extension);
return registered ? Promise.resolve(registered(mimeType)) : null;
}
//# sourceMappingURL=textureLoaderManager.js.map