NLA: rewrite evaluation channel data structures.
authorAlexander Gavrilov <angavrilov@gmail.com>
Sat, 15 Dec 2018 13:09:27 +0000 (16:09 +0300)
committerAlexander Gavrilov <angavrilov@gmail.com>
Sat, 5 Jan 2019 07:52:43 +0000 (10:52 +0300)
commit57d4b869be387767be51fe1f9d819904c342d692
treec065219056d1575e69292d9bc997856ab92dc530
parenta77b63c56943ebd0046f738e6abbea4c85dc65b6
NLA: rewrite evaluation channel data structures.

Implementing a new intelligent mixing mode that combines quaternions
via multiplication requires rewriting the NLA code to recombine array
properties from separate scalar channels during evaluation.

In addition, stable evaluation of NLA stack requires that any channel
that is touched by any of the actions in the stack should always be
set to a definite value by evaluation, even if no strip affects it
at this point of the timeline. The obvious choice for the fallback
is the default value of the property.

To make scanning all actions reasonably efficient, mapping paths to
channels should be done using hash tables.

Differential Revision: https://developer.blender.org/D4120
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/nla_private.h