mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-06 18:56:54 +08:00
Changed bone sorting so transform behavior is consistent when IK and transform constraints are mixed.
This commit is contained in:
parent
d93e1507fc
commit
b0eec6f411
@ -132,16 +132,10 @@ public class Skeleton {
|
|||||||
int ikConstraintsCount = ikConstraints.size;
|
int ikConstraintsCount = ikConstraints.size;
|
||||||
int transformConstraintsCount = transformConstraints.size;
|
int transformConstraintsCount = transformConstraints.size;
|
||||||
updateCache.clear();
|
updateCache.clear();
|
||||||
|
|
||||||
for (int i = 0, n = bones.size; i < n; i++) {
|
for (int i = 0, n = bones.size; i < n; i++) {
|
||||||
Bone bone = bones.get(i);
|
Bone bone = bones.get(i);
|
||||||
updateCache.add(bone);
|
updateCache.add(bone);
|
||||||
for (int ii = 0; ii < transformConstraintsCount; ii++) {
|
|
||||||
TransformConstraint transformConstraint = transformConstraints.get(ii);
|
|
||||||
if (bone == transformConstraint.bone) {
|
|
||||||
updateCache.add(transformConstraint);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int ii = 0; ii < ikConstraintsCount; ii++) {
|
for (int ii = 0; ii < ikConstraintsCount; ii++) {
|
||||||
IkConstraint ikConstraint = ikConstraints.get(ii);
|
IkConstraint ikConstraint = ikConstraints.get(ii);
|
||||||
if (bone == ikConstraint.bones.peek()) {
|
if (bone == ikConstraint.bones.peek()) {
|
||||||
@ -150,6 +144,17 @@ public class Skeleton {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < transformConstraintsCount; i++) {
|
||||||
|
TransformConstraint transformConstraint = transformConstraints.get(i);
|
||||||
|
for (int ii = updateCache.size - 1; ii >= 0; ii--) {
|
||||||
|
Updatable object = updateCache.get(ii);
|
||||||
|
if (object == transformConstraint.bone || object == transformConstraint.target) {
|
||||||
|
updateCache.insert(ii + 1, transformConstraint);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Updates the world transform for each bone and applies constraints. */
|
/** Updates the world transform for each bone and applies constraints. */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user