Browse Source

[c][cpp] Port of additional fix for #1668.

badlogic 5 years ago
parent
commit
f3a9c0a535
2 changed files with 6 additions and 2 deletions
  1. 3 1
      spine-c/spine-c/src/spine/Bone.c
  2. 3 1
      spine-cpp/spine-cpp/src/spine/Bone.cpp

+ 3 - 1
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: {

+ 3 - 1
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: {