mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-04 14:24:53 +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 transformConstraintsCount = transformConstraints.size;
|
||||
updateCache.clear();
|
||||
|
||||
for (int i = 0, n = bones.size; i < n; i++) {
|
||||
Bone bone = bones.get(i);
|
||||
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++) {
|
||||
IkConstraint ikConstraint = ikConstraints.get(ii);
|
||||
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. */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user