UNPKG

@esotericsoftware/spine-core

Version:
78 lines 10.2 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. *****************************************************************************/ /** The base class for an object with a number of poses: * - {@link data}: The setup pose. * - {@link pose}: The unconstrained pose. Set by animations and application code. * - {@link appliedPose}: The pose to use for rendering. Possibly modified by constraints. */ export class Posed { /** The constraint's setup pose data. */ data; pose; constrainedPose; appliedPose; constructor(data, pose, constrainedPose) { if (data == null) throw new Error("data cannot be null."); this.data = data; this.pose = pose; this.constrainedPose = constrainedPose; this.appliedPose = pose; } /** Sets the unconstrained pose to the setup pose. */ setupPose() { this.pose.set(this.data.setupPose); } /** The setup pose data. May be shared with multiple instances. */ getData() { return this.data; } /** The unconstrained pose for this object, set by animations and application code. */ getPose() { return this.pose; } /** The pose to use for rendering. If no constraints modify this pose, this is the same as {@link pose}. Otherwise it is a * copy of {@link pose} modified by constraints. */ getAppliedPose() { return this.appliedPose; } /** Sets the applied pose to the unconstrained pose, for when no constraints will modify the pose. */ unconstrained() { this.appliedPose = this.pose; } /** Sets the applied pose to the constrained pose, in anticipation of the applied pose being modified by constraints. */ constrained() { this.appliedPose = this.constrainedPose; } /** Sets the constrained pose to the unconstrained pose, as a starting point for constraints to be applied. */ resetConstrained() { this.constrainedPose.set(this.pose); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9zZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUG9zZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSy9FOzs7O0dBSUc7QUFDSCxNQUFNLE9BQWdCLEtBQUs7SUFJMUIsd0NBQXdDO0lBQy9CLElBQUksQ0FBSTtJQUNSLElBQUksQ0FBSTtJQUNSLGVBQWUsQ0FBSTtJQUM1QixXQUFXLENBQUk7SUFFZixZQUFhLElBQU8sRUFBRSxJQUFPLEVBQUUsZUFBa0I7UUFDaEQsSUFBSSxJQUFJLElBQUksSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQscURBQXFEO0lBQzlDLFNBQVM7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrRUFBa0U7SUFDM0QsT0FBTztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRUQsc0ZBQXNGO0lBQy9FLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEIsQ0FBQztJQUVEO3VEQUNtRDtJQUM1QyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBRUQscUdBQXFHO0lBQ3JHLGFBQWE7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELHdIQUF3SDtJQUN4SCxXQUFXO1FBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFFRCw4R0FBOEc7SUFDOUcsZ0JBQWdCO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FFRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBQb3NlIH0gZnJvbSBcIi4vUG9zZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQb3NlZERhdGEgfSBmcm9tIFwiLi9Qb3NlZERhdGEuanNcIjtcblxuLyoqIFRoZSBiYXNlIGNsYXNzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG51bWJlciBvZiBwb3NlczpcbiAqIC0ge0BsaW5rIGRhdGF9OiBUaGUgc2V0dXAgcG9zZS5cbiAqIC0ge0BsaW5rIHBvc2V9OiBUaGUgdW5jb25zdHJhaW5lZCBwb3NlLiBTZXQgYnkgYW5pbWF0aW9ucyBhbmQgYXBwbGljYXRpb24gY29kZS5cbiAqIC0ge0BsaW5rIGFwcGxpZWRQb3NlfTogVGhlIHBvc2UgdG8gdXNlIGZvciByZW5kZXJpbmcuIFBvc3NpYmx5IG1vZGlmaWVkIGJ5IGNvbnN0cmFpbnRzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9zZWQ8XG5cdEQgZXh0ZW5kcyBQb3NlZERhdGE8UD4sXG5cdFAgZXh0ZW5kcyBQb3NlPFA+PiB7XG5cblx0LyoqIFRoZSBjb25zdHJhaW50J3Mgc2V0dXAgcG9zZSBkYXRhLiAqL1xuXHRyZWFkb25seSBkYXRhOiBEO1xuXHRyZWFkb25seSBwb3NlOiBQO1xuXHRyZWFkb25seSBjb25zdHJhaW5lZFBvc2U6IFA7XG5cdGFwcGxpZWRQb3NlOiBQO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBELCBwb3NlOiBQLCBjb25zdHJhaW5lZFBvc2U6IFApIHtcblx0XHRpZiAoZGF0YSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLmRhdGEgPSBkYXRhO1xuXHRcdHRoaXMucG9zZSA9IHBvc2U7XG5cdFx0dGhpcy5jb25zdHJhaW5lZFBvc2UgPSBjb25zdHJhaW5lZFBvc2U7XG5cdFx0dGhpcy5hcHBsaWVkUG9zZSA9IHBvc2U7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdW5jb25zdHJhaW5lZCBwb3NlIHRvIHRoZSBzZXR1cCBwb3NlLiAqL1xuXHRwdWJsaWMgc2V0dXBQb3NlICgpOiB2b2lkIHtcblx0XHR0aGlzLnBvc2Uuc2V0KHRoaXMuZGF0YS5zZXR1cFBvc2UpO1xuXHR9XG5cblx0LyoqIFRoZSBzZXR1cCBwb3NlIGRhdGEuIE1heSBiZSBzaGFyZWQgd2l0aCBtdWx0aXBsZSBpbnN0YW5jZXMuICovXG5cdHB1YmxpYyBnZXREYXRhICgpOiBEIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRhO1xuXHR9XG5cblx0LyoqIFRoZSB1bmNvbnN0cmFpbmVkIHBvc2UgZm9yIHRoaXMgb2JqZWN0LCBzZXQgYnkgYW5pbWF0aW9ucyBhbmQgYXBwbGljYXRpb24gY29kZS4gKi9cblx0cHVibGljIGdldFBvc2UgKCk6IFAge1xuXHRcdHJldHVybiB0aGlzLnBvc2U7XG5cdH1cblxuXHQvKiogVGhlIHBvc2UgdG8gdXNlIGZvciByZW5kZXJpbmcuIElmIG5vIGNvbnN0cmFpbnRzIG1vZGlmeSB0aGlzIHBvc2UsIHRoaXMgaXMgdGhlIHNhbWUgYXMge0BsaW5rIHBvc2V9LiBPdGhlcndpc2UgaXQgaXMgYVxuXHQgKiBjb3B5IG9mIHtAbGluayBwb3NlfSBtb2RpZmllZCBieSBjb25zdHJhaW50cy4gKi9cblx0cHVibGljIGdldEFwcGxpZWRQb3NlICgpOiBQIHtcblx0XHRyZXR1cm4gdGhpcy5hcHBsaWVkUG9zZTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBhcHBsaWVkIHBvc2UgdG8gdGhlIHVuY29uc3RyYWluZWQgcG9zZSwgZm9yIHdoZW4gbm8gY29uc3RyYWludHMgd2lsbCBtb2RpZnkgdGhlIHBvc2UuICovXG5cdHVuY29uc3RyYWluZWQgKCkge1xuXHRcdHRoaXMuYXBwbGllZFBvc2UgPSB0aGlzLnBvc2U7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgYXBwbGllZCBwb3NlIHRvIHRoZSBjb25zdHJhaW5lZCBwb3NlLCBpbiBhbnRpY2lwYXRpb24gb2YgdGhlIGFwcGxpZWQgcG9zZSBiZWluZyBtb2RpZmllZCBieSBjb25zdHJhaW50cy4gKi9cblx0Y29uc3RyYWluZWQgKCkge1xuXHRcdHRoaXMuYXBwbGllZFBvc2UgPSB0aGlzLmNvbnN0cmFpbmVkUG9zZTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBjb25zdHJhaW5lZCBwb3NlIHRvIHRoZSB1bmNvbnN0cmFpbmVkIHBvc2UsIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbnN0cmFpbnRzIHRvIGJlIGFwcGxpZWQuICovXG5cdHJlc2V0Q29uc3RyYWluZWQgKCkgeyAvLyBQb3J0OiByZXNldENvbnN0cmFpbmVkIC0gcmVmZXJlbmNlIHJ1bnRpbWU6ICByZXNldCgpXG5cdFx0dGhpcy5jb25zdHJhaW5lZFBvc2Uuc2V0KHRoaXMucG9zZSk7XG5cdH1cblxufVxuIl19