From d93e1507fc6e0ec8e204625710a98159a81e8336 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Mon, 22 Feb 2016 10:18:16 +0100 Subject: [PATCH] Fixed disabling scale/rotation. closes #525 --- spine-as3/spine-as3/src/spine/Bone.as | 11 +++++++---- spine-c/src/spine/Bone.c | 3 +++ spine-csharp/src/Bone.cs | 3 +++ .../src/com/esotericsoftware/spine/Bone.java | 3 +++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/spine-as3/spine-as3/src/spine/Bone.as b/spine-as3/spine-as3/src/spine/Bone.as index ce1abcc74..ce1255b2f 100644 --- a/spine-as3/spine-as3/src/spine/Bone.as +++ b/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; diff --git a/spine-c/src/spine/Bone.c b/spine-c/src/spine/Bone.c index 8e31af7d4..89d3cee0e 100644 --- a/spine-c/src/spine/Bone.c +++ b/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; diff --git a/spine-csharp/src/Bone.cs b/spine-csharp/src/Bone.cs index 7f2966249..ed53caf47 100644 --- a/spine-csharp/src/Bone.cs +++ b/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; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java index 2695c9d67..cc7b5c0e6 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java +++ b/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;