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 2c4b63467..5038a48f4 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java @@ -54,7 +54,7 @@ public class Bone implements Updatable { float a, b, worldX; float c, d, worldY; - boolean sorted, update; + boolean sorted, visible; /** @param parent May be null. */ public Bone (BoneData data, Skeleton skeleton, Bone parent) { diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java index 1c23dbb1a..c72cd611d 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java @@ -166,15 +166,15 @@ public class Skeleton { for (int i = 0; i < boneCount; i++) { Bone bone = (Bone)bones[i]; bone.sorted = bone.data.skinRequired; - bone.update = !bone.sorted; + bone.visible = !bone.sorted; } if (skin != null) { Object[] skinBones = skin.bones.items; for (int i = 0, n = skin.bones.size; i < n; i++) { - Bone bone = (Bone)skinBones[i]; + Bone bone = (Bone)bones[((BoneData)skinBones[i]).index]; do { bone.sorted = false; - bone.update = true; + bone.visible = true; bone = bone.parent; } while (bone != null); } @@ -319,7 +319,7 @@ public class Skeleton { private void sortReset (Array bones) { for (int i = 0, n = bones.size; i < n; i++) { Bone bone = bones.get(i); - if (!bone.update) continue; + if (!bone.visible) continue; if (bone.sorted) sortReset(bone.children); bone.sorted = false; } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java index 32d28a8bc..e50afef80 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java @@ -88,6 +88,7 @@ public class SkeletonRenderer { Array drawOrder = skeleton.drawOrder; for (int i = 0, n = drawOrder.size; i < n; i++) { Slot slot = drawOrder.get(i); + if (!slot.bone.visible) continue; Attachment attachment = slot.attachment; if (attachment instanceof RegionAttachment) { RegionAttachment region = (RegionAttachment)attachment; @@ -166,6 +167,7 @@ public class SkeletonRenderer { Array drawOrder = skeleton.drawOrder; for (int i = 0, n = drawOrder.size; i < n; i++) { Slot slot = drawOrder.get(i); + if (!slot.bone.visible) continue; Texture texture = null; int vertexSize = clipper.isClipping() ? 2 : 5; Attachment attachment = slot.attachment; @@ -289,6 +291,7 @@ public class SkeletonRenderer { Array drawOrder = skeleton.drawOrder; for (int i = 0, n = drawOrder.size; i < n; i++) { Slot slot = drawOrder.get(i); + if (!slot.bone.visible) continue; Texture texture = null; int vertexSize = clipper.isClipping() ? 2 : 6; Attachment attachment = slot.attachment; diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java index 6343e83f7..82bb766e0 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRendererDebug.java @@ -84,7 +84,7 @@ public class SkeletonRendererDebug { if (drawBones) { for (int i = 0, n = bones.size; i < n; i++) { Bone bone = bones.get(i); - if (bone.parent == null) continue; + if (bone.parent == null || !bone.visible) continue; float length = bone.data.length, width = boneWidth; if (length == 0) { length = 8; @@ -239,6 +239,7 @@ public class SkeletonRendererDebug { shapes.setColor(boneOriginColor); for (int i = 0, n = bones.size; i < n; i++) { Bone bone = bones.get(i); + if (!bone.visible) continue; shapes.circle(bone.worldX, bone.worldY, 3 * scale, 8); } } @@ -294,7 +295,7 @@ public class SkeletonRendererDebug { public void setPoints (boolean points) { this.drawPoints = points; } - + public void setClipping (boolean clipping) { this.drawClipping = clipping; }