@esotericsoftware/spine-pixi-v8
Version:
The official Spine Runtimes for PixiJS v8.
103 lines • 14.5 kB
JavaScript
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated April 5, 2025. Replaces all prior versions.
*
* Copyright (c) 2013-2025, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software
* or otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
export class BatchableSpineSlot {
indexOffset = 0;
attributeOffset = 0;
indexSize;
attributeSize;
batcherName = 'darkTint';
topology = 'triangle-list';
packAsQuad = false;
renderable;
positions;
indices;
uvs;
roundPixels;
data;
blendMode;
darkTint;
texture;
transform;
// used internally by batcher specific. Stored for efficient updating.
_textureId;
_attributeStart;
_indexStart;
_batcher;
_batch;
get color() {
const slotColor = this.data.color;
const parentColor = this.renderable.groupColor;
const parentAlpha = this.renderable.groupAlpha;
let abgr;
const mixedA = (slotColor.a * parentAlpha) * 255;
if (parentColor !== 0xFFFFFF) {
const parentB = (parentColor >> 16) & 0xFF;
const parentG = (parentColor >> 8) & 0xFF;
const parentR = parentColor & 0xFF;
const mixedR = (slotColor.r * parentR);
const mixedG = (slotColor.g * parentG);
const mixedB = (slotColor.b * parentB);
abgr = ((mixedA) << 24) | (mixedB << 16) | (mixedG << 8) | mixedR;
}
else {
abgr = ((mixedA) << 24) | ((slotColor.b * 255) << 16) | ((slotColor.g * 255) << 8) | (slotColor.r * 255);
}
return abgr;
}
get darkColor() {
const darkColor = this.data.darkColor;
return ((darkColor.b * 255) << 16) | ((darkColor.g * 255) << 8) | (darkColor.r * 255);
}
get groupTransform() { return this.renderable.groupTransform; }
setData(renderable, data, blendMode, roundPixels) {
this.renderable = renderable;
this.transform = renderable.groupTransform;
this.data = data;
if (data.clipped) {
const clippedData = data.clippedData;
this.indexSize = clippedData.indicesCount;
this.attributeSize = clippedData.vertexCount;
this.positions = clippedData.vertices;
this.indices = clippedData.indices;
this.uvs = clippedData.uvs;
}
else {
this.indexSize = data.indices.length;
this.attributeSize = data.vertices.length / 2;
this.positions = data.vertices;
this.indices = data.indices;
this.uvs = data.uvs;
}
this.texture = data.texture;
this.roundPixels = roundPixels;
this.blendMode = blendMode;
this.batcherName = data.darkTint ? 'darkTint' : 'default';
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmF0Y2hhYmxlU3BpbmVTbG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0JhdGNoYWJsZVNwaW5lU2xvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFNL0UsTUFBTSxPQUFPLGtCQUFrQjtJQUM5QixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFFcEIsU0FBUyxDQUFVO0lBQ25CLGFBQWEsQ0FBVTtJQUV2QixXQUFXLEdBQUcsVUFBVSxDQUFDO0lBRXpCLFFBQVEsR0FBYSxlQUFlLENBQUM7SUFFNUIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUU1QixVQUFVLENBQVM7SUFFbkIsU0FBUyxDQUFnQjtJQUN6QixPQUFPLENBQTBCO0lBQ2pDLEdBQUcsQ0FBZ0I7SUFFbkIsV0FBVyxDQUFTO0lBQ3BCLElBQUksQ0FBdUI7SUFDM0IsU0FBUyxDQUFlO0lBRXhCLFFBQVEsQ0FBVTtJQUVsQixPQUFPLENBQVc7SUFFbEIsU0FBUyxDQUFVO0lBRW5CLHNFQUFzRTtJQUN0RSxVQUFVLENBQVU7SUFDcEIsZUFBZSxDQUFVO0lBQ3pCLFdBQVcsQ0FBVTtJQUNyQixRQUFRLENBQVc7SUFDbkIsTUFBTSxDQUFTO0lBR2YsSUFBSSxLQUFLO1FBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFbEMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDdkQsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDdkQsSUFBSSxJQUFZLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUVqRCxJQUFJLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FB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LEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBRS9CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0QsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FjaGVEYXRhLCBTcGluZSB9IGZyb20gJy4vU3BpbmUuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEJhdGNoLCBCYXRjaGVyLCBCTEVORF9NT0RFUywgRGVmYXVsdEJhdGNoYWJsZU1lc2hFbGVtZW50LCBNYXRyaXgsIFRleHR1cmUsIFRvcG9sb2d5IH0gZnJvbSAncGl4aS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBCYXRjaGFibGVTcGluZVNsb3QgaW1wbGVtZW50cyBEZWZhdWx0QmF0Y2hhYmxlTWVzaEVsZW1lbnQge1xuXHRpbmRleE9mZnNldCA9IDA7XG5cdGF0dHJpYnV0ZU9mZnNldCA9IDA7XG5cblx0aW5kZXhTaXplITogbnVtYmVyO1xuXHRhdHRyaWJ1dGVTaXplITogbnVtYmVyO1xuXG5cdGJhdGNoZXJOYW1lID0gJ2RhcmtUaW50JztcblxuXHR0b3BvbG9neTogVG9wb2xvZ3kgPSAndHJpYW5nbGUtbGlzdCc7XG5cblx0cmVhZG9ubHkgcGFja0FzUXVhZCA9IGZhbHNlO1xuXG5cdHJlbmRlcmFibGUhOiBTcGluZTtcblxuXHRwb3NpdGlvbnMhOiBGbG9hdDMyQXJyYXk7XG5cdGluZGljZXMhOiBudW1iZXJbXSB8IFVpbnQxNkFycmF5O1xuXHR1dnMhOiBGbG9hdDMyQXJyYXk7XG5cblx0cm91bmRQaXhlbHMhOiAwIHwgMTtcblx0ZGF0YSE6IEF0dGFjaG1lbnRDYWNoZURhdGE7XG5cdGJsZW5kTW9kZSE6IEJMRU5EX01PREVTO1xuXG5cdGRhcmtUaW50ITogbnVtYmVyO1xuXG5cdHRleHR1cmUhOiBUZXh0dXJlO1xuXG5cdHRyYW5zZm9ybSE6IE1hdHJpeDtcblxuXHQvLyB1c2VkIGludGVybmFsbHkgYnkgYmF0Y2hlciBzcGVjaWZpYy4gU3RvcmVkIGZvciBlZmZpY2llbnQgdXBkYXRpbmcuXG5cdF90ZXh0dXJlSWQhOiBudW1iZXI7XG5cdF9hdHRyaWJ1dGVTdGFydCE6IG51bWJlcjtcblx0X2luZGV4U3RhcnQhOiBudW1iZXI7XG5cdF9iYXRjaGVyITogQmF0Y2hlcjtcblx0X2JhdGNoITogQmF0Y2g7XG5cblxuXHRnZXQgY29sb3IgKCkge1xuXHRcdGNvbnN0IHNsb3RDb2xvciA9IHRoaXMuZGF0YS5jb2xvcjtcblxuXHRcdGNvbnN0IHBhcmVudENvbG9yOiBudW1iZXIgPSB0aGlzLnJlbmRlcmFibGUuZ3JvdXBDb2xvcjtcblx0XHRjb25zdCBwYXJlbnRBbHBoYTogbnVtYmVyID0gdGhpcy5yZW5kZXJhYmxlLmdyb3VwQWxwaGE7XG5cdFx0bGV0IGFiZ3I6IG51bWJlcjtcblxuXHRcdGNvbnN0IG1peGVkQSA9IChzbG90Q29sb3IuYSAqIHBhcmVudEFscGhhKSAqIDI1NTtcblxuXHRcdGlmIChwYXJlbnRDb2xvciAhPT0gMHhGRkZGRkYpIHtcblx0XHRcdGNvbnN0IHBhcmVudEIgPSAocGFyZW50Q29sb3IgPj4gMTYpICYgMHhGRjtcblx0XHRcdGNvbnN0IHBhcmVudEcgPSAocGFyZW50Q29sb3IgPj4gOCkgJiAweEZGO1xuXHRcdFx0Y29uc3QgcGFyZW50UiA9IHBhcmVudENvbG9yICYgMHhGRjtcblxuXHRcdFx0Y29uc3QgbWl4ZWRSID0gKHNsb3RDb2xvci5yICogcGFyZW50Uik7XG5cdFx0XHRjb25zdCBtaXhlZEcgPSAoc2xvdENvbG9yLmcgKiBwYXJlbnRHKTtcblx0XHRcdGNvbnN0IG1peGVkQiA9IChzbG90Q29sb3IuYiAqIHBhcmVudEIpO1xuXG5cdFx0XHRhYmdyID0gKChtaXhlZEEpIDw8IDI0KSB8IChtaXhlZEIgPDwgMTYpIHwgKG1peGVkRyA8PCA4KSB8IG1peGVkUjtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRhYmdyID0gKChtaXhlZEEpIDw8IDI0KSB8ICgoc2xvdENvbG9yLmIgKiAyNTUpIDw8IDE2KSB8ICgoc2xvdENvbG9yLmcgKiAyNTUpIDw8IDgpIHwgKHNsb3RDb2xvci5yICogMjU1KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWJncjtcblx0fVxuXG5cdGdldCBkYXJrQ29sb3IgKCkge1xuXHRcdGNvbnN0IGRhcmtDb2xvciA9IHRoaXMuZGF0YS5kYXJrQ29sb3I7XG5cdFx0cmV0dXJuICgoZGFya0NvbG9yLmIgKiAyNTUpIDw8IDE2KSB8ICgoZGFya0NvbG9yLmcgKiAyNTUpIDw8IDgpIHwgKGRhcmtDb2xvci5yICogMjU1KTtcblx0fVxuXG5cdGdldCBncm91cFRyYW5zZm9ybSAoKSB7IHJldHVybiB0aGlzLnJlbmRlcmFibGUuZ3JvdXBUcmFuc2Zvcm07IH1cblxuXHRzZXREYXRhIChcblx0XHRyZW5kZXJhYmxlOiBTcGluZSxcblx0XHRkYXRhOiBBdHRhY2htZW50Q2FjaGVEYXRhLFxuXHRcdGJsZW5kTW9kZTogQkxFTkRfTU9ERVMsXG5cdFx0cm91bmRQaXhlbHM6IDAgfCAxKSB7XG5cdFx0dGhpcy5yZW5kZXJhYmxlID0gcmVuZGVyYWJsZTtcblx0XHR0aGlzLnRyYW5zZm9ybSA9IHJlbmRlcmFibGUuZ3JvdXBUcmFuc2Zvcm07XG5cdFx0dGhpcy5kYXRhID0gZGF0YTtcblxuXHRcdGlmIChkYXRhLmNsaXBwZWQpIHtcblx0XHRcdGNvbnN0IGNsaXBwZWREYXRhID0gZGF0YS5jbGlwcGVkRGF0YTtcblxuXHRcdFx0dGhpcy5pbmRleFNpemUgPSBjbGlwcGVkRGF0YSEuaW5kaWNlc0NvdW50O1xuXHRcdFx0dGhpcy5hdHRyaWJ1dGVTaXplID0gY2xpcHBlZERhdGEhLnZlcnRleENvdW50O1xuXHRcdFx0dGhpcy5wb3NpdGlvbnMgPSBjbGlwcGVkRGF0YSEudmVydGljZXM7XG5cdFx0XHR0aGlzLmluZGljZXMgPSBjbGlwcGVkRGF0YSEuaW5kaWNlcztcblx0XHRcdHRoaXMudXZzID0gY2xpcHBlZERhdGEhLnV2cztcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLmluZGV4U2l6ZSA9IGRhdGEuaW5kaWNlcy5sZW5ndGg7XG5cdFx0XHR0aGlzLmF0dHJpYnV0ZVNpemUgPSBkYXRhLnZlcnRpY2VzLmxlbmd0aCAvIDI7XG5cdFx0XHR0aGlzLnBvc2l0aW9ucyA9IGRhdGEudmVydGljZXM7XG5cdFx0XHR0aGlzLmluZGljZXMgPSBkYXRhLmluZGljZXM7XG5cdFx0XHR0aGlzLnV2cyA9IGRhdGEudXZzO1xuXHRcdH1cblxuXHRcdHRoaXMudGV4dHVyZSA9IGRhdGEudGV4dHVyZTtcblx0XHR0aGlzLnJvdW5kUGl4ZWxzID0gcm91bmRQaXhlbHM7XG5cblx0XHR0aGlzLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTtcblxuXHRcdHRoaXMuYmF0Y2hlck5hbWUgPSBkYXRhLmRhcmtUaW50ID8gJ2RhcmtUaW50JyA6ICdkZWZhdWx0Jztcblx0fVxufVxuIl19