From 3eb587c9883e6c8872406a65711d30615ceb4152 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Thu, 12 Jun 2025 15:27:18 +0200 Subject: [PATCH] [ts] 4.3 porting WIP - TC constants. --- spine-ts/spine-core/src/SkeletonBinary.ts | 12 ++--- spine-ts/spine-core/src/SkeletonJson.ts | 12 ++--- .../spine-core/src/TransformConstraintData.ts | 45 +++++++++++-------- 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/spine-ts/spine-core/src/SkeletonBinary.ts b/spine-ts/spine-core/src/SkeletonBinary.ts index f46ac7dba..8417e2ae1 100644 --- a/spine-ts/spine-core/src/SkeletonBinary.ts +++ b/spine-ts/spine-core/src/SkeletonBinary.ts @@ -235,12 +235,12 @@ export class SkeletonBinary { data.properties[ii] = from; } flags = input.readByte(); - if ((flags & 1) != 0) data.offsets[0] = input.readFloat(); - if ((flags & 2) != 0) data.offsets[1] = input.readFloat() * scale; - if ((flags & 4) != 0) data.offsets[2] = input.readFloat() * scale; - if ((flags & 8) != 0) data.offsets[3] = input.readFloat(); - if ((flags & 16) != 0) data.offsets[4] = input.readFloat(); - if ((flags & 32) != 0) data.offsets[5] = input.readFloat(); + if ((flags & 1) != 0) data.offsets[TransformConstraintData.ROTATION] = input.readFloat(); + if ((flags & 2) != 0) data.offsets[TransformConstraintData.X] = input.readFloat() * scale; + if ((flags & 4) != 0) data.offsets[TransformConstraintData.Y] = input.readFloat() * scale; + if ((flags & 8) != 0) data.offsets[TransformConstraintData.SCALEX] = input.readFloat(); + if ((flags & 16) != 0) data.offsets[TransformConstraintData.SCALEY] = input.readFloat(); + if ((flags & 32) != 0) data.offsets[TransformConstraintData.SHEARY] = input.readFloat(); flags = input.readByte(); const setup = data.setup; if ((flags & 1) != 0) setup.mixRotate = input.readFloat(); diff --git a/spine-ts/spine-core/src/SkeletonJson.ts b/spine-ts/spine-core/src/SkeletonJson.ts index d712e936c..41b36abd5 100644 --- a/spine-ts/spine-core/src/SkeletonJson.ts +++ b/spine-ts/spine-core/src/SkeletonJson.ts @@ -243,12 +243,12 @@ export class SkeletonJson { if (from.to.length > 0) data.properties.push(from); } - data.offsets[0] = getValue(constraintMap, "rotation", 0); - data.offsets[1] = getValue(constraintMap, "x", 0) * scale; - data.offsets[2] = getValue(constraintMap, "y", 0) * scale; - data.offsets[3] = getValue(constraintMap, "scaleX", 0); - data.offsets[4] = getValue(constraintMap, "scaleY", 0); - data.offsets[5] = getValue(constraintMap, "shearY", 0); + data.offsets[TransformConstraintData.ROTATION] = getValue(constraintMap, "rotation", 0); + data.offsets[TransformConstraintData.X] = getValue(constraintMap, "x", 0) * scale; + data.offsets[TransformConstraintData.Y] = getValue(constraintMap, "y", 0) * scale; + data.offsets[TransformConstraintData.SCALEX] = getValue(constraintMap, "scaleX", 0); + data.offsets[TransformConstraintData.SCALEY] = getValue(constraintMap, "scaleY", 0); + data.offsets[TransformConstraintData.SHEARY] = getValue(constraintMap, "shearY", 0); const setup = data.setup; if (rotate) setup.mixRotate = getValue(constraintMap, "mixRotate", 1); diff --git a/spine-ts/spine-core/src/TransformConstraintData.ts b/spine-ts/spine-core/src/TransformConstraintData.ts index 4da9b86d7..dec1597cf 100644 --- a/spine-ts/spine-core/src/TransformConstraintData.ts +++ b/spine-ts/spine-core/src/TransformConstraintData.ts @@ -39,6 +39,13 @@ import { BonePose } from "./BonePose.js"; * * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */ export class TransformConstraintData extends ConstraintData { + public static readonly ROTATION = 0; + public static readonly X = 1; + public static readonly Y = 2; + public static readonly SCALEX = 3; + public static readonly SCALEY = 4; + public static readonly SHEARY = 5; + /** The bones that will be modified by this transform constraint. */ bones = new Array(); @@ -83,56 +90,56 @@ export class TransformConstraintData extends ConstraintData): number { - if (local) return source.rotation + offsets[0]; + if (local) return source.rotation + offsets[TransformConstraintData.ROTATION]; let value = Math.atan2(source.c, source.a) * MathUtils.radDeg - + (source.a * source.d - source.b * source.c > 0 ? offsets[0] : -offsets[0]); + + (source.a * source.d - source.b * source.c > 0 ? offsets[TransformConstraintData.ROTATION] : -offsets[TransformConstraintData.ROTATION]); if (value < 0) value += 360; return value; } @@ -206,7 +213,7 @@ export class ToRotate extends ToProperty { export class FromX extends FromProperty { value (source: BonePose, local: boolean, offsets: Array): number { - return local ? source.x + offsets[1] : offsets[1] * source.a + offsets[2] * source.b + source.worldX; + return local ? source.x + offsets[TransformConstraintData.X] : offsets[TransformConstraintData.X] * source.a + offsets[TransformConstraintData.Y] * source.b + source.worldX; } } @@ -228,7 +235,7 @@ export class ToX extends ToProperty { export class FromY extends FromProperty { value (source: BonePose, local: boolean, offsets: Array): number { - return local ? source.y + offsets[2] : offsets[1] * source.c + offsets[2] * source.d + source.worldY; + return local ? source.y + offsets[TransformConstraintData.Y] : offsets[TransformConstraintData.X] * source.c + offsets[TransformConstraintData.Y] * source.d + source.worldY; } } @@ -250,7 +257,7 @@ export class ToY extends ToProperty { export class FromScaleX extends FromProperty { value (source: BonePose, local: boolean, offsets: Array): number { - return local ? source.scaleX : Math.sqrt(source.a * source.a + source.c * source.c) + offsets[3]; + return local ? source.scaleX : Math.sqrt(source.a * source.a + source.c * source.c) + offsets[TransformConstraintData.SCALEX]; } } @@ -281,7 +288,7 @@ export class ToScaleX extends ToProperty { export class FromScaleY extends FromProperty { value (source: BonePose, local: boolean, offsets: Array): number { - return local ? source.scaleY : Math.sqrt(source.b * source.b + source.d * source.d) + offsets[4]; + return local ? source.scaleY : Math.sqrt(source.b * source.b + source.d * source.d) + offsets[TransformConstraintData.SCALEY]; } } @@ -312,7 +319,7 @@ export class ToScaleY extends ToProperty { export class FromShearY extends FromProperty { value (source: BonePose, local: boolean, offsets: Array): number { - return (local ? source.shearY : (Math.atan2(source.d, source.b) - Math.atan2(source.c, source.a)) * MathUtils.radDeg - 90) + offsets[5]; + return (local ? source.shearY : (Math.atan2(source.d, source.b) - Math.atan2(source.c, source.a)) * MathUtils.radDeg - 90) + offsets[TransformConstraintData.SHEARY]; } }