UNPKG

@esotericsoftware/spine-core

Version:
77 lines 10.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 { BonePose } from "./BonePose.js"; import { PosedData } from "./PosedData.js"; import { Color } from "./Utils.js"; /** The setup pose for a bone. */ export class BoneData extends PosedData { /** The index of the bone in {@link Skeleton.bones}. */ index = 0; /** The parent bone, or null if this bone is the root. */ parent = null; /** The bone's length. */ length = 0; // Nonessential. /** The color of the bone as it was in Spine. Available only when nonessential data was exported. Bones are not usually * rendered at runtime. */ color = new Color(); /** The bone icon name as it was in Spine, or null if nonessential data was not exported. */ icon; /** The bone icon's display size scale, or 1 if nonessential data was not exported. */ iconSize = 1; /** The bone icon's display rotation in degrees, or 0 if nonessential data was not exported. */ iconRotation = 0; /** False if the bone was hidden in Spine and nonessential data was exported. Does not affect runtime rendering. */ visible = false; constructor(index, name, parent) { super(name, new BonePose()); if (index < 0) throw new Error("index must be >= 0."); if (!name) throw new Error("name cannot be null."); this.index = index; this.parent = parent; } copy(parent) { const copy = new BoneData(this.index, this.name, parent); copy.length = this.length; copy.setupPose.set(this.setupPose); return copy; } } /** Determines how a bone inherits world transforms from parent bones. */ export var Inherit; (function (Inherit) { Inherit[Inherit["Normal"] = 0] = "Normal"; Inherit[Inherit["OnlyTranslation"] = 1] = "OnlyTranslation"; Inherit[Inherit["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; Inherit[Inherit["NoScale"] = 3] = "NoScale"; Inherit[Inherit["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; })(Inherit || (Inherit = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9uZURhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQm9uZURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkMsaUNBQWlDO0FBQ2pDLE1BQU0sT0FBTyxRQUFTLFNBQVEsU0FBbUI7SUFDaEQsdURBQXVEO0lBQ3ZELEtBQUssR0FBVyxDQUFDLENBQUM7SUFFbEIseURBQXlEO0lBQ3pELE1BQU0sR0FBb0IsSUFBSSxDQUFDO0lBRS9CLHlCQUF5QjtJQUN6QixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBRW5CLGdCQUFnQjtJQUNoQjs4QkFDMEI7SUFDakIsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFFN0IsNEZBQTRGO0lBQzVGLElBQUksQ0FBVTtJQUVkLHNGQUFzRjtJQUN0RixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWIsK0ZBQStGO0lBQy9GLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsbUhBQW1IO0lBQ25ILE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFaEIsWUFBYSxLQUFhLEVBQUUsSUFBWSxFQUFFLE1BQXVCO1FBQ2hFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksQ0FBRSxNQUF1QjtRQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FDRDtBQUVELHlFQUF5RTtBQUN6RSxNQUFNLENBQU4sSUFBWSxPQUF5RjtBQUFyRyxXQUFZLE9BQU87SUFBRyx5Q0FBTSxDQUFBO0lBQUUsMkRBQWUsQ0FBQTtJQUFFLHlFQUFzQixDQUFBO0lBQUUsMkNBQU8sQ0FBQTtJQUFFLG1FQUFtQixDQUFBO0FBQUMsQ0FBQyxFQUF6RixPQUFPLEtBQVAsT0FBTyxRQUFrRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQm9uZVBvc2UgfSBmcm9tIFwiLi9Cb25lUG9zZS5qc1wiO1xuaW1wb3J0IHsgUG9zZWREYXRhIH0gZnJvbSBcIi4vUG9zZWREYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFRoZSBzZXR1cCBwb3NlIGZvciBhIGJvbmUuICovXG5leHBvcnQgY2xhc3MgQm9uZURhdGEgZXh0ZW5kcyBQb3NlZERhdGE8Qm9uZVBvc2U+IHtcblx0LyoqIFRoZSBpbmRleCBvZiB0aGUgYm9uZSBpbiB7QGxpbmsgU2tlbGV0b24uYm9uZXN9LiAqL1xuXHRpbmRleDogbnVtYmVyID0gMDtcblxuXHQvKiogVGhlIHBhcmVudCBib25lLCBvciBudWxsIGlmIHRoaXMgYm9uZSBpcyB0aGUgcm9vdC4gKi9cblx0cGFyZW50OiBCb25lRGF0YSB8IG51bGwgPSBudWxsO1xuXG5cdC8qKiBUaGUgYm9uZSdzIGxlbmd0aC4gKi9cblx0bGVuZ3RoOiBudW1iZXIgPSAwO1xuXG5cdC8vIE5vbmVzc2VudGlhbC5cblx0LyoqIFRoZSBjb2xvciBvZiB0aGUgYm9uZSBhcyBpdCB3YXMgaW4gU3BpbmUuIEF2YWlsYWJsZSBvbmx5IHdoZW4gbm9uZXNzZW50aWFsIGRhdGEgd2FzIGV4cG9ydGVkLiBCb25lcyBhcmUgbm90IHVzdWFsbHlcblx0ICogcmVuZGVyZWQgYXQgcnVudGltZS4gKi9cblx0cmVhZG9ubHkgY29sb3IgPSBuZXcgQ29sb3IoKTtcblxuXHQvKiogVGhlIGJvbmUgaWNvbiBuYW1lIGFzIGl0IHdhcyBpbiBTcGluZSwgb3IgbnVsbCBpZiBub25lc3NlbnRpYWwgZGF0YSB3YXMgbm90IGV4cG9ydGVkLiAqL1xuXHRpY29uPzogc3RyaW5nO1xuXG5cdC8qKiBUaGUgYm9uZSBpY29uJ3MgZGlzcGxheSBzaXplIHNjYWxlLCBvciAxIGlmIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBub3QgZXhwb3J0ZWQuICovXG5cdGljb25TaXplID0gMTtcblxuXHQvKiogVGhlIGJvbmUgaWNvbidzIGRpc3BsYXkgcm90YXRpb24gaW4gZGVncmVlcywgb3IgMCBpZiBub25lc3NlbnRpYWwgZGF0YSB3YXMgbm90IGV4cG9ydGVkLiAqL1xuXHRpY29uUm90YXRpb24gPSAwO1xuXG5cdC8qKiBGYWxzZSBpZiB0aGUgYm9uZSB3YXMgaGlkZGVuIGluIFNwaW5lIGFuZCBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuIERvZXMgbm90IGFmZmVjdCBydW50aW1lIHJlbmRlcmluZy4gKi9cblx0dmlzaWJsZSA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yIChpbmRleDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIHBhcmVudDogQm9uZURhdGEgfCBudWxsKSB7XG5cdFx0c3VwZXIobmFtZSwgbmV3IEJvbmVQb3NlKCkpO1xuXHRcdGlmIChpbmRleCA8IDApIHRocm93IG5ldyBFcnJvcihcImluZGV4IG11c3QgYmUgPj0gMC5cIik7XG5cdFx0aWYgKCFuYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLmluZGV4ID0gaW5kZXg7XG5cdFx0dGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG5cdH1cblxuXHRjb3B5IChwYXJlbnQ6IEJvbmVEYXRhIHwgbnVsbCk6IEJvbmVEYXRhIHtcblx0XHRjb25zdCBjb3B5ID0gbmV3IEJvbmVEYXRhKHRoaXMuaW5kZXgsIHRoaXMubmFtZSwgcGFyZW50KTtcblx0XHRjb3B5Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuXHRcdGNvcHkuc2V0dXBQb3NlLnNldCh0aGlzLnNldHVwUG9zZSk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cbn1cblxuLyoqIERldGVybWluZXMgaG93IGEgYm9uZSBpbmhlcml0cyB3b3JsZCB0cmFuc2Zvcm1zIGZyb20gcGFyZW50IGJvbmVzLiAqL1xuZXhwb3J0IGVudW0gSW5oZXJpdCB7IE5vcm1hbCwgT25seVRyYW5zbGF0aW9uLCBOb1JvdGF0aW9uT3JSZWZsZWN0aW9uLCBOb1NjYWxlLCBOb1NjYWxlT3JSZWZsZWN0aW9uIH1cbiJdfQ==