UNPKG

@esotericsoftware/spine-core

Version:
91 lines 12.5 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 { ConstraintData, ScaleYMode } from "./ConstraintData.js"; import { PhysicsConstraint } from "./PhysicsConstraint.js"; import { PhysicsConstraintPose } from "./PhysicsConstraintPose.js"; /** Stores the setup pose for a {@link PhysicsConstraint}. * * See <a href="http://esotericsoftware.com/spine-physics-constraints">Physics constraints</a> in the Spine User Guide. */ export class PhysicsConstraintData extends ConstraintData { /** The bone constrained by this physics constraint. */ set bone(boneData) { this._bone = boneData; } get bone() { if (!this._bone) throw new Error("BoneData not set."); else return this._bone; } _bone = null; /** Physics influence on x translation, 0-1. */ x = 0; /** Physics influence on y translation, 0-1. */ y = 0; /** Physics influence on rotation, 0-1. */ rotate = 0; /** Physics influence on scaleX, 0-1. */ scaleX = 0; /** Physics influence on shearX, 0-1. */ shearX = 0; /** Movement greater than the limit will not have a greater affect on physics. */ limit = 0; /** The time in milliseconds required to advanced the physics simulation one step. */ step = 0; /** True when this constraint's inertia is controlled by global slider timelines. */ inertiaGlobal = false; /** True when this constraint's strength is controlled by global slider timelines. */ strengthGlobal = false; /** True when this constraint's damping is controlled by global slider timelines. */ dampingGlobal = false; /** True when this constraint's mass is controlled by global slider timelines. */ massGlobal = false; /** True when this constraint's wind is controlled by global slider timelines. */ windGlobal = false; /** True when this constraint's gravity is controlled by global slider timelines. */ gravityGlobal = false; /** True when this constraint's mix is controlled by global slider timelines. */ mixGlobal = false; /** Determines how the {@link BonePose.scaleY} changes when {@link BonePose.scaleX} sets * {@link BonePose.scaleX}. */ _scaleYMode = ScaleYMode.None; get scaleYMode() { return this._scaleYMode; } set scaleYMode(scaleYMode) { if (scaleYMode == null) throw new Error("scaleYMode cannot be null."); this._scaleYMode = scaleYMode; } constructor(name) { super(name, new PhysicsConstraintPose()); } create(skeleton) { return new PhysicsConstraint(this, skeleton); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1BoeXNpY3NDb25zdHJhaW50RGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFJL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUluRTs7MEhBRTBIO0FBQzFILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxjQUF3RDtJQUNsRyx1REFBdUQ7SUFDdkQsSUFBVyxJQUFJLENBQUUsUUFBa0IsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBVyxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBOztZQUNoRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUNPLEtBQUssR0FBb0IsSUFBSSxDQUFDO0lBRXRDLCtDQUErQztJQUMvQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sK0NBQStDO0lBQy9DLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFTiwwQ0FBMEM7SUFDMUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLHdDQUF3QztJQUN4QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRVgsd0NBQXdDO0lBQ3hDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFWCxpRkFBaUY7SUFDakYsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVWLHFGQUFxRjtJQUNyRixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRVQsb0ZBQW9GO0lBQ3BGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEIscUZBQXFGO0lBQ3JGLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFdkIsb0ZBQW9GO0lBQ3BGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEIsaUZBQWlGO0lBQ2pGLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsaUZBQWlGO0lBQ2pGLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsb0ZBQW9GO0lBQ3BGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEIsZ0ZBQWdGO0lBQ2hGLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFbEI7a0NBQzhCO0lBQ3RCLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3RDLElBQUksVUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUUsVUFBc0I7UUFDckMsSUFBSSxVQUFVLElBQUksSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBRSxRQUFrQjtRQUNoQyxPQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJvbmVQb3NlIH0gZnJvbSBcIi4vQm9uZVBvc2UuanNcIjtcbmltcG9ydCB7IENvbnN0cmFpbnREYXRhLCBTY2FsZVlNb2RlIH0gZnJvbSBcIi4vQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50IH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BoeXNpY3NDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5cblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBmb3IgYSB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnR9LlxuICpcbiAqIFNlZSA8YSBocmVmPVwiaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXBoeXNpY3MtY29uc3RyYWludHNcIj5QaHlzaWNzIGNvbnN0cmFpbnRzPC9hPiBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludERhdGEgZXh0ZW5kcyBDb25zdHJhaW50RGF0YTxQaHlzaWNzQ29uc3RyYWludCwgUGh5c2ljc0NvbnN0cmFpbnRQb3NlPiB7XG5cdC8qKiBUaGUgYm9uZSBjb25zdHJhaW5lZCBieSB0aGlzIHBoeXNpY3MgY29uc3RyYWludC4gKi9cblx0cHVibGljIHNldCBib25lIChib25lRGF0YTogQm9uZURhdGEpIHsgdGhpcy5fYm9uZSA9IGJvbmVEYXRhOyB9XG5cdHB1YmxpYyBnZXQgYm9uZSAoKSB7XG5cdFx0aWYgKCF0aGlzLl9ib25lKSB0aHJvdyBuZXcgRXJyb3IoXCJCb25lRGF0YSBub3Qgc2V0LlwiKVxuXHRcdGVsc2UgcmV0dXJuIHRoaXMuX2JvbmU7XG5cdH1cblx0cHJpdmF0ZSBfYm9uZTogQm9uZURhdGEgfCBudWxsID0gbnVsbDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24geCB0cmFuc2xhdGlvbiwgMC0xLiAqL1xuXHR4ID0gMDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24geSB0cmFuc2xhdGlvbiwgMC0xLiAqL1xuXHR5ID0gMDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24gcm90YXRpb24sIDAtMS4gKi9cblx0cm90YXRlID0gMDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24gc2NhbGVYLCAwLTEuICovXG5cdHNjYWxlWCA9IDA7XG5cblx0LyoqIFBoeXNpY3MgaW5mbHVlbmNlIG9uIHNoZWFyWCwgMC0xLiAqL1xuXHRzaGVhclggPSAwO1xuXG5cdC8qKiBNb3ZlbWVudCBncmVhdGVyIHRoYW4gdGhlIGxpbWl0IHdpbGwgbm90IGhhdmUgYSBncmVhdGVyIGFmZmVjdCBvbiBwaHlzaWNzLiAqL1xuXHRsaW1pdCA9IDA7XG5cblx0LyoqIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyByZXF1aXJlZCB0byBhZHZhbmNlZCB0aGUgcGh5c2ljcyBzaW11bGF0aW9uIG9uZSBzdGVwLiAqL1xuXHRzdGVwID0gMDtcblxuXHQvKiogVHJ1ZSB3aGVuIHRoaXMgY29uc3RyYWludCdzIGluZXJ0aWEgaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0aW5lcnRpYUdsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBUcnVlIHdoZW4gdGhpcyBjb25zdHJhaW50J3Mgc3RyZW5ndGggaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0c3RyZW5ndGhHbG9iYWwgPSBmYWxzZTtcblxuXHQvKiogVHJ1ZSB3aGVuIHRoaXMgY29uc3RyYWludCdzIGRhbXBpbmcgaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0ZGFtcGluZ0dsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBUcnVlIHdoZW4gdGhpcyBjb25zdHJhaW50J3MgbWFzcyBpcyBjb250cm9sbGVkIGJ5IGdsb2JhbCBzbGlkZXIgdGltZWxpbmVzLiAqL1xuXHRtYXNzR2xvYmFsID0gZmFsc2U7XG5cblx0LyoqIFRydWUgd2hlbiB0aGlzIGNvbnN0cmFpbnQncyB3aW5kIGlzIGNvbnRyb2xsZWQgYnkgZ2xvYmFsIHNsaWRlciB0aW1lbGluZXMuICovXG5cdHdpbmRHbG9iYWwgPSBmYWxzZTtcblxuXHQvKiogVHJ1ZSB3aGVuIHRoaXMgY29uc3RyYWludCdzIGdyYXZpdHkgaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0Z3Jhdml0eUdsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBUcnVlIHdoZW4gdGhpcyBjb25zdHJhaW50J3MgbWl4IGlzIGNvbnRyb2xsZWQgYnkgZ2xvYmFsIHNsaWRlciB0aW1lbGluZXMuICovXG5cdG1peEdsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBEZXRlcm1pbmVzIGhvdyB0aGUge0BsaW5rIEJvbmVQb3NlLnNjYWxlWX0gY2hhbmdlcyB3aGVuIHtAbGluayBCb25lUG9zZS5zY2FsZVh9IHNldHNcblx0ICoge0BsaW5rIEJvbmVQb3NlLnNjYWxlWH0uICovXG5cdHByaXZhdGUgX3NjYWxlWU1vZGUgPSBTY2FsZVlNb2RlLk5vbmU7XG5cdGdldCBzY2FsZVlNb2RlICgpOiBTY2FsZVlNb2RlIHtcblx0XHRyZXR1cm4gdGhpcy5fc2NhbGVZTW9kZTtcblx0fVxuXHRzZXQgc2NhbGVZTW9kZSAoc2NhbGVZTW9kZTogU2NhbGVZTW9kZSkge1xuXHRcdGlmIChzY2FsZVlNb2RlID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInNjYWxlWU1vZGUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHRoaXMuX3NjYWxlWU1vZGUgPSBzY2FsZVlNb2RlO1xuXHR9XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUsIG5ldyBQaHlzaWNzQ29uc3RyYWludFBvc2UoKSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlIChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRyZXR1cm4gbmV3IFBoeXNpY3NDb25zdHJhaW50KHRoaXMsIHNrZWxldG9uKTtcblx0fVxufVxuIl19