From e210e20524de049f30b71b32e191de71cddba18c Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Thu, 12 Jun 2025 15:36:37 +0200 Subject: [PATCH] [haxe] 4.3 porting WIP - TC constants. --- spine-haxe/spine-haxe/spine/SkeletonBinary.hx | 12 ++--- spine-haxe/spine-haxe/spine/SkeletonJson.hx | 12 ++--- .../spine/TransformConstraintData.hx | 45 +++++++++++-------- .../spine/attachments/RegionAttachment.hx | 22 ++++----- 4 files changed, 49 insertions(+), 42 deletions(-) diff --git a/spine-haxe/spine-haxe/spine/SkeletonBinary.hx b/spine-haxe/spine-haxe/spine/SkeletonBinary.hx index e4e7060aa..50f9a0e03 100644 --- a/spine-haxe/spine-haxe/spine/SkeletonBinary.hx +++ b/spine-haxe/spine-haxe/spine/SkeletonBinary.hx @@ -307,12 +307,12 @@ class SkeletonBinary { froms[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(); var setup = data.setup; if ((flags & 1) != 0) setup.mixRotate = input.readFloat(); diff --git a/spine-haxe/spine-haxe/spine/SkeletonJson.hx b/spine-haxe/spine-haxe/spine/SkeletonJson.hx index 5cc70d561..31e7dbcf2 100644 --- a/spine-haxe/spine-haxe/spine/SkeletonJson.hx +++ b/spine-haxe/spine-haxe/spine/SkeletonJson.hx @@ -262,12 +262,12 @@ class SkeletonJson { if (from.to.length > 0) data.properties.push(from); } - data.offsets[0] = getFloat(constraintMap, "rotation", 0); - data.offsets[1] = getFloat(constraintMap, "x", 0) * scale; - data.offsets[2] = getFloat(constraintMap, "y", 0) * scale; - data.offsets[3] = getFloat(constraintMap, "scaleX", 0); - data.offsets[4] = getFloat(constraintMap, "scaleY", 0); - data.offsets[5] = getFloat(constraintMap, "shearY", 0); + data.offsets[TransformConstraintData.ROTATION] = getFloat(constraintMap, "rotation", 0); + data.offsets[TransformConstraintData.X] = getFloat(constraintMap, "x", 0) * scale; + data.offsets[TransformConstraintData.Y] = getFloat(constraintMap, "y", 0) * scale; + data.offsets[TransformConstraintData.SCALEX] = getFloat(constraintMap, "scaleX", 0); + data.offsets[TransformConstraintData.SCALEY] = getFloat(constraintMap, "scaleY", 0); + data.offsets[TransformConstraintData.SHEARY] = getFloat(constraintMap, "shearY", 0); var setup = data.setup; if (rotate) setup.mixRotate = getFloat(constraintMap, "mixRotate", 1); diff --git a/spine-haxe/spine-haxe/spine/TransformConstraintData.hx b/spine-haxe/spine-haxe/spine/TransformConstraintData.hx index 09d7df83c..2c1ec1073 100644 --- a/spine-haxe/spine-haxe/spine/TransformConstraintData.hx +++ b/spine-haxe/spine-haxe/spine/TransformConstraintData.hx @@ -36,6 +36,13 @@ package spine; * @see https://esotericsoftware.com/spine-transform-constraints Transform constraints in the Spine User Guide */ class TransformConstraintData extends ConstraintData { + public static inline final ROTATION = 0; + public static inline final X = 1; + public static inline final Y = 2; + public static inline final SCALEX = 3; + public static inline final SCALEY = 4; + public static inline final SHEARY = 5; + /** The bones that will be modified by this transform constraint. */ public final bones:Array = new Array(); @@ -90,61 +97,61 @@ class TransformConstraintData extends ConstraintData):Float { - if (local) return source.rotation + offsets[0]; + if (local) return source.rotation + offsets[TransformConstraintData.ROTATION]; var 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; } @@ -225,7 +232,7 @@ class ToRotate extends ToProperty { class FromX extends FromProperty { public function value (source:BonePose, local:Bool, offsets:Array):Float { - 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; } } @@ -247,7 +254,7 @@ class ToX extends ToProperty { class FromY extends FromProperty { public function value (source:BonePose, local:Bool, offsets:Array):Float { - 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; } } @@ -269,7 +276,7 @@ class ToY extends ToProperty { class FromScaleX extends FromProperty { public function value (source:BonePose, local:Bool, offsets:Array):Float { - 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]; } } @@ -300,7 +307,7 @@ class ToScaleX extends ToProperty { class FromScaleY extends FromProperty { public function value (source:BonePose, local:Bool, offsets:Array):Float { - 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]; } } @@ -331,7 +338,7 @@ class ToScaleY extends ToProperty { class FromShearY extends FromProperty { public function value (source:BonePose, local:Bool, offsets:Array):Float { - 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]; } } diff --git a/spine-haxe/spine-haxe/spine/attachments/RegionAttachment.hx b/spine-haxe/spine-haxe/spine/attachments/RegionAttachment.hx index efe6e103a..331312865 100644 --- a/spine-haxe/spine-haxe/spine/attachments/RegionAttachment.hx +++ b/spine-haxe/spine-haxe/spine/attachments/RegionAttachment.hx @@ -68,7 +68,7 @@ class RegionAttachment extends Attachment implements HasTextureRegion { /** For each of the 4 vertices, a pair of x,y values that is the local position of the vertex. * * See RegionAttachment.updateRegion(). */ - private var offsets:Array = new Array(); + private var offset:Array = new Array(); public var uvs:Array = new Array(); @@ -116,14 +116,14 @@ class RegionAttachment extends Attachment implements HasTextureRegion { var localY2Cos = localY2 * cos + y; var localY2Sin = localY2 * sin; - offsets[0] = localXCos - localYSin; - offsets[1] = localYCos + localXSin; - offsets[2] = localXCos - localY2Sin; - offsets[3] = localY2Cos + localXSin; - offsets[4] = localX2Cos - localY2Sin; - offsets[5] = localY2Cos + localX2Sin; - offsets[6] = localX2Cos - localYSin; - offsets[7] = localYCos + localX2Sin; + offset[0] = localXCos - localYSin; + offset[1] = localYCos + localXSin; + offset[2] = localXCos - localY2Sin; + offset[3] = localY2Cos + localXSin; + offset[4] = localX2Cos - localY2Sin; + offset[5] = localY2Cos + localX2Sin; + offset[6] = localX2Cos - localYSin; + offset[7] = localYCos + localX2Sin; if (region.degrees == 90) { uvs[0] = region.u2; @@ -156,7 +156,7 @@ class RegionAttachment extends Attachment implements HasTextureRegion { public function computeWorldVertices(slot:Slot, worldVertices:Array, offset:Int, stride:Int):Void { if (sequence != null) sequence.apply(slot.applied, this); - var vertexOffset = this.offsets; + var vertexOffset = this.offset; var bone = slot.bone.applied; var x = bone.worldX, y = bone.worldY; var a = bone.a, b = bone.b, c = bone.c, d = bone.d; @@ -198,7 +198,7 @@ class RegionAttachment extends Attachment implements HasTextureRegion { copy.width = width; copy.height = height; copy.uvs = uvs.copy(); - copy.offsets = offsets.copy(); + copy.offset = offset.copy(); copy.color.setFromColor(color); copy.sequence = sequence != null ? sequence.copy() : null; return copy;