Fix autokeyframe not working on bones mirrored bones
The previous code for this didn't work as the MIRROR bone flag would be cleared before the autokeyframe code was run.
This commit is contained in:
@@ -429,7 +429,7 @@ static void bone_children_clear_transflag(int mode, short around, ListBase *lb)
|
||||
bone->flag |= BONE_TRANSFORM_CHILD;
|
||||
}
|
||||
else {
|
||||
bone->flag &= ~(BONE_TRANSFORM | BONE_TRANSFORM_MIRROR);
|
||||
bone->flag &= ~BONE_TRANSFORM;
|
||||
}
|
||||
|
||||
bone_children_clear_transflag(mode, around, &bone->childbase);
|
||||
@@ -455,14 +455,14 @@ int count_set_pose_transflags(Object *ob,
|
||||
bone->flag |= BONE_TRANSFORM;
|
||||
}
|
||||
else {
|
||||
bone->flag &= ~(BONE_TRANSFORM | BONE_TRANSFORM_MIRROR);
|
||||
bone->flag &= ~BONE_TRANSFORM;
|
||||
}
|
||||
|
||||
bone->flag &= ~BONE_HINGE_CHILD_TRANSFORM;
|
||||
bone->flag &= ~BONE_TRANSFORM_CHILD;
|
||||
}
|
||||
else {
|
||||
bone->flag &= ~(BONE_TRANSFORM | BONE_TRANSFORM_MIRROR);
|
||||
bone->flag &= ~BONE_TRANSFORM;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1542,8 +1542,8 @@ void autokeyframe_pose(bContext *C, Scene *scene, Object *ob, int tmode, short t
|
||||
}
|
||||
|
||||
for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
|
||||
if (pchan->bone->flag & (BONE_TRANSFORM | BONE_TRANSFORM_MIRROR)) {
|
||||
|
||||
if ((pchan->bone->flag & BONE_TRANSFORM) ||
|
||||
((pose->flag & POSE_MIRROR_EDIT) && (pchan->bone->flag & BONE_TRANSFORM_MIRROR))) {
|
||||
ListBase dsources = {NULL, NULL};
|
||||
|
||||
/* clear any 'unkeyed' flag it may have */
|
||||
|
||||
@@ -792,6 +792,12 @@ static void pose_transform_mirror_update(Object *ob, PoseInitData_Mirror *pid)
|
||||
unit_m4(flip_mtx);
|
||||
flip_mtx[0][0] = -1;
|
||||
|
||||
for (bPoseChannel *pchan_orig = ob->pose->chanbase.first; pchan_orig;
|
||||
pchan_orig = pchan_orig->next) {
|
||||
/* Clear the MIRROR flag from previous runs */
|
||||
pchan_orig->bone->flag &= ~BONE_TRANSFORM_MIRROR;
|
||||
}
|
||||
|
||||
for (bPoseChannel *pchan_orig = ob->pose->chanbase.first; pchan_orig;
|
||||
pchan_orig = pchan_orig->next) {
|
||||
/* no layer check, correct mirror is more important */
|
||||
|
||||
Reference in New Issue
Block a user