64 lines
9.2 KiB
JavaScript
64 lines
9.2 KiB
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.
|
|
*****************************************************************************/
|
|
import { Utils } from "./Utils.js";
|
|
/** Stores the skeleton's draw order, which is the order that each slot's attachment is rendered. */
|
|
export class DrawOrder {
|
|
_setupPose;
|
|
/** The unconstrained draw order, set by animations and application code. */
|
|
pose;
|
|
constrainedPose;
|
|
/** The constrained draw order for rendering. If no constraints modify the draw order, this is the same as {@link pose}.
|
|
* Otherwise it is a copy of {@link pose} modified by constraints. */
|
|
appliedPose;
|
|
constructor(setupPose) {
|
|
this._setupPose = setupPose;
|
|
this.pose = [...setupPose];
|
|
this.constrainedPose = [];
|
|
this.appliedPose = this.pose;
|
|
}
|
|
/** Sets the unconstrained draw order to the setup pose order. */
|
|
setupPose() {
|
|
this.pose.length = this._setupPose.length;
|
|
Utils.arrayCopy(this._setupPose, 0, this.pose, 0, this._setupPose.length);
|
|
}
|
|
/** Sets the applied pose to the unconstrained pose, for when no constraints will modify the draw order. */
|
|
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;
|
|
}
|
|
/** Copies the unconstrained pose to the constrained pose, as a starting point for constraints to be applied. */
|
|
resetConstrained() {
|
|
this.constrainedPose.length = this.pose.length;
|
|
Utils.arrayCopy(this.pose, 0, this.constrainedPose, 0, this.pose.length);
|
|
}
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJhd09yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0RyYXdPcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVuQyxvR0FBb0c7QUFDcEcsTUFBTSxPQUFPLFNBQVM7SUFDWixVQUFVLENBQVM7SUFFNUIsNEVBQTRFO0lBQ25FLElBQUksQ0FBUztJQUNiLGVBQWUsQ0FBUztJQUVqQzt5RUFDcUU7SUFDckUsV0FBVyxDQUFTO0lBRXBCLFlBQWEsU0FBaUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpRUFBaUU7SUFDakUsU0FBUztRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQzFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsMkdBQTJHO0lBQzNHLGFBQWE7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELHdIQUF3SDtJQUN4SCxXQUFXO1FBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxnSEFBZ0g7SUFDaEgsZ0JBQWdCO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBTbG90IH0gZnJvbSBcIi4vU2xvdC5qc1wiO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG4vKiogU3RvcmVzIHRoZSBza2VsZXRvbidzIGRyYXcgb3JkZXIsIHdoaWNoIGlzIHRoZSBvcmRlciB0aGF0IGVhY2ggc2xvdCdzIGF0dGFjaG1lbnQgaXMgcmVuZGVyZWQuICovXG5leHBvcnQgY2xhc3MgRHJhd09yZGVyIHtcblx0cmVhZG9ubHkgX3NldHVwUG9zZTogU2xvdFtdO1xuXG5cdC8qKiBUaGUgdW5jb25zdHJhaW5lZCBkcmF3IG9yZGVyLCBzZXQgYnkgYW5pbWF0aW9ucyBhbmQgYXBwbGljYXRpb24gY29kZS4gKi9cblx0cmVhZG9ubHkgcG9zZTogU2xvdFtdO1xuXHRyZWFkb25seSBjb25zdHJhaW5lZFBvc2U6IFNsb3RbXTtcblxuXHQvKiogVGhlIGNvbnN0cmFpbmVkIGRyYXcgb3JkZXIgZm9yIHJlbmRlcmluZy4gSWYgbm8gY29uc3RyYWludHMgbW9kaWZ5IHRoZSBkcmF3IG9yZGVyLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHtAbGluayBwb3NlfS5cblx0ICogT3RoZXJ3aXNlIGl0IGlzIGEgY29weSBvZiB7QGxpbmsgcG9zZX0gbW9kaWZpZWQgYnkgY29uc3RyYWludHMuICovXG5cdGFwcGxpZWRQb3NlOiBTbG90W107XG5cblx0Y29uc3RydWN0b3IgKHNldHVwUG9zZTogU2xvdFtdKSB7XG5cdFx0dGhpcy5fc2V0dXBQb3NlID0gc2V0dXBQb3NlO1xuXHRcdHRoaXMucG9zZSA9IFsuLi5zZXR1cFBvc2VdO1xuXHRcdHRoaXMuY29uc3RyYWluZWRQb3NlID0gW107XG5cdFx0dGhpcy5hcHBsaWVkUG9zZSA9IHRoaXMucG9zZTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB1bmNvbnN0cmFpbmVkIGRyYXcgb3JkZXIgdG8gdGhlIHNldHVwIHBvc2Ugb3JkZXIuICovXG5cdHNldHVwUG9zZSAoKSB7XG5cdFx0dGhpcy5wb3NlLmxlbmd0aCA9IHRoaXMuX3NldHVwUG9zZS5sZW5ndGg7XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMuX3NldHVwUG9zZSwgMCwgdGhpcy5wb3NlLCAwLCB0aGlzLl9zZXR1cFBvc2UubGVuZ3RoKTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBhcHBsaWVkIHBvc2UgdG8gdGhlIHVuY29uc3RyYWluZWQgcG9zZSwgZm9yIHdoZW4gbm8gY29uc3RyYWludHMgd2lsbCBtb2RpZnkgdGhlIGRyYXcgb3JkZXIuICovXG5cdHVuY29uc3RyYWluZWQgKCkge1xuXHRcdHRoaXMuYXBwbGllZFBvc2UgPSB0aGlzLnBvc2U7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgYXBwbGllZCBwb3NlIHRvIHRoZSBjb25zdHJhaW5lZCBwb3NlLCBpbiBhbnRpY2lwYXRpb24gb2YgdGhlIGFwcGxpZWQgcG9zZSBiZWluZyBtb2RpZmllZCBieSBjb25zdHJhaW50cy4gKi9cblx0Y29uc3RyYWluZWQgKCkge1xuXHRcdHRoaXMuYXBwbGllZFBvc2UgPSB0aGlzLmNvbnN0cmFpbmVkUG9zZTtcblx0fVxuXG5cdC8qKiBDb3BpZXMgdGhlIHVuY29uc3RyYWluZWQgcG9zZSB0byB0aGUgY29uc3RyYWluZWQgcG9zZSwgYXMgYSBzdGFydGluZyBwb2ludCBmb3IgY29uc3RyYWludHMgdG8gYmUgYXBwbGllZC4gKi9cblx0cmVzZXRDb25zdHJhaW5lZCAoKSB7XG5cdFx0dGhpcy5jb25zdHJhaW5lZFBvc2UubGVuZ3RoID0gdGhpcy5wb3NlLmxlbmd0aDtcblx0XHRVdGlscy5hcnJheUNvcHkodGhpcy5wb3NlLCAwLCB0aGlzLmNvbnN0cmFpbmVkUG9zZSwgMCwgdGhpcy5wb3NlLmxlbmd0aCk7XG5cdH1cbn1cbiJdfQ==
|