{"version":3,"file":"gpuUploadCubeTextureResource.mjs","sources":["../../../../../../src/rendering/renderers/gpu/texture/uploaders/gpuUploadCubeTextureResource.ts"],"sourcesContent":["import type { CubeTextureSource } from '../../../shared/texture/sources/CubeTextureSource';\nimport type { GPU } from '../../GpuDeviceSystem';\nimport type { GpuTextureUploader } from './GpuTextureUploader';\n\nconst FACE_ORDER: (keyof CubeTextureSource['faces'])[] = ['right', 'left', 'top', 'bottom', 'front', 'back'];\n\n/**\n * Creates a cube uploader that delegates to the given uploader registry.\n * @param uploaders - Uploader registry keyed by `uploadMethodId` (must include `image`).\n * @internal\n */\nexport function createGpuUploadCubeTextureResource(\n    uploaders: Record<string, GpuTextureUploader> & { image: GpuTextureUploader }\n): GpuTextureUploader<CubeTextureSource>\n{\n    return {\n        type: 'cube',\n        upload(source: CubeTextureSource, gpuTexture: GPUTexture, gpu: GPU)\n        {\n            const faces = source.faces;\n\n            for (let i = 0; i < FACE_ORDER.length; i++)\n            {\n                const key = FACE_ORDER[i];\n                const face = faces[key];\n\n                const uploader = uploaders[face.uploadMethodId] || uploaders.image;\n\n                uploader.upload(face as any, gpuTexture, gpu, i);\n            }\n        }\n    };\n}\n\n"],"names":[],"mappings":";AAIA,MAAM,aAAmD,CAAC,OAAA,EAAS,QAAQ,KAAA,EAAO,QAAA,EAAU,SAAS,MAAM,CAAA;AAOpG,SAAS,mCACZ,SAAA,EAEJ;AACI,EAAA,OAAO;AAAA,IACH,IAAA,EAAM,MAAA;AAAA,IACN,MAAA,CAAO,MAAA,EAA2B,UAAA,EAAwB,GAAA,EAC1D;AACI,MAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AAErB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EACvC;AACI,QAAA,MAAM,GAAA,GAAM,WAAW,CAAC,CAAA;AACxB,QAAA,MAAM,IAAA,GAAO,MAAM,GAAG,CAAA;AAEtB,QAAA,MAAM,QAAA,GAAW,SAAA,CAAU,IAAA,CAAK,cAAc,KAAK,SAAA,CAAU,KAAA;AAE7D,QAAA,QAAA,CAAS,MAAA,CAAO,IAAA,EAAa,UAAA,EAAY,GAAA,EAAK,CAAC,CAAA;AAAA,MACnD;AAAA,IACJ;AAAA,GACJ;AACJ;;;;"}