Эх сурвалжийг харах

Fixed disabling scale/rotation.

closes #525
NathanSweet 9 жил өмнө
parent
commit
d93e1507fc

+ 7 - 4
spine-as3/spine-as3/src/spine/Bone.as

@@ -124,7 +124,7 @@ public class Bone implements Updatable {
 			pb = 0;
 			pc = 0;
 			pd = 1;
-			while (parent != null) {
+			do {
 				radians = parent.appliedRotation * MathUtils.degRad;
 				cos = Math.cos(radians);
 				sin = Math.sin(radians);
@@ -134,8 +134,10 @@ public class Bone implements Updatable {
 				temp1 = pc * cos + pd * sin;
 				pd = pc * -sin + pd * cos;
 				pc = temp1;
+
+				if (!parent.data.inheritRotation) break;
 				parent = parent.parent;
-			}
+			} while (parent != null);
 			_a = pa * la + pb * lc;
 			_b = pa * lb + pb * ld;
 			_c = pc * la + pd * lc;
@@ -153,7 +155,7 @@ public class Bone implements Updatable {
 			pb = 0;
 			pc = 0;
 			pd = 1;
-			while (parent) {
+			do {
 				radians = parent.rotation * MathUtils.degRad;
 				cos = Math.cos(radians);
 				sin = Math.sin(radians);
@@ -176,8 +178,9 @@ public class Bone implements Updatable {
 				pd = pc * -sin + pd * cos;
 				pc = temp2;
 
+				if (!parent.data.inheritScale) break;
 				parent = parent.parent;
-			}
+			} while (parent != null);
 			_a = pa * la + pb * lc;
 			_b = pa * lb + pb * ld;
 			_c = pc * la + pd * lc;

+ 3 - 0
spine-c/src/spine/Bone.c

@@ -122,6 +122,8 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
 			temp = pc * cosine + pd * sine;
 			pd = pc * -sine + pd * cosine;
 			pc = temp;
+
+			if (!parent->data->inheritRotation) break;
 			parent = parent->parent;
 		} while (parent);
 		CONST_CAST(float, self->a) = pa * la + pb * lc;
@@ -168,6 +170,7 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
 			pd = pc * -sine + pd * cosine;
 			pc = temp;
 
+			if (!parent->data->inheritScale) break;
 			parent = parent->parent;
 		} while (parent);
 		CONST_CAST(float, self->a) = pa * la + pb * lc;

+ 3 - 0
spine-csharp/src/Bone.cs

@@ -153,6 +153,8 @@ namespace Spine {
 					temp = pc * cos + pd * sin;
 					pd = pc * -sin + pd * cos;
 					pc = temp;
+
+					if (!parent.data.inheritRotation) break;
 					parent = parent.parent;
 				} while (parent != null);
 				a = pa * la + pb * lc;
@@ -195,6 +197,7 @@ namespace Spine {
 					pd = pc * -sin + pd * cos;
 					pc = temp;
 
+					if (!parent.data.inheritScale) break;
 					parent = parent.parent;
 				} while (parent != null);
 				a = pa * la + pb * lc;

+ 3 - 0
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java

@@ -145,6 +145,8 @@ public class Bone implements Updatable {
 				temp = pc * cos + pd * sin;
 				pd = pc * -sin + pd * cos;
 				pc = temp;
+
+				if (!parent.data.inheritRotation) break;
 				parent = parent.parent;
 			} while (parent != null);
 			a = pa * la + pb * lc;
@@ -187,6 +189,7 @@ public class Bone implements Updatable {
 				pd = pc * -sin + pd * cos;
 				pc = temp;
 
+				if (!parent.data.inheritScale) break;
 				parent = parent.parent;
 			} while (parent != null);
 			a = pa * la + pb * lc;