Depsgraph: Fix crash on undo of new bone added

Pose is not brought up to date for until exit of edit mode,
so can not use.
This commit is contained in:
Sergey Sharybin
2018-07-31 11:32:38 +02:00
parent ad5b611953
commit 75f1fb6d86
2 changed files with 9 additions and 4 deletions

View File

@@ -688,7 +688,8 @@ void BKE_pose_bone_done(struct Depsgraph *depsgraph,
invert_m4_m4(imat, pchan->bone->arm_mat);
mul_m4_m4m4(pchan->chan_mat, pchan->pose_mat, imat);
}
if (DEG_is_active(depsgraph)) {
bArmature *arm = (bArmature *)ob->data;
if (DEG_is_active(depsgraph) && arm->edbo == NULL) {
bPoseChannel *pchan_orig = pchan->orig_pchan;
copy_m4_m4(pchan_orig->pose_mat, pchan->pose_mat);
copy_m4_m4(pchan_orig->chan_mat, pchan->chan_mat);

View File

@@ -548,9 +548,13 @@ void update_special_pointers(const Depsgraph *depsgraph,
object_cow->runtime.mesh_orig = (Mesh *)object_cow->data;
}
if (object_cow->type == OB_ARMATURE) {
BKE_pose_remap_bone_pointers((bArmature *)object_cow->data,
object_cow->pose);
update_pose_orig_pointers(object_orig->pose, object_cow->pose);
const bArmature *armature_orig = (bArmature *)object_orig->data;
bArmature *armature_cow = (bArmature *)object_cow->data;
BKE_pose_remap_bone_pointers(armature_cow, object_cow->pose);
if (armature_orig->edbo == NULL) {
update_pose_orig_pointers(object_orig->pose,
object_cow->pose);
}
}
update_particle_system_orig_pointers(object_orig, object_cow);
break;