diff options
author | Wayde Moss <GuiltyGhost> | 2021-02-04 00:23:18 +0300 |
---|---|---|
committer | Wayde Moss <wbmoss_dev@yahoo.com> | 2021-02-04 00:45:53 +0300 |
commit | 40b7929cc04005d25df69418adeb0a9e844d350a (patch) | |
tree | 78dc71896082eab99cc83bfce96f7ba1708bf879 /source/blender/blenkernel/nla_private.h | |
parent | 264af1519e08bf634401802e462ebd19eeba8b7b (diff) |
NLA: Extract nlasnapshot_blend()
Refactor
//nlastrip_evaluate_actionclip()// and //nlaeval_blend_value()// into
//nlasnapshot_blend()//, //nlastrip_evaluate_actionclip()//,
//nlasnapshot_from_action()//.
**Motivations**:
* {T83615} Requires reading all pose bone fcurves before being able to
apply pre-blend transforms. The function //nlasnapshot_from_action()//
achieves this. This effectively removed the need to specially handle
Quaternion blend queuing so that code has been removed.
* {D8296} Adds support for keyframe remapping through an upper stack of
strips. Instead of introducing a variant of the form:
//nlastrip_evaluate_actionclip_inverted_get_lower()//,
//nlastrip_evaluate_actionclip()// will later be extended to take an
`evaluation_mode` as input to avoid duplicating the recursion functions
related to //nlastrip_evaluate()//.
* //nlasnapshot_blend()// will eventually have variants of
//nlasnapshot_blend_get_inverted_lower_snapshot()// and
//nlasnapshot_blend_get_inverted_upper_snapshot()// which are all
independent of NlaStrips and NlaTracks, further simplifying the
blending implementation. Ideally, //nlastrip_evaluate()// would get
renamed to //nlasnapshot_blend_strip()// but that'll be a later patch
to avoid unnecessary patches slowing the review of more important
patches.
No User-side Functional changes
Reviewed By: sybren, #animation_rigging
Differential Revision: https://developer.blender.org/D10220
Diffstat (limited to 'source/blender/blenkernel/nla_private.h')
-rw-r--r-- | source/blender/blenkernel/nla_private.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/blenkernel/nla_private.h b/source/blender/blenkernel/nla_private.h index 034f3f39fd3..488bc5dc98b 100644 --- a/source/blender/blenkernel/nla_private.h +++ b/source/blender/blenkernel/nla_private.h @@ -106,12 +106,8 @@ typedef struct NlaEvalChannel { int index; bool is_array; - bool in_blend; char mix_mode; - struct NlaEvalChannel *next_blend; - NlaEvalChannelSnapshot *blend_snapshot; - /* Associated with the RNA property's value(s), marks which elements are affected by NLA. */ NlaValidMask domain; @@ -186,6 +182,13 @@ void nladata_flush_channels(PointerRNA *ptr, NlaEvalSnapshot *snapshot, const bool flush_to_original); +void nlasnapshot_blend(NlaEvalData *eval_data, + NlaEvalSnapshot *lower_snapshot, + NlaEvalSnapshot *upper_snapshot, + const short upper_blendmode, + const float upper_influence, + NlaEvalSnapshot *r_blended_snapshot); + #ifdef __cplusplus } #endif |