{"version":3,"file":"DarkTintBatcher.mjs","sources":["../../src/darktint/DarkTintBatcher.ts"],"sourcesContent":["import {\n    Batcher,\n    Color,\n    DefaultBatchableMeshElement,\n    DefaultBatchableQuadElement,\n    extensions,\n    ExtensionType,\n    Shader\n} from 'pixi.js';\nimport { DarkTintBatchGeometry } from './DarkTintBatchGeometry';\nimport { DarkTintShader } from './DarkTintShader';\n\nlet defaultShader: Shader = null;\n\n/** The default batcher is used to batch quads and meshes. */\nexport class DarkTintBatcher extends Batcher\n{\n    /** @ignore */\n    public static extension = {\n        type: [\n            ExtensionType.Batcher,\n        ],\n        name: 'darkTint',\n    } as const;\n\n    public geometry = new DarkTintBatchGeometry();\n    public shader = defaultShader || (defaultShader = new DarkTintShader(this.maxTextures));\n    public name = DarkTintBatcher.extension.name;\n\n    /** The size of one attribute. 1 = 32 bit. x, y, u, v, color, darkColor, textureIdAndRound -> total = 7 */\n    public vertexSize = 7;\n\n    public packAttributes(\n        element: DefaultBatchableMeshElement & { darkColor: number },\n        float32View: Float32Array,\n        uint32View: Uint32Array,\n        index: number,\n        textureId: number\n    )\n    {\n        const textureIdAndRound = (textureId << 16) | (element.roundPixels & 0xFFFF);\n\n        const wt = element.transform;\n\n        const a = wt.a;\n        const b = wt.b;\n        const c = wt.c;\n        const d = wt.d;\n        const tx = wt.tx;\n        const ty = wt.ty;\n\n        const { positions, uvs } = element;\n\n        const argb = element.color;\n        const worldAlpha = ((argb >> 24) & 0xFF) / 255;\n        const darkColor = Color.shared.setValue(element.darkColor).premultiply(worldAlpha, true).toPremultiplied(1, false);\n\n        const offset = element.attributeOffset;\n        const end = offset + element.attributeSize;\n\n        for (let i = offset; i < end; i++)\n        {\n            const i2 = i * 2;\n\n            const x = positions[i2];\n            const y = positions[(i2) + 1];\n\n            float32View[index++] = (a * x) + (c * y) + tx;\n            float32View[index++] = (d * y) + (b * x) + ty;\n\n            float32View[index++] = uvs[i2];\n            float32View[index++] = uvs[(i2) + 1];\n\n            uint32View[index++] = argb;\n            uint32View[index++] = darkColor;\n\n            uint32View[index++] = textureIdAndRound;\n        }\n    }\n\n    public packQuadAttributes(\n        element: DefaultBatchableQuadElement & { darkColor: number },\n        float32View: Float32Array,\n        uint32View: Uint32Array,\n        index: number,\n        textureId: number\n    )\n    {\n        const texture = element.texture;\n\n        const wt = element.transform;\n\n        const a = wt.a;\n        const b = wt.b;\n        const c = wt.c;\n        const d = wt.d;\n        const tx = wt.tx;\n        const ty = wt.ty;\n\n        const bounds = element.bounds;\n\n        const w0 = bounds.maxX;\n        const w1 = bounds.minX;\n        const h0 = bounds.maxY;\n        const h1 = bounds.minY;\n\n        const uvs = texture.uvs;\n\n        // _ _ _ _\n        // a b g r\n        const argb = element.color;\n        const darkColor = element.darkColor;\n\n        const textureIdAndRound = (textureId << 16) | (element.roundPixels & 0xFFFF);\n\n        float32View[index + 0] = (a * w1) + (c * h1) + tx;\n        float32View[index + 1] = (d * h1) + (b * w1) + ty;\n\n        float32View[index + 2] = uvs.x0;\n        float32View[index + 3] = uvs.y0;\n\n        uint32View[index + 4] = argb;\n        uint32View[index + 5] = darkColor;\n        uint32View[index + 6] = textureIdAndRound;\n\n        // xy\n        float32View[index + 7] = (a * w0) + (c * h1) + tx;\n        float32View[index + 8] = (d * h1) + (b * w0) + ty;\n\n        float32View[index + 9] = uvs.x1;\n        float32View[index + 10] = uvs.y1;\n\n        uint32View[index + 11] = argb;\n        uint32View[index + 12] = darkColor;\n        uint32View[index + 13] = textureIdAndRound;\n\n        // xy\n        float32View[index + 14] = (a * w0) + (c * h0) + tx;\n        float32View[index + 15] = (d * h0) + (b * w0) + ty;\n\n        float32View[index + 16] = uvs.x2;\n        float32View[index + 17] = uvs.y2;\n\n        uint32View[index + 18] = argb;\n        uint32View[index + 19] = darkColor;\n        uint32View[index + 20] = textureIdAndRound;\n\n        // xy\n        float32View[index + 21] = (a * w1) + (c * h0) + tx;\n        float32View[index + 22] = (d * h0) + (b * w1) + ty;\n\n        float32View[index + 23] = uvs.x3;\n        float32View[index + 24] = uvs.y3;\n\n        uint32View[index + 25] = argb;\n        uint32View[index + 26] = darkColor;\n        uint32View[index + 27] = textureIdAndRound;\n    }\n}\n\nextensions.add(DarkTintBatcher);\n"],"names":[],"mappings":"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"}