Three fixes;

- On file reading, a check is added to see if a Pose has channels to
  missing bones. Poses are supposed to match an Armature completely.
  (Thanks for crash file, Johnny!... but how did you do it!)

- Own collection: added depsgraph update on setting all layers (with the
  ACCENTGRAVEKEY). This also could potentially crash with modifiers

- Renamed Xkey menu in NLA to more properly tell what it does. :)
This commit is contained in:
Ton Roosendaal
2005-12-14 20:36:04 +00:00
parent 8304b73a08
commit e64008e2c7
3 changed files with 11 additions and 1 deletions

View File

@@ -1379,6 +1379,7 @@ static void lib_link_pose(FileData *fd, Object *ob, bPose *pose)
{
bPoseChannel *pchan;
bArmature *arm= ob->data;
int rebuild= 0;
if (!pose)
return;
@@ -1386,6 +1387,12 @@ static void lib_link_pose(FileData *fd, Object *ob, bPose *pose)
lib_link_constraints(fd, (ID *)ob, &pchan->constraints);
// hurms... loop in a loop, but yah... later... (ton)
pchan->bone= get_named_bone(arm, pchan->name);
if(pchan->bone==NULL)
rebuild= 1;
}
if(rebuild) {
ob->recalc= OB_RECALC;
pose->flag |= POSE_RECALC;
}
}

View File

@@ -1168,7 +1168,7 @@ void delete_nlachannel_keys(void)
bConstraintChannel *conchan;
bActionStrip *strip, *nextstrip;
if (!okee("Erase selected keys"))
if (!okee("Erase selected strips and/or keys"))
return;
for (base = G.scene->base.first; base; base=base->next){

View File

@@ -157,6 +157,9 @@ void do_layer_buttons(short event)
if(G.vd->scenelock) handle_view3d_lock();
scrarea_queue_winredraw(curarea);
/* new layers might need unflushed events events */
DAG_scene_update_flags(G.scene, G.vd->lay); // tags all that moves and flushes
}
else {
if(G.qual & LR_ALTKEY) {