{"version":3,"file":"GpuColorMaskSystem.mjs","sources":["../../../../src/rendering/renderers/gpu/GpuColorMaskSystem.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { System } from '../shared/system/System';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\n/**\n * The system that handles color masking for the GPU.\n * @category rendering\n * @advanced\n */\nexport class GpuColorMaskSystem implements System\n{\n    /** @ignore */\n    public static extension = {\n        type: [\n            ExtensionType.WebGPUSystem,\n        ],\n        name: 'colorMask',\n    } as const;\n\n    private readonly _renderer: WebGPURenderer;\n\n    private _colorMaskCache = 0b1111;\n\n    constructor(renderer: WebGPURenderer)\n    {\n        this._renderer = renderer;\n    }\n\n    public setMask(colorMask: number)\n    {\n        if (this._colorMaskCache === colorMask) return;\n        this._colorMaskCache = colorMask;\n\n        this._renderer.pipeline.setColorMask(colorMask);\n    }\n\n    public destroy()\n    {\n        (this._renderer as null) = null;\n        this._colorMaskCache = null;\n    }\n}\n"],"names":[],"mappings":";;;AAUO,MAAM,kBAAA,CACb;AAAA,EAaI,YAAY,QAAA,EACZ;AAHA,IAAA,IAAA,CAAQ,eAAA,GAAkB,EAAA;AAItB,IAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AAAA,EACrB;AAAA,EAEO,QAAQ,SAAA,EACf;AACI,IAAA,IAAI,IAAA,CAAK,oBAAoB,SAAA,EAAW;AACxC,IAAA,IAAA,CAAK,eAAA,GAAkB,SAAA;AAEvB,IAAA,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,YAAA,CAAa,SAAS,CAAA;AAAA,EAClD;AAAA,EAEO,OAAA,GACP;AACI,IAAC,KAAK,SAAA,GAAqB,IAAA;AAC3B,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAAA,EAC3B;AACJ;AAAA;AAhCa,kBAAA,CAGK,SAAA,GAAY;AAAA,EACtB,IAAA,EAAM;AAAA,IACF,aAAA,CAAc;AAAA,GAClB;AAAA,EACA,IAAA,EAAM;AACV,CAAA;;;;"}