diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2018-11-07 18:05:22 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2018-11-11 12:42:13 +0300 |
commit | 0dea135a36e5f9d06c60270f0bcca64a20a2cbd6 (patch) | |
tree | 2d1fbc6791e71443ddce9171c5f7fd8bddfe5eb9 /source/blender/editors/space_action | |
parent | d81d77d17c13b63a045b434f235f6a802a466955 (diff) |
NLA: fix frame mapping applied twice keyframing from graph/action editors.
The insert_keyframe function already applies NLA strip to action
time remapping, so doing it in insert_graph_keys/insert_action_keys
is redundant outside the code path that inserts directly into fcurve.
Diffstat (limited to 'source/blender/editors/space_action')
-rw-r--r-- | source/blender/editors/space_action/action_edit.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index 4cec73f306b..377698d931c 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -700,15 +700,8 @@ static void insert_action_keys(bAnimContext *ac, short mode) /* insert keyframes */ for (ale = anim_data.first; ale; ale = ale->next) { - AnimData *adt = ANIM_nla_mapping_get(ac, ale); FCurve *fcu = (FCurve *)ale->key_data; - float cfra; - - /* adjust current frame for NLA-scaling */ - if (adt) - cfra = BKE_nla_tweakedit_remap(adt, (float)CFRA, NLATIME_CONVERT_UNMAP); - else - cfra = (float)CFRA; + float cfra = (float)CFRA; /* read value from property the F-Curve represents, or from the curve only? * - ale->id != NULL: Typically, this means that we have enough info to try resolving the path @@ -721,6 +714,12 @@ static void insert_action_keys(bAnimContext *ac, short mode) fcu->rna_path, fcu->array_index, cfra, ts->keyframe_type, flag); } else { + AnimData *adt = ANIM_nla_mapping_get(ac, ale); + + /* adjust current frame for NLA-scaling */ + if (adt) + cfra = BKE_nla_tweakedit_remap(adt, (float)CFRA, NLATIME_CONVERT_UNMAP); + const float curval = evaluate_fcurve(fcu, cfra); insert_vert_fcurve(fcu, cfra, curval, ts->keyframe_type, 0); } |