From d1de3ce22ac2a5f61774bf574d2a551336d7f5bd Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Wed, 14 Dec 2016 18:30:56 +0100 Subject: [PATCH] Reduce bone transforms for local transform constraints. This is totally right in all scenarios. Right? Right. --- .../com/esotericsoftware/spine/Skeleton.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) 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 dd7f9cfd0..eee90befc 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java @@ -231,15 +231,15 @@ public class Skeleton { Array constrained = constraint.bones; int boneCount = constrained.size; - for (int ii = 0; ii < boneCount; ii++) - sortBone(constrained.get(ii)); + for (int i = 0; i < boneCount; i++) + sortBone(constrained.get(i)); updateCache.add(constraint); - for (int ii = 0; ii < boneCount; ii++) - sortReset(constrained.get(ii).children); - for (int ii = 0; ii < boneCount; ii++) - constrained.get(ii).sorted = true; + for (int i = 0; i < boneCount; i++) + sortReset(constrained.get(i).children); + for (int i = 0; i < boneCount; i++) + constrained.get(i).sorted = true; } private void sortTransformConstraint (TransformConstraint constraint) { @@ -247,15 +247,23 @@ public class Skeleton { Array constrained = constraint.bones; int boneCount = constrained.size; - for (int ii = 0; ii < boneCount; ii++) - sortBone(constrained.get(ii)); + if (constraint.data.local) { + for (int i = 0; i < boneCount; i++) { + Bone child = constrained.peek(); + sortBone(child.parent); + if (!updateCache.contains(child, true)) updateCacheReset.add(child); + } + } else { + for (int i = 0; i < boneCount; i++) + sortBone(constrained.get(i)); + } updateCache.add(constraint); - for (int ii = 0; ii < boneCount; ii++) - sortReset(constrained.get(ii).children); - for (int ii = 0; ii < boneCount; ii++) - constrained.get(ii).sorted = true; + for (int i = 0; i < boneCount; i++) + sortReset(constrained.get(i).children); + for (int i = 0; i < boneCount; i++) + constrained.get(i).sorted = true; } private void sortPathConstraintAttachment (Skin skin, int slotIndex, Bone slotBone) {