UNPKG

@esotericsoftware/spine-core

Version:
92 lines 11.4 kB
/****************************************************************************** * 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. *****************************************************************************/ import { Utils } from "../Utils.js"; export class Sequence { static _nextID = 0; id = Sequence.nextID(); regions; start = 0; digits = 0; /** The index of the region to show for the setup pose. */ setupIndex = 0; constructor(count) { this.regions = new Array(count); } copy() { let copy = new Sequence(this.regions.length); Utils.arrayCopy(this.regions, 0, copy.regions, 0, this.regions.length); copy.start = this.start; copy.digits = this.digits; copy.setupIndex = this.setupIndex; return copy; } apply(slot, attachment) { let index = slot.sequenceIndex; if (index == -1) index = this.setupIndex; if (index >= this.regions.length) index = this.regions.length - 1; let region = this.regions[index]; if (attachment.region != region) { attachment.region = region; attachment.updateRegion(); } } getPath(basePath, index) { let result = basePath; let frame = (this.start + index).toString(); for (let i = this.digits - frame.length; i > 0; i--) result += "0"; result += frame; return result; } static nextID() { return Sequence._nextID++; } } export var SequenceMode; (function (SequenceMode) { SequenceMode[SequenceMode["hold"] = 0] = "hold"; SequenceMode[SequenceMode["once"] = 1] = "once"; SequenceMode[SequenceMode["loop"] = 2] = "loop"; SequenceMode[SequenceMode["pingpong"] = 3] = "pingpong"; SequenceMode[SequenceMode["onceReverse"] = 4] = "onceReverse"; SequenceMode[SequenceMode["loopReverse"] = 5] = "loopReverse"; SequenceMode[SequenceMode["pingpongReverse"] = 6] = "pingpongReverse"; })(SequenceMode || (SequenceMode = {})); export const SequenceModeValues = [ SequenceMode.hold, SequenceMode.once, SequenceMode.loop, SequenceMode.pingpong, SequenceMode.onceReverse, SequenceMode.loopReverse, SequenceMode.pingpongReverse ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHcEMsTUFBTSxPQUFPLFFBQVE7SUFDWixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUUzQixFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sQ0FBa0I7SUFDekIsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNWLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCwwREFBMEQ7SUFDMUQsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUVmLFlBQWEsS0FBYTtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFnQixLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSTtRQUNILElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELEtBQUssQ0FBRSxJQUFVLEVBQUUsVUFBNEI7UUFDOUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMvQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7WUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0YsQ0FBQztJQUVELE9BQU8sQ0FBRSxRQUFnQixFQUFFLEtBQWE7UUFDdkMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUNoQixPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQUMsTUFBTTtRQUNwQixPQUFPLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDOztBQUdGLE1BQU0sQ0FBTixJQUFZLFlBUVg7QUFSRCxXQUFZLFlBQVk7SUFDdkIsK0NBQVEsQ0FBQTtJQUNSLCtDQUFRLENBQUE7SUFDUiwrQ0FBUSxDQUFBO0lBQ1IsdURBQVksQ0FBQTtJQUNaLDZEQUFlLENBQUE7SUFDZiw2REFBZSxDQUFBO0lBQ2YscUVBQW1CLENBQUE7QUFDcEIsQ0FBQyxFQVJXLFlBQVksS0FBWixZQUFZLFFBUXZCO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDakMsWUFBWSxDQUFDLElBQUk7SUFDakIsWUFBWSxDQUFDLElBQUk7SUFDakIsWUFBWSxDQUFDLElBQUk7SUFDakIsWUFBWSxDQUFDLFFBQVE7SUFDckIsWUFBWSxDQUFDLFdBQVc7SUFDeEIsWUFBWSxDQUFDLFdBQVc7SUFDeEIsWUFBWSxDQUFDLGVBQWU7Q0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgVGV4dHVyZVJlZ2lvbiB9IGZyb20gXCIuLi9UZXh0dXJlLmpzXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIi4uL1Nsb3QuanNcIjtcbmltcG9ydCB7IEhhc1RleHR1cmVSZWdpb24gfSBmcm9tIFwiLi9IYXNUZXh0dXJlUmVnaW9uLmpzXCI7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gXCIuLi9VdGlscy5qc1wiO1xuXG5cbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZSB7XG5cdHByaXZhdGUgc3RhdGljIF9uZXh0SUQgPSAwO1xuXG5cdGlkID0gU2VxdWVuY2UubmV4dElEKCk7XG5cdHJlZ2lvbnM6IFRleHR1cmVSZWdpb25bXTtcblx0c3RhcnQgPSAwO1xuXHRkaWdpdHMgPSAwO1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSByZWdpb24gdG8gc2hvdyBmb3IgdGhlIHNldHVwIHBvc2UuICovXG5cdHNldHVwSW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChjb3VudDogbnVtYmVyKSB7XG5cdFx0dGhpcy5yZWdpb25zID0gbmV3IEFycmF5PFRleHR1cmVSZWdpb24+KGNvdW50KTtcblx0fVxuXG5cdGNvcHkgKCk6IFNlcXVlbmNlIHtcblx0XHRsZXQgY29weSA9IG5ldyBTZXF1ZW5jZSh0aGlzLnJlZ2lvbnMubGVuZ3RoKTtcblx0XHRVdGlscy5hcnJheUNvcHkodGhpcy5yZWdpb25zLCAwLCBjb3B5LnJlZ2lvbnMsIDAsIHRoaXMucmVnaW9ucy5sZW5ndGgpO1xuXHRcdGNvcHkuc3RhcnQgPSB0aGlzLnN0YXJ0O1xuXHRcdGNvcHkuZGlnaXRzID0gdGhpcy5kaWdpdHM7XG5cdFx0Y29weS5zZXR1cEluZGV4ID0gdGhpcy5zZXR1cEluZGV4O1xuXHRcdHJldHVybiBjb3B5O1xuXHR9XG5cblx0YXBwbHkgKHNsb3Q6IFNsb3QsIGF0dGFjaG1lbnQ6IEhhc1RleHR1cmVSZWdpb24pIHtcblx0XHRsZXQgaW5kZXggPSBzbG90LnNlcXVlbmNlSW5kZXg7XG5cdFx0aWYgKGluZGV4ID09IC0xKSBpbmRleCA9IHRoaXMuc2V0dXBJbmRleDtcblx0XHRpZiAoaW5kZXggPj0gdGhpcy5yZWdpb25zLmxlbmd0aCkgaW5kZXggPSB0aGlzLnJlZ2lvbnMubGVuZ3RoIC0gMTtcblx0XHRsZXQgcmVnaW9uID0gdGhpcy5yZWdpb25zW2luZGV4XTtcblx0XHRpZiAoYXR0YWNobWVudC5yZWdpb24gIT0gcmVnaW9uKSB7XG5cdFx0XHRhdHRhY2htZW50LnJlZ2lvbiA9IHJlZ2lvbjtcblx0XHRcdGF0dGFjaG1lbnQudXBkYXRlUmVnaW9uKCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0UGF0aCAoYmFzZVBhdGg6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG5cdFx0bGV0IHJlc3VsdCA9IGJhc2VQYXRoO1xuXHRcdGxldCBmcmFtZSA9ICh0aGlzLnN0YXJ0ICsgaW5kZXgpLnRvU3RyaW5nKCk7XG5cdFx0Zm9yIChsZXQgaSA9IHRoaXMuZGlnaXRzIC0gZnJhbWUubGVuZ3RoOyBpID4gMDsgaS0tKVxuXHRcdFx0cmVzdWx0ICs9IFwiMFwiO1xuXHRcdHJlc3VsdCArPSBmcmFtZTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgbmV4dElEICgpOiBudW1iZXIge1xuXHRcdHJldHVybiBTZXF1ZW5jZS5fbmV4dElEKys7XG5cdH1cbn1cblxuZXhwb3J0IGVudW0gU2VxdWVuY2VNb2RlIHtcblx0aG9sZCA9IDAsXG5cdG9uY2UgPSAxLFxuXHRsb29wID0gMixcblx0cGluZ3BvbmcgPSAzLFxuXHRvbmNlUmV2ZXJzZSA9IDQsXG5cdGxvb3BSZXZlcnNlID0gNSxcblx0cGluZ3BvbmdSZXZlcnNlID0gNlxufVxuXG5leHBvcnQgY29uc3QgU2VxdWVuY2VNb2RlVmFsdWVzID0gW1xuXHRTZXF1ZW5jZU1vZGUuaG9sZCxcblx0U2VxdWVuY2VNb2RlLm9uY2UsXG5cdFNlcXVlbmNlTW9kZS5sb29wLFxuXHRTZXF1ZW5jZU1vZGUucGluZ3BvbmcsXG5cdFNlcXVlbmNlTW9kZS5vbmNlUmV2ZXJzZSxcblx0U2VxdWVuY2VNb2RlLmxvb3BSZXZlcnNlLFxuXHRTZXF1ZW5jZU1vZGUucGluZ3BvbmdSZXZlcnNlXG5dO1xuIl19