{"version":3,"file":"BatchableSpineSlot.mjs","sources":["../src/BatchableSpineSlot.ts"],"sourcesContent":["/** ****************************************************************************\n * Spine Runtimes License Agreement\n * Last updated July 28, 2023. Replaces all prior versions.\n *\n * Copyright (c) 2013-2023, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software or\n * otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE\n * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n\nimport { AttachmentCacheData, Spine } from './Spine';\n\nimport type { Batch, Batcher, BLEND_MODES, DefaultBatchableMeshElement, Matrix, Texture } from 'pixi.js';\n\nexport class BatchableSpineSlot implements DefaultBatchableMeshElement\n{\n    indexOffset = 0;\n    attributeOffset = 0;\n\n    indexSize: number;\n    attributeSize: number;\n\n    batcherName = 'darkTint';\n\n    readonly packAsQuad = false;\n\n    renderable: Spine;\n\n    positions: Float32Array;\n    indices: number[] | Uint16Array;\n    uvs: Float32Array;\n\n    roundPixels: 0 | 1;\n    data: AttachmentCacheData;\n    blendMode: BLEND_MODES;\n\n    darkTint: number;\n\n    texture: Texture;\n\n    transform: Matrix;\n\n    // used internally by batcher specific..\n    // stored for efficient updating..\n    _textureId: number;\n    _attributeStart: number;\n    _indexStart: number;\n    _batcher: Batcher;\n    _batch: Batch;\n\n    get color()\n    {\n        const slotColor = this.data.color;\n\n        const parentColor:number = this.renderable.groupColor;\n        const parentAlpha:number = this.renderable.groupAlpha;\n        let abgr:number;\n\n        const mixedA = (slotColor.a * parentAlpha) * 255;\n\n        if (parentColor !== 0xFFFFFF)\n        {\n            const parentB = (parentColor >> 16) & 0xFF;\n            const parentG = (parentColor >> 8) & 0xFF;\n            const parentR = parentColor & 0xFF;\n\n            const mixedR = (slotColor.r * parentR);\n            const mixedG = (slotColor.g * parentG);\n            const mixedB = (slotColor.b * parentB);\n\n            abgr = ((mixedA) << 24) | (mixedB << 16) | (mixedG << 8) | mixedR;\n        }\n        else\n        {\n            abgr = ((mixedA) << 24) | ((slotColor.b * 255) << 16) | ((slotColor.g * 255) << 8) | (slotColor.r * 255);\n        }\n\n        return abgr;\n    }\n\n    get darkColor()\n    {\n        const darkColor = this.data.darkColor;\n\n        return ((darkColor.b * 255) << 16) | ((darkColor.g * 255) << 8) | (darkColor.r * 255);\n    }\n\n    get groupTransform() { return this.renderable.groupTransform; }\n\n    setData(\n        renderable:Spine,\n        data:AttachmentCacheData,\n        blendMode:BLEND_MODES,\n        roundPixels: 0 | 1)\n    {\n        this.renderable = renderable;\n        this.transform = renderable.groupTransform;\n        this.data = data;\n\n        if (data.clipped)\n        {\n            const clippedData = data.clippedData;\n\n            this.indexSize = clippedData.indicesCount;\n            this.attributeSize = clippedData.vertexCount;\n            this.positions = clippedData.vertices;\n            this.indices = clippedData.indices;\n            this.uvs = clippedData.uvs;\n        }\n        else\n        {\n            this.indexSize = data.indices.length;\n            this.attributeSize = data.vertices.length / 2;\n            this.positions = data.vertices;\n            this.indices = data.indices;\n            this.uvs = data.uvs;\n        }\n\n        this.texture = data.texture;\n        this.roundPixels = roundPixels;\n\n        this.blendMode = blendMode;\n\n        this.batcherName = data.darkTint ? 'darkTint' : 'default';\n    }\n}\n"],"names":[],"mappings":"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"}