From f3a9c0a5353bcd83139401a562e4488816a06414 Mon Sep 17 00:00:00 2001 From: badlogic Date: Wed, 20 May 2020 16:18:23 +0200 Subject: [PATCH] [c][cpp] Port of additional fix for #1668. --- spine-c/spine-c/src/spine/Bone.c | 4 +++- spine-cpp/spine-cpp/src/spine/Bone.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/spine-c/spine-c/src/spine/Bone.c b/spine-c/spine-c/src/spine/Bone.c index f532472a0..0b589265c 100644 --- a/spine-c/spine-c/src/spine/Bone.c +++ b/spine-c/spine-c/src/spine/Bone.c @@ -121,6 +121,8 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota float prx, rx, ry, la, lb, lc, ld; if (s > 0.0001f) { s = ABS(pa * pd - pb * pc) / s; + pa /= self->skeleton->scaleX; + pc /= self->skeleton->scaleY; pb = pc * s; pd = pa * s; prx = ATAN2(pc, pa) * RAD_DEG; @@ -139,7 +141,7 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota CONST_CAST(float, self->b) = pa * lb - pb * ld; CONST_CAST(float, self->c) = pc * la + pd * lc; CONST_CAST(float, self->d) = pc * lb + pd * ld; - return; + break; } case SP_TRANSFORMMODE_NOSCALE: case SP_TRANSFORMMODE_NOSCALEORREFLECTION: { diff --git a/spine-cpp/spine-cpp/src/spine/Bone.cpp b/spine-cpp/spine-cpp/src/spine/Bone.cpp index 543236401..fb1b14133 100644 --- a/spine-cpp/spine-cpp/src/spine/Bone.cpp +++ b/spine-cpp/spine-cpp/src/spine/Bone.cpp @@ -150,6 +150,8 @@ void Bone::updateWorldTransform(float x, float y, float rotation, float scaleX, float prx, rx, ry, la, lb, lc, ld; if (s > 0.0001f) { s = MathUtil::abs(pa * pd - pb * pc) / s; + pa /= _skeleton.getScaleX(); + pc /= _skeleton.getScaleY(); pb = pc * s; pd = pa * s; prx = MathUtil::atan2(pc, pa) * MathUtil::Rad_Deg; @@ -168,7 +170,7 @@ void Bone::updateWorldTransform(float x, float y, float rotation, float scaleX, _b = pa * lb - pb * ld; _c = pc * la + pd * lc; _d = pc * lb + pd * ld; - return; + break; } case TransformMode_NoScale: case TransformMode_NoScaleOrReflection: {