# NLA for Slotted Actions WIP PR: https://projects.blender.org/blender/blender/pulls/125500/files ## PR 1 - small refactor - [x] Need to expose `EvaluationResult` and `evaluate_action()` as public, for use in the NLA system. ## PR 2 - push down and adding strips - [x] DNA_anim_types.h `NlaStrip` type needs `act_slot_handle` to accompany `act`. - [x] Needs to be exposed to RNA. - [x] Needs to be added to the Strip properties UI. - [x] Add to slot users. - [x] There is a guard clause in action_data.cc `action_pushdown_exec()` that needs to be updated to account for layered actions. Otherwise pushdown will refuse to work for layered actions. Probably the same for adding strips from a menu. - [x] When adding action strips from a menu, an effort should be made to automatically determine the slot to use. Maybe even refuse to add the strip if an appropriate slot can't be found? ## PR 3 - evaluation (sans strip modifiers) - [x] The following depsgraph code must be updated to get the depsgraph relations built for strips with layered actions: deg_builder_relations.cc `DepsgraphRelationBuilder::build_animdata_nlastrip_targets()` - [x] anim_sys.cc `nla_eval_domain_action()` needs to be updated so that it registers the animated channels of the layered action as affecting the overall NLA. - [x] anim_sys.cc `nlasnapshot_from_action()` needs to be updated to evaluate layered actions as well. Skip handling modifiers until later. - [x] The else clause in anim_sys.cc `animsys_calculate_nla()` also needs to handle layered actions. - [x] anim_sys.cc `animsys_create_action_track_strip()` needs to be updated to handle layered actions. ## PR 4 - tweak mode - [x] Tweak mode needs a `tmpact_slot_handle` field in animdata to accompany the `tmpact` field, and it needs to be swapped along with it. ## PR 5 - strip modifiers - [x] Figure out how to handle strip modifiers, which are executed in anim_sys.cc `nlasnapshot_from_action()`.