Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2018-11-07 18:05:22 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2018-11-11 12:42:13 +0300
commit0dea135a36e5f9d06c60270f0bcca64a20a2cbd6 (patch)
tree2d1fbc6791e71443ddce9171c5f7fd8bddfe5eb9 /source/blender/editors/space_action
parentd81d77d17c13b63a045b434f235f6a802a466955 (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.c15
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);
}