diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-01-13 00:20:09 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-01-13 00:20:09 +0300 |
commit | b39be6007576021fb377343cd880bfcc44b77031 (patch) | |
tree | 90ef38312c85bb513413b41484db98030de07e33 /source/blender/editors/space_action/action_select.c | |
parent | 63e80e271dd3f9f79fe3a85c10253ee6eea2ba4e (diff) |
NLA: fix keyframes getting messed up when making strips longer. For drawing
and other operations the nla mapping would be applied to the curves, but not
restored correctly. The unmap function was not the inverse of the map function,
and it's not clear to me it's even possible to make it so due to repeat, so
now the old coordinates are backed up in a list and then restored afterwards.
Diffstat (limited to 'source/blender/editors/space_action/action_select.c')
-rw-r--r-- | source/blender/editors/space_action/action_select.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c index 8eeed6da100..9155f57c7a0 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -417,9 +417,11 @@ static void markers_selectkeys_between (bAnimContext *ac) AnimData *adt= ANIM_nla_mapping_get(ac, ale); if (adt) { - ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); + ListBase nlabackup; + + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1, &nlabackup); ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); - ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1, &nlabackup); } else { ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); @@ -663,9 +665,11 @@ static void actkeys_mselect_leftright (bAnimContext *ac, short leftright, short AnimData *adt= ANIM_nla_mapping_get(ac, ale); if (adt) { - ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); + ListBase nlabackup; + + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1, &nlabackup); ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); - ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1, &nlabackup); } //else if (ale->type == ANIMTYPE_GPLAYER) // borderselect_gplayer_frames(ale->data, min, max, SELECT_ADD); |