adding shape key blocks to absolute shape keys would not set the position (which is odd since its the only time they are used).

also re-sort the shape keys after adding them in for absolute keyblocks.
This commit is contained in:
Campbell Barton 2012-04-05 05:51:26 +00:00
parent 0aa6ade75a
commit f4ccee2785
2 changed files with 11 additions and 13 deletions

@ -1136,9 +1136,11 @@ static void do_mesh_key(Scene *scene, Object *ob, Key *key, char *out, const int
else {
if (key->type==KEY_RELATIVE) {
KeyBlock *kb;
for (kb= key->block.first; kb; kb= kb->next)
float f = 0.0;
for (kb= key->block.first; kb; kb= kb->next, f += 0.1f) {
kb->weights= get_weights_array(ob, kb->vgroup);
// kb->pos = f;
}
do_rel_key(0, tot, tot, (char *)out, key, actkb, KEY_MODE_DUMMY);
@ -1472,18 +1474,12 @@ KeyBlock *add_keyblock(Key *key, const char *name)
kb->slidermax= 1.0f;
// XXX kb->pos is the confusing old horizontal-line RVK crap in old IPO Editor...
if (key->type == KEY_RELATIVE)
if (key->type == KEY_RELATIVE) {
kb->pos= curpos + 0.1f;
}
else {
#if 0 // XXX old animation system
curpos= BKE_curframe(scene);
if (calc_ipo_spec(key->ipo, KEY_SPEED, &curpos)==0) {
curpos /= 100.0;
}
kb->pos= curpos;
kb->pos = key->ctime / 100.0f;
sort_keys(key);
#endif // XXX old animation system
}
return kb;
}

@ -76,9 +76,11 @@
static void ED_object_shape_key_add(bContext *C, Scene *scene, Object *ob, int from_mix)
{
if (object_insert_shape_key(scene, ob, NULL, from_mix)) {
KeyBlock *kb;
if ((kb = object_insert_shape_key(scene, ob, NULL, from_mix))) {
Key *key= ob_get_key(ob);
ob->shapenr= BLI_countlist(&key->block);
/* for absolute shape keys, new keys may not be added last */
ob->shapenr = BLI_findindex(&key->block, kb) + 1;
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
}