Explorar o código

[libgdx] Fixed bone disable inherit scale/reflection.

Nathan Sweet hai 2 meses
pai
achega
9272327990

+ 10 - 11
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/BonePose.java

@@ -99,8 +99,7 @@ public class BonePose extends BoneLocal implements Update {
 			d = pc * lb + pd * ld;
 		}
 		case noScale, noScaleOrReflection -> {
-			rotation *= degRad;
-			float cos = cos(rotation), sin = sin(rotation);
+			float r = rotation * degRad, cos = cos(r), sin = sin(r);
 			float za = (pa * cos + pb * sin) / skeleton.scaleX;
 			float zc = (pc * cos + pd * sin) / skeleton.scaleY;
 			float s = (float)Math.sqrt(za * za + zc * zc);
@@ -109,15 +108,15 @@ public class BonePose extends BoneLocal implements Update {
 			zc *= s;
 			s = (float)Math.sqrt(za * za + zc * zc);
 			if (inherit == Inherit.noScale && (pa * pd - pb * pc < 0) != (skeleton.scaleX < 0 != skeleton.scaleY < 0)) s = -s;
-			rotation = PI / 2 + atan2(zc, za);
-			float zb = cos(rotation) * s;
-			float zd = sin(rotation) * s;
-			shearX *= degRad;
-			shearY = (90 + shearY) * degRad;
-			float la = cos(shearX) * scaleX;
-			float lb = cos(shearY) * scaleY;
-			float lc = sin(shearX) * scaleX;
-			float ld = sin(shearY) * scaleY;
+			r = PI / 2 + atan2(zc, za);
+			float zb = cos(r) * s;
+			float zd = sin(r) * s;
+			float rx = shearX * degRad;
+			float ry = (90 + shearY) * degRad;
+			float la = cos(rx) * scaleX;
+			float lb = cos(ry) * scaleY;
+			float lc = sin(rx) * scaleX;
+			float ld = sin(ry) * scaleY;
 			a = za * la + zb * lc;
 			b = za * lb + zb * ld;
 			c = zc * la + zd * lc;