{"version":3,"file":"loadDDS.mjs","sources":["../../../src/compressed-textures/dds/loadDDS.ts"],"sourcesContent":["import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';\nimport { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource';\nimport { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats';\nimport { getResolutionOfUrl } from '../../utils/network/getResolutionOfUrl';\nimport { parseDDS } from './parseDDS';\n\nimport type { Loader } from '../../assets/loader/Loader';\nimport type { LoaderParser } from '../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../assets/types';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\n\n/**\n * Loads DDS textures.\n * @category assets\n * @advanced\n */\nexport const loadDDS = {\n    extension: {\n        type: ExtensionType.LoadParser,\n        priority: LoaderParserPriority.High,\n        name: 'loadDDS',\n    },\n\n    /** used for deprecation purposes */\n    name: 'loadDDS',\n    id: 'dds',\n\n    test(url: string): boolean\n    {\n        return checkExtension(url, ['.dds']);\n    },\n\n    async load(url: string, asset: ResolvedAsset, loader: Loader): Promise<Texture | Texture[]>\n    {\n        const supportedTextures = await getSupportedTextureFormats();\n\n        const ddsResponse = await fetch(url);\n\n        const ddsArrayBuffer = await ddsResponse.arrayBuffer();\n\n        const textureOptions = parseDDS(ddsArrayBuffer, supportedTextures);\n\n        const compressedTextureSource = new CompressedSource({\n            ...textureOptions,\n            resolution: asset.data?.resolution || getResolutionOfUrl(url),\n        });\n\n        return createTexture(compressedTextureSource, loader, url);\n    },\n\n    unload(texture: Texture | Texture[]): void\n    {\n        if (Array.isArray(texture))\n        {\n            texture.forEach((t) => t.destroy(true));\n        }\n        else\n        {\n            texture.destroy(true);\n        }\n    }\n\n} satisfies LoaderParser<Texture | Texture[], TextureSourceOptions>;\n\n"],"names":[],"mappings":";;;;;;;;;;AAoBO,MAAM,OAAA,GAAU;AAAA,EACnB,SAAA,EAAW;AAAA,IACP,MAAM,aAAA,CAAc,UAAA;AAAA,IACpB,UAAU,oBAAA,CAAqB,IAAA;AAAA,IAC/B,IAAA,EAAM;AAAA,GACV;AAAA;AAAA,EAGA,IAAA,EAAM,SAAA;AAAA,EACN,EAAA,EAAI,KAAA;AAAA,EAEJ,KAAK,GAAA,EACL;AACI,IAAA,OAAO,cAAA,CAAe,GAAA,EAAK,CAAC,MAAM,CAAC,CAAA;AAAA,EACvC,CAAA;AAAA,EAEA,MAAM,IAAA,CAAK,GAAA,EAAa,KAAA,EAAsB,MAAA,EAC9C;AACI,IAAA,MAAM,iBAAA,GAAoB,MAAM,0BAAA,EAA2B;AAE3D,IAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,GAAG,CAAA;AAEnC,IAAA,MAAM,cAAA,GAAiB,MAAM,WAAA,CAAY,WAAA,EAAY;AAErD,IAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,cAAA,EAAgB,iBAAiB,CAAA;AAEjE,IAAA,MAAM,uBAAA,GAA0B,IAAI,gBAAA,CAAiB;AAAA,MACjD,GAAG,cAAA;AAAA,MACH,UAAA,EAAY,KAAA,CAAM,IAAA,EAAM,UAAA,IAAc,mBAAmB,GAAG;AAAA,KAC/D,CAAA;AAED,IAAA,OAAO,aAAA,CAAc,uBAAA,EAAyB,MAAA,EAAQ,GAAG,CAAA;AAAA,EAC7D,CAAA;AAAA,EAEA,OAAO,OAAA,EACP;AACI,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EACzB;AACI,MAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,IAC1C,CAAA,MAEA;AACI,MAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAAA,IACxB;AAAA,EACJ;AAEJ;;;;"}