|
Blender V4.5
|
#include <cfloat>#include <cmath>#include <cstddef>#include <cstdio>#include <cstring>#include "MEM_guardedalloc.h"#include "BLI_bit_vector.hh"#include "BLI_listbase.h"#include "BLI_listbase_wrapper.hh"#include "BLI_math_rotation.h"#include "BLI_math_vector.h"#include "BLI_math_vector_types.hh"#include "BLI_set.hh"#include "BLI_string.h"#include "BLI_string_utf8.h"#include "BLI_string_utils.hh"#include "BLI_utildefines.h"#include "BLT_translation.hh"#include "DNA_anim_types.h"#include "DNA_light_types.h"#include "DNA_material_types.h"#include "DNA_scene_types.h"#include "DNA_screen_types.h"#include "DNA_space_types.h"#include "DNA_texture_types.h"#include "DNA_world_types.h"#include "BKE_action.hh"#include "BKE_anim_data.hh"#include "BKE_animsys.h"#include "BKE_context.hh"#include "BKE_fcurve.hh"#include "BKE_global.hh"#include "BKE_idprop.hh"#include "BKE_lib_id.hh"#include "BKE_lib_query.hh"#include "BKE_main.hh"#include "BKE_material.hh"#include "BKE_nla.hh"#include "BKE_node.hh"#include "BKE_texture.h"#include "ANIM_action.hh"#include "ANIM_action_legacy.hh"#include "ANIM_evaluation.hh"#include "DEG_depsgraph.hh"#include "DEG_depsgraph_query.hh"#include "RNA_access.hh"#include "RNA_path.hh"#include "RNA_prototypes.hh"#include "BLO_read_write.hh"#include "nla_private.h"#include "CLG_log.h"Go to the source code of this file.
Macros | |
| #define | ANIMSYS_FLOAT_AS_BOOL(value) |
| #define | EVAL_ANIM_IDS(first, aflag) |
| #define | EVAL_ANIM_NODETREE_IDS(first, NtId_Type, aflag) |
Typedefs | |
| using | ActionAndSlot = std::pair<bAction *, animrig::slot_handle_t> |
| using | ActionAndSlotSet = Set<ActionAndSlot> |
Functions | |
| KS_Path * | BKE_keyingset_find_path (KeyingSet *ks, ID *id, const char group_name[], const char rna_path[], int array_index, int) |
| KeyingSet * | BKE_keyingset_add (ListBase *list, const char idname[], const char name[], short flag, short keyingflag) |
| KS_Path * | BKE_keyingset_add_path (KeyingSet *ks, ID *id, const char group_name[], const char rna_path[], int array_index, short flag, short groupmode) |
| void | BKE_keyingset_free_path (KeyingSet *ks, KS_Path *ksp) |
| void | BKE_keyingsets_copy (ListBase *newlist, const ListBase *list) |
| void | BKE_keyingsets_foreach_id (LibraryForeachIDData *data, const ListBase *keyingsets) |
| void | BKE_keyingset_free_paths (KeyingSet *ks) |
| void | BKE_keyingsets_free (ListBase *list) |
| void | BKE_keyingsets_blend_write (BlendWriter *writer, ListBase *list) |
| void | BKE_keyingsets_blend_read_data (BlendDataReader *reader, ListBase *list) |
| static bool | is_fcurve_evaluatable (const FCurve *fcu) |
| bool | BKE_animsys_rna_path_resolve (PointerRNA *ptr, const char *rna_path, const int array_index, PathResolvedRNA *r_result) |
| bool | BKE_animsys_read_from_rna_path (PathResolvedRNA *anim_rna, float *r_value) |
| bool | BKE_animsys_write_to_rna_path (PathResolvedRNA *anim_rna, const float value, const bool force_write) |
| static bool | animsys_construct_orig_pointer_rna (const PointerRNA *ptr, PointerRNA *ptr_orig) |
| static void | animsys_write_orig_anim_rna (PointerRNA *ptr, const char *rna_path, int array_index, float value) |
| static void | animsys_evaluate_fcurves (PointerRNA *ptr, Span< FCurve * > fcurves, const AnimationEvalContext *anim_eval_context, bool flush_to_original) |
| static void | animsys_quaternion_evaluate_fcurves (PathResolvedRNA quat_rna, Span< FCurve * > quat_fcurves, const AnimationEvalContext *anim_eval_context, float r_quaternion[4]) |
| static void | animsys_blend_fcurves_quaternion (PathResolvedRNA *anim_rna, Span< FCurve * > quaternion_fcurves, const AnimationEvalContext *anim_eval_context, const float blend_factor) |
| static void | animsys_blend_in_fcurves (PointerRNA *ptr, Span< FCurve * > fcurves, const AnimationEvalContext *anim_eval_context, const float blend_factor) |
| AnimationEvalContext | BKE_animsys_eval_context_construct (Depsgraph *depsgraph, float eval_time) |
| AnimationEvalContext | BKE_animsys_eval_context_construct_at (const AnimationEvalContext *anim_eval_context, float eval_time) |
| static void | animsys_evaluate_drivers (PointerRNA *ptr, AnimData *adt, const AnimationEvalContext *anim_eval_context) |
| static void | action_idcode_patch_check (ID *id, bAction *act) |
| void | animsys_evaluate_action_group (PointerRNA *ptr, bAction *act, bActionGroup *agrp, const AnimationEvalContext *anim_eval_context) |
| void | animsys_evaluate_action (PointerRNA *ptr, bAction *act, const int32_t action_slot_handle, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| void | animsys_blend_in_action (PointerRNA *ptr, bAction *act, const int32_t action_slot_handle, const AnimationEvalContext *anim_eval_context, const float blend_factor) |
| static float | nlastrip_get_influence (NlaStrip *strip, float cframe) |
| static void | nlastrip_evaluate_controls (NlaStrip *strip, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| NlaEvalStrip * | nlastrips_ctime_get_strip (ListBase *list, ListBase *strips, short index, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| static NlaEvalStrip * | nlastrips_ctime_get_strip_single (ListBase *dst_list, NlaStrip *single_strip, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| static void | nlavalidmask_init (NlaValidMask *mask, int bits) |
| static void | nlavalidmask_free (NlaValidMask *mask) |
| static uint | nlaevalchan_keyhash (const void *ptr) |
| static bool | nlaevalchan_keycmp (const void *a, const void *b) |
| static NlaEvalChannelSnapshot * | nlaevalchan_snapshot_new (NlaEvalChannel *nec) |
| static void | nlaevalchan_snapshot_free (NlaEvalChannelSnapshot *nec_snapshot) |
| static void | nlaevalchan_snapshot_copy (NlaEvalChannelSnapshot *dst, const NlaEvalChannelSnapshot *src) |
| static void | nlaeval_snapshot_init (NlaEvalSnapshot *snapshot, NlaEvalData *nlaeval, NlaEvalSnapshot *base) |
| static NlaEvalChannelSnapshot * | nlaeval_snapshot_get (NlaEvalSnapshot *snapshot, int index) |
| static void | nlaeval_snapshot_ensure_size (NlaEvalSnapshot *snapshot, int size) |
| static NlaEvalChannelSnapshot ** | nlaeval_snapshot_ensure_slot (NlaEvalSnapshot *snapshot, NlaEvalChannel *nec) |
| static NlaEvalChannelSnapshot * | nlaeval_snapshot_find_channel (NlaEvalSnapshot *snapshot, NlaEvalChannel *nec) |
| static NlaEvalChannelSnapshot * | nlaeval_snapshot_ensure_channel (NlaEvalSnapshot *snapshot, NlaEvalChannel *nec) |
| static void | nlaeval_snapshot_free_data (NlaEvalSnapshot *snapshot) |
| static void | nlaevalchan_free_data (NlaEvalChannel *nec) |
| static void | nlaeval_init (NlaEvalData *nlaeval) |
| static void | nlaeval_free (NlaEvalData *nlaeval) |
| static int | nlaevalchan_validate_index (const NlaEvalChannel *nec, int index) |
| static bool | nlaevalchan_validate_index_ex (const NlaEvalChannel *nec, const int array_index) |
| static void | nlaevalchan_get_default_values (NlaEvalChannel *nec, float *r_values) |
| static char | nlaevalchan_detect_mix_mode (NlaEvalChannelKey *key, int length) |
| static NlaEvalChannel * | nlaevalchan_verify_key (NlaEvalData *nlaeval, const char *path, NlaEvalChannelKey *key) |
| static NlaEvalChannel * | nlaevalchan_verify (PointerRNA *ptr, NlaEvalData *nlaeval, const char *path) |
| static bool | nla_blend_get_inverted_lower_value (const int blendmode, const float strip_value, const float blended_value, const float influence, float *r_lower_value) |
| static bool | nla_combine_get_inverted_lower_value (const int mix_mode, float base_value, const float strip_value, const float blended_value, const float influence, float *r_lower_value) |
| static void | nla_combine_quaternion_get_inverted_lower_values (const float strip_values[4], const float blended_values[4], const float influence, float r_lower_value[4]) |
| static float | nla_blend_value (const int blendmode, const float lower_value, const float strip_value, const float influence) |
| static float | nla_combine_value (const int mix_mode, float base_value, const float lower_value, const float strip_value, const float influence) |
| static bool | nla_blend_get_inverted_strip_value (const int blendmode, const float lower_value, const float blended_value, const float influence, float *r_strip_value) |
| static bool | nla_combine_get_inverted_strip_value (const int mix_mode, float base_value, const float lower_value, const float blended_value, const float influence, float *r_strip_value) |
| static void | nla_combine_quaternion (const float lower_values[4], const float strip_values[4], const float influence, float r_blended_value[4]) |
| static bool | nla_combine_quaternion_get_inverted_strip_values (const float lower_values[4], const float blended_values[4], const float influence, float r_strip_values[4]) |
| static void | nlaevalchan_assert_nonNull (const NlaEvalChannelSnapshot *necs) |
| static void | nlaevalchan_assert_blendOrcombine_compatible (const NlaEvalChannelSnapshot *lower_necs, const NlaEvalChannelSnapshot *upper_necs, const NlaEvalChannelSnapshot *blended_necs) |
| static bool | nlaevalchan_combine_quaternion_handle_undefined_blend_values (NlaEvalChannelSnapshot *blended_necs, NlaEvalChannelSnapshot *upper_or_lower_necs) |
| static void | nlaevalchan_assert_blendOrcombine_compatible_quaternion (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *upper_necs, NlaEvalChannelSnapshot *blended_necs) |
| static void | nlaevalchan_copy_values (NlaEvalChannelSnapshot *dst, const NlaEvalChannelSnapshot *src) |
| static bool | nlaevalchan_blendOrcombine_try_copy_from_lower (const NlaEvalChannelSnapshot *lower_necs, const NlaEvalChannelSnapshot *upper_necs, const float upper_influence, NlaEvalChannelSnapshot *r_blended_necs) |
| static bool | nlaevalchan_blendOrcombine_try_copy_to_lower (NlaEvalChannelSnapshot *blended_necs, NlaEvalChannelSnapshot *upper_necs, const float upper_influence, NlaEvalChannelSnapshot *r_lower_necs) |
| static void | nlaevalchan_blend_value (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *upper_necs, const int upper_blendmode, const float upper_influence, NlaEvalChannelSnapshot *r_blended_necs) |
| static void | nlaevalchan_combine_value (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *upper_necs, const float upper_influence, NlaEvalChannelSnapshot *r_blended_necs) |
| static void | nlaevalchan_combine_quaternion (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *upper_necs, const float upper_influence, NlaEvalChannelSnapshot *r_blended_necs) |
| static void | nlaevalchan_blendOrcombine (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *upper_necs, const int upper_blendmode, const float upper_influence, NlaEvalChannelSnapshot *r_blended_necs) |
| static void | nlaevalchan_blend_value_get_inverted_upper_evalchan (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *blended_necs, const int upper_blendmode, const float upper_influence, NlaEvalChannelSnapshot *r_upper_necs) |
| static void | nlaevalchan_combine_value_get_inverted_upper_evalchan (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *blended_necs, const float upper_influence, NlaEvalChannelSnapshot *r_upper_necs) |
| static void | nlaevalchan_combine_quaternion_get_inverted_upper_evalchan (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *blended_necs, const float upper_influence, NlaEvalChannelSnapshot *r_upper_necs) |
| static void | nlaevalchan_blendOrcombine_get_inverted_upper_evalchan (NlaEvalChannelSnapshot *lower_necs, NlaEvalChannelSnapshot *blended_necs, const int upper_blendmode, const float upper_influence, NlaEvalChannelSnapshot *r_upper_necs) |
| static void | nlaevalchan_blend_value_get_inverted_lower_evalchan (NlaEvalChannelSnapshot *blended_necs, NlaEvalChannelSnapshot *upper_necs, const int upper_blendmode, const float upper_influence, NlaEvalChannelSnapshot *r_lower_necs) |
| static void | nlaevalchan_combine_value_get_inverted_lower_evalchan (NlaEvalChannelSnapshot *blended_necs, NlaEvalChannelSnapshot *upper_necs, const float upper_influence, NlaEvalChannelSnapshot *r_lower_necs) |
| static void | nlaevalchan_combine_quaternion_get_inverted_lower_evalchan (NlaEvalChannelSnapshot *blended_necs, NlaEvalChannelSnapshot *upper_necs, const float upper_influence, NlaEvalChannelSnapshot *r_lower_necs) |
| static void | nlaevalchan_blendOrCombine_get_inverted_lower_evalchan (NlaEvalChannelSnapshot *blended_necs, NlaEvalChannelSnapshot *upper_necs, const int upper_blendmode, const float upper_influence, NlaEvalChannelSnapshot *r_lower_necs) |
| static void | nlaeval_fmodifiers_join_stacks (ListBase *result, ListBase *list1, ListBase *list2) |
| static void | nlaeval_fmodifiers_split_stacks (ListBase *list1, ListBase *list2) |
| static void | nlasnapshot_from_action (PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, bAction *action, const animrig::slot_handle_t slot_handle, const float evaltime, NlaEvalSnapshot *r_snapshot) |
| static void | nlastrip_evaluate_actionclip (const int evaluation_mode, PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot) |
| static void | nlastrip_evaluate_transition (const int evaluation_mode, PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| static void | nlastrip_evaluate_meta (const int evaluation_mode, PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| void | nlastrip_evaluate (const int evaluation_mode, PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| void | nlasnapshot_blend_strip (PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| void | nlasnapshot_blend_strip_get_inverted_lower_snapshot (PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const AnimationEvalContext *anim_eval_context) |
| void | nlasnapshot_blend_strip_no_blend (PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const AnimationEvalContext *anim_eval_context) |
| void | nladata_flush_channels (PointerRNA *ptr, NlaEvalData *channels, NlaEvalSnapshot *snapshot, const bool flush_to_original) |
| static void | nla_eval_domain_action (PointerRNA *ptr, NlaEvalData *channels, bAction *act, const animrig::slot_handle_t slot_handle, ActionAndSlotSet &touched_actions) |
| static void | nla_eval_domain_strips (PointerRNA *ptr, NlaEvalData *channels, ListBase *strips, ActionAndSlotSet &touched_actions) |
| static void | animsys_evaluate_nla_domain (PointerRNA *ptr, NlaEvalData *channels, AnimData *adt) |
| static void | animsys_create_tweak_strip (const AnimData *adt, const bool keyframing_to_strip, NlaStrip *r_tweak_strip) |
| static void | animsys_create_action_track_strip (const AnimData *adt, const bool keyframing_to_strip, NlaStrip *r_action_strip) |
| static bool | is_nlatrack_evaluatable (const AnimData *adt, const NlaTrack *nlt) |
| static bool | is_action_track_evaluated_without_nla (const AnimData *adt, const bool any_strip_evaluated) |
| static NlaTrack * | nlatrack_find_tweaked (const AnimData *adt) |
| static bool | animsys_evaluate_nla_for_flush (NlaEvalData *echannels, PointerRNA *ptr, const AnimData *adt, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| static void | animsys_evaluate_nla_for_keyframing (PointerRNA *ptr, const AnimData *adt, const AnimationEvalContext *anim_eval_context, NlaKeyframingContext *r_context) |
| static bool | animsys_calculate_nla (PointerRNA *ptr, AnimData *adt, const AnimationEvalContext *anim_eval_context, const bool flush_to_original) |
| void | nlasnapshot_enable_all_blend_domain (NlaEvalSnapshot *snapshot) |
| void | nlasnapshot_ensure_channels (NlaEvalData *eval_data, NlaEvalSnapshot *snapshot) |
| void | nlasnapshot_blend (NlaEvalData *eval_data, NlaEvalSnapshot *lower_snapshot, NlaEvalSnapshot *upper_snapshot, const short upper_blendmode, const float upper_influence, NlaEvalSnapshot *r_blended_snapshot) |
| void | nlasnapshot_blend_get_inverted_upper_snapshot (NlaEvalData *eval_data, NlaEvalSnapshot *lower_snapshot, NlaEvalSnapshot *blended_snapshot, const short upper_blendmode, const float upper_influence, NlaEvalSnapshot *r_upper_snapshot) |
| void | nlasnapshot_blend_get_inverted_lower_snapshot (NlaEvalData *eval_data, NlaEvalSnapshot *blended_snapshot, NlaEvalSnapshot *upper_snapshot, const short upper_blendmode, const float upper_influence, NlaEvalSnapshot *r_lower_snapshot) |
| NlaKeyframingContext * | BKE_animsys_get_nla_keyframing_context (ListBase *cache, PointerRNA *ptr, AnimData *adt, const AnimationEvalContext *anim_eval_context) |
| void | BKE_animsys_nla_remap_keyframe_values (NlaKeyframingContext *context, PointerRNA *prop_ptr, PropertyRNA *prop, const blender::MutableSpan< float > values, int index, const AnimationEvalContext *anim_eval_context, bool *r_force_all, blender::BitVector<> &r_values_mask) |
| void | BKE_animsys_free_nla_keyframing_context_cache (ListBase *cache) |
| static void | animsys_evaluate_overrides (PointerRNA *ptr, AnimData *adt) |
| void | BKE_animsys_evaluate_animdata (ID *id, AnimData *adt, const AnimationEvalContext *anim_eval_context, eAnimData_Recalc recalc, const bool flush_to_original) |
| void | BKE_animsys_evaluate_all_animation (Main *main, Depsgraph *depsgraph, float ctime) |
| void | BKE_animsys_eval_animdata (Depsgraph *depsgraph, ID *id) |
| void | BKE_animsys_update_driver_array (ID *id) |
| void | BKE_animsys_eval_driver_unshare (Depsgraph *depsgraph, ID *id_eval) |
| void | BKE_animsys_eval_driver (Depsgraph *depsgraph, ID *id, int driver_index, FCurve *fcu_orig) |
| void | BKE_time_markers_blend_write (BlendWriter *writer, ListBase &markers) |
| void | BKE_time_markers_blend_read (BlendDataReader *reader, ListBase &markers) |
| void | BKE_copy_time_markers (ListBase &markers_dst, const ListBase &markers_src, const int flag) |
Variables | |
| static CLG_LogRef | LOG = {"bke.anim_sys"} |
| #define ANIMSYS_FLOAT_AS_BOOL | ( | value | ) |
Definition at line 394 of file anim_sys.cc.
Referenced by BKE_animsys_write_to_rna_path().
| #define EVAL_ANIM_IDS | ( | first, | |
| aflag ) |
Referenced by BKE_animsys_evaluate_all_animation().
| #define EVAL_ANIM_NODETREE_IDS | ( | first, | |
| NtId_Type, | |||
| aflag ) |
Referenced by BKE_animsys_evaluate_all_animation().
| using ActionAndSlot = std::pair<bAction *, animrig::slot_handle_t> |
Definition at line 3138 of file anim_sys.cc.
| using ActionAndSlotSet = Set<ActionAndSlot> |
Definition at line 3139 of file anim_sys.cc.
Definition at line 791 of file anim_sys.cc.
References blender::animrig::legacy::action_treat_as_legacy(), ELEM, G, G_DEBUG, GS, bAction::id, bAction::idroot, ID::name, and printf.
Referenced by animsys_blend_in_action(), animsys_evaluate_action(), animsys_evaluate_action_group(), and nlasnapshot_from_action().
|
static |
This function assumes that the quaternion keys are sequential. They do not have to be in array_index order.
Definition at line 629 of file anim_sys.cc.
References animsys_quaternion_evaluate_fcurves(), BLI_assert, interp_qt_qtqt(), PathResolvedRNA::prop, PathResolvedRNA::ptr, RNA_property_float_get_array(), RNA_property_float_set_array(), and blender::Span< T >::size().
Referenced by animsys_blend_in_fcurves().
| void animsys_blend_in_action | ( | PointerRNA * | ptr, |
| bAction * | act, | ||
| const int32_t | action_slot_handle, | ||
| const AnimationEvalContext * | anim_eval_context, | ||
| const float | blend_factor ) |
Definition at line 911 of file anim_sys.cc.
References action_idcode_patch_check(), animsys_blend_in_fcurves(), blender::animrig::legacy::fcurves_for_action_slot(), blender::animrig::Action::is_action_legacy(), and ptr.
Referenced by blender::animrig::pose_apply_action_blend(), and blender::animrig::pose_apply_action_blend_all_bones().
|
static |
Definition at line 651 of file anim_sys.cc.
References animsys_blend_fcurves_quaternion(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), FCurve::array_index, BKE_animsys_read_from_rna_path(), BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), BLI_assert, BLI_strdup(), calculate_fcurve(), blender::Span< T >::index_range(), is_fcurve_evaluatable(), MEM_SAFE_FREE, PathResolvedRNA::prop, PROP_BOOLEAN, PROP_ENUM, PROP_INT, ptr, FCurve::rna_path, RNA_property_identifier(), RNA_property_type(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), blender::Span< T >::slice_safe(), and STREQ.
Referenced by animsys_blend_in_action().
|
static |
NLA Evaluation function (mostly for use through do_animdata)
Definition at line 3588 of file anim_sys.cc.
References animsys_evaluate_nla_domain(), animsys_evaluate_nla_for_flush(), NlaEvalData::eval_snapshot, nladata_flush_channels(), nlaeval_free(), nlaeval_init(), and ptr.
Referenced by BKE_animsys_evaluate_animdata().
|
static |
Definition at line 525 of file anim_sys.cc.
References PointerRNA::data, ID::orig_id, NlaStrip::orig_strip, PointerRNA::owner_id, and ptr.
Referenced by animsys_write_orig_anim_rna().
|
static |
Action track and strip are associated with the non-pushed action.
If we're keyframing, then we must allow keyframing outside fcurve bounds.
Definition at line 3261 of file anim_sys.cc.
References NlaStrip::act, AnimData::act_blendmode, AnimData::act_extendmode, AnimData::act_influence, NlaStrip::actend, AnimData::action, NlaStrip::action_slot_handle, NlaStrip::actstart, ADT_NLA_EDIT_ON, ADT_NLA_EVAL_UPPER_TRACKS, ADT_NLA_SOLO_TRACK, BKE_nla_clip_length_ensure_nonzero(), NlaStrip::blendmode, NlaStrip::end, NlaStrip::extendmode, AnimData::flag, NlaStrip::flag, NlaStrip::influence, NLASTRIP_EXTEND_HOLD, NLASTRIP_FLAG_MUTED, NLASTRIP_FLAG_NO_TIME_MAP, NLASTRIP_FLAG_USR_INFLUENCE, AnimData::slot_handle, NlaStrip::start, AnimData::tmp_slot_handle, and AnimData::tmpact.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
|
static |
Tweaked strip is evaluated differently from other strips. Adjacent strips are ignored and includes a workaround for when user is not editing in place.
Definition at line 3226 of file anim_sys.cc.
References AnimData::actstrip, ADT_NLA_EDIT_NOMAP, BKE_nlastrip_recalculate_bounds_sync_action(), NlaStrip::extendmode, AnimData::flag, NlaStrip::flag, NlaStrip::next, NLASTRIP_EXTEND_HOLD, NLASTRIP_FLAG_NO_TIME_MAP, NLASTRIP_FLAG_SYNC_LENGTH, NLASTRIP_FLAG_USR_TIME, and NlaStrip::prev.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
| void animsys_evaluate_action | ( | PointerRNA * | ptr, |
| bAction * | act, | ||
| const int32_t | action_slot_handle, | ||
| const AnimationEvalContext * | anim_eval_context, | ||
| const bool | flush_to_original ) |
Definition at line 881 of file anim_sys.cc.
References action_idcode_patch_check(), animsys_evaluate_fcurves(), blender::animrig::legacy::fcurves_all(), blender::animrig::fcurves_for_action_slot(), blender::animrig::Action::is_action_legacy(), and ptr.
Referenced by BKE_animsys_evaluate_animdata().
| void animsys_evaluate_action_group | ( | PointerRNA * | ptr, |
| bAction * | act, | ||
| bActionGroup * | agrp, | ||
| const AnimationEvalContext * | anim_eval_context ) |
Definition at line 835 of file anim_sys.cc.
References action_idcode_patch_check(), AGRP_MUTED, FCurve::array_index, BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), BKE_fcurve_is_empty(), calculate_fcurve(), bActionGroup::channels, ELEM, FCURVE_MUTED, blender::animrig::ChannelGroup::fcurves(), ListBase::first, bActionGroup::flag, FCurve::flag, FCurve::grp, blender::animrig::ChannelGroup::is_legacy(), FCurve::next, ptr, and FCurve::rna_path.
|
static |
Definition at line 750 of file anim_sys.cc.
References BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), calculate_fcurve(), DRIVER_FLAG_INVALID, AnimData::drivers, FCURVE_DISABLED, FCURVE_MUTED, ChannelDriver::flag, LISTBASE_FOREACH, and ptr.
Referenced by BKE_animsys_evaluate_animdata().
|
static |
Evaluate all the F-Curves in the given list This performs a set of standard checks. If extra checks are required, separate code should be used.
Definition at line 570 of file anim_sys.cc.
References animsys_write_orig_anim_rna(), BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), calculate_fcurve(), is_fcurve_evaluatable(), and ptr.
Referenced by animsys_evaluate_action(), and nlastrip_evaluate_controls().
|
static |
Ensure that all channels touched by any of the actions in enabled tracks exist. This is necessary to ensure that evaluation result depends only on current frame.
Definition at line 3197 of file anim_sys.cc.
References AnimData::action, ADT_NLA_EDIT_ON, ADT_NLA_EVAL_UPPER_TRACKS, BKE_nlatrack_is_enabled(), AnimData::flag, LISTBASE_FOREACH, nla_eval_domain_action(), nla_eval_domain_strips(), AnimData::nla_tracks, ptr, AnimData::slot_handle, AnimData::tmp_slot_handle, and AnimData::tmpact.
Referenced by animsys_calculate_nla().
|
static |
NLA Evaluation function - values are calculated and stored in temporary "NlaEvalChannels"
| [out] | echannels | Evaluation channels with calculated values |
Append strip to evaluate for this track.
Tweaked strip is evaluated differently.
Definition at line 3379 of file anim_sys.cc.
References animsys_create_action_track_strip(), animsys_create_tweak_strip(), BLI_freelistN(), NlaEvalData::eval_snapshot, ListBase::first, is_action_track_evaluated_without_nla(), is_nlatrack_evaluatable(), LISTBASE_FOREACH, NlaTrack::next, AnimData::nla_tracks, nlasnapshot_blend_strip(), nlastrips_ctime_get_strip(), nlastrips_ctime_get_strip_single(), nlatrack_find_tweaked(), ptr, NlaTrack::strips, and NlaEvalStrip::track.
Referenced by animsys_calculate_nla().
|
static |
Lower blended values are calculated and accumulated into r_context->lower_eval_data.
Definition at line 3448 of file anim_sys.cc.
References AnimData::act_track, NlaKeyframingContext::action_track_strip, ADT_NLA_EDIT_ON, ADT_NLA_SOLO_TRACK, animsys_create_action_track_strip(), animsys_create_tweak_strip(), NlaStrip::blendmode, BLI_freelistN(), NlaEvalData::eval_snapshot, NlaKeyframingContext::eval_strip, ListBase::first, AnimData::flag, NlaTrack::flag, NlaStrip::influence, is_action_track_evaluated_without_nla(), IS_EQF, is_nlatrack_evaluatable(), LISTBASE_FOREACH, NlaKeyframingContext::lower_eval_data, NlaTrack::next, AnimData::nla_tracks, nlasnapshot_blend_strip(), NLASTRIP_MODE_REPLACE, nlastrips_ctime_get_strip(), nlastrips_ctime_get_strip_single(), nlatrack_find_tweaked(), NLATRACK_SOLO, ptr, NlaKeyframingContext::strip, NlaTrack::strips, NlaEvalStrip::track, and NlaKeyframingContext::upper_estrips.
Referenced by BKE_animsys_get_nla_keyframing_context().
|
static |
Definition at line 3899 of file anim_sys.cc.
References BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), LISTBASE_FOREACH, AnimData::overrides, and ptr.
Referenced by BKE_animsys_evaluate_animdata().
|
static |
This function assumes that the quaternion keys are sequential. They do not have to be in array_index order. If the quaternion is only partially keyed, the result is normalized. If it is fully keyed, the result is returned as-is.
Definition at line 598 of file anim_sys.cc.
References BLI_assert, calculate_fcurve(), normalize_qt(), PathResolvedRNA::prop_index, and blender::Span< T >::size().
Referenced by animsys_blend_fcurves_quaternion().
|
static |
Definition at line 549 of file anim_sys.cc.
References animsys_construct_orig_pointer_rna(), BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), and ptr.
Referenced by animsys_evaluate_fcurves(), BKE_animsys_eval_driver(), BKE_animsys_eval_driver_unshare(), and nladata_flush_channels().
| void BKE_animsys_eval_animdata | ( | Depsgraph * | depsgraph, |
| ID * | id ) |
Definition at line 4158 of file anim_sys.cc.
References ADT_RECALC_ANIM, BKE_animdata_from_id(), BKE_animsys_eval_context_construct(), BKE_animsys_evaluate_animdata(), DEG_debug_print_eval_time(), DEG_get_ctime(), DEG_is_active(), depsgraph, and ID::name.
Referenced by blender::deg::DepsgraphNodeBuilder::build_animdata().
| AnimationEvalContext BKE_animsys_eval_context_construct | ( | Depsgraph * | depsgraph, |
| float | eval_time ) |
Definition at line 735 of file anim_sys.cc.
References AnimationEvalContext::depsgraph, depsgraph, and AnimationEvalContext::eval_time.
Referenced by achannel_setting_slider_cb(), achannel_setting_slider_nla_curve_cb(), achannel_setting_slider_shapekey_cb(), actcon_get_tarmat(), blender::animrig::autokeyframe_object(), blender::animrig::autokeyframe_pose_channel(), blender::animrig::autokeyframe_property(), BKE_animsys_eval_animdata(), BKE_animsys_eval_context_construct_at(), BKE_animsys_eval_driver(), BKE_animsys_evaluate_all_animation(), BKE_object_modifier_update_subframe(), BKE_object_where_is_calc_time(), insert_action_keys(), insert_graph_keys(), insert_key(), insert_key_button_exec(), blender::animrig::insert_key_to_keying_set_path(), blender::ed::object::ocean_bake_exec(), particle_system_update(), pose_clear_user_transforms_exec(), poselib_blend_apply(), pyrna_struct_keyframe_insert(), RE_RenderAnim(), blender::seq::seq_prefetch_anim_eval_context(), blender::seq::seq_render_mask(), UI_block_end_ex(), and UI_context_update_anim_flag().
| AnimationEvalContext BKE_animsys_eval_context_construct_at | ( | const AnimationEvalContext * | anim_eval_context, |
| float | eval_time ) |
Definition at line 743 of file anim_sys.cc.
References BKE_animsys_eval_context_construct(), and AnimationEvalContext::depsgraph.
Referenced by nlastrip_evaluate_meta(), nlastrips_ctime_get_strip(), and ui_but_anim_flag().
| void BKE_animsys_eval_driver | ( | Depsgraph * | depsgraph, |
| ID * | id, | ||
| int | driver_index, | ||
| FCurve * | fcu_orig ) |
Definition at line 4223 of file anim_sys.cc.
References animsys_write_orig_anim_rna(), FCurve::array_index, BKE_animdata_from_id(), BKE_animsys_eval_context_construct(), BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), BLI_assert, BLI_assert_unreachable, BLI_findlink(), calculate_fcurve(), CLOG_WARN, ChannelDriver::curval, DriverVar::curval, FCurve::curval, DEG_debug_print_eval_subdata_index(), DEG_get_ctime(), DEG_is_active(), depsgraph, FCurve::driver, AnimData::driver_array, DRIVER_FLAG_INVALID, AnimData::drivers, FCURVE_DISABLED, FCURVE_MUTED, ListBase::first, ChannelDriver::flag, DriverTarget::flag, DriverVar::flag, FCurve::flag, i, LOG, MAX_DRIVER_TARGETS, ID::name, DriverVar::next, RNA_id_pointer_create(), FCurve::rna_path, DriverVar::targets, and ChannelDriver::variables.
Referenced by blender::deg::DepsgraphNodeBuilder::build_driver().
| void BKE_animsys_eval_driver_unshare | ( | Depsgraph * | depsgraph, |
| ID * | id_eval ) |
Definition at line 4192 of file anim_sys.cc.
References animsys_write_orig_anim_rna(), BKE_animdata_from_id(), BKE_animsys_read_from_rna_path(), BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), BLI_assert, DEG_is_active(), DEG_is_evaluated(), depsgraph, AnimData::drivers, LISTBASE_FOREACH, and RNA_id_pointer_create().
Referenced by blender::deg::DepsgraphNodeBuilder::build_animdata_drivers().
| void BKE_animsys_evaluate_all_animation | ( | struct Main * | main, |
| struct Depsgraph * | depsgraph, | ||
| float | ctime ) |
Evaluation of all ID-blocks with Animation Data blocks - Animation Data Only
This will evaluate only the animation info available in the animation data-blocks encountered. In order to enforce the system by which some settings controlled by a 'local' (i.e. belonging in the nearest ID-block that setting is related to, not a standard 'root') block are overridden by a larger 'user'
Definition at line 4010 of file anim_sys.cc.
References ADT_RECALC_ANIM, BKE_animsys_eval_context_construct(), BLI_listbase_is_empty(), DEG_is_active(), depsgraph, EVAL_ANIM_IDS, EVAL_ANIM_NODETREE_IDS, G, G_DEBUG, main, and printf.
Referenced by blender::seq::do_render_strip_seqbase().
| void BKE_animsys_evaluate_animdata | ( | ID * | id, |
| AnimData * | adt, | ||
| const AnimationEvalContext * | anim_eval_context, | ||
| eAnimData_Recalc | recalc, | ||
| const bool | flush_to_original ) |
Definition at line 3948 of file anim_sys.cc.
References AnimData::action, ADT_NLA_EVAL_OFF, ADT_RECALC_ANIM, ADT_RECALC_DRIVERS, animsys_calculate_nla(), animsys_evaluate_action(), animsys_evaluate_drivers(), animsys_evaluate_overrides(), ELEM, blender::animrig::evaluate_and_apply_action(), ListBase::first, AnimData::flag, blender::animrig::Action::is_action_layered(), AnimData::nla_tracks, RNA_id_pointer_create(), AnimData::slot_handle, and blender::animrig::Slot::unassigned.
Referenced by BKE_animsys_eval_animdata().
| void BKE_animsys_free_nla_keyframing_context_cache | ( | struct ListBase * | cache | ) |
Free all cached contexts from the list.
Definition at line 3884 of file anim_sys.cc.
References BLI_freelistN(), LISTBASE_FOREACH, MEM_SAFE_FREE, and nlaeval_free().
Referenced by achannel_setting_slider_cb(), and blender::animrig::insert_keyframes().
| NlaKeyframingContext * BKE_animsys_get_nla_keyframing_context | ( | ListBase * | cache, |
| PointerRNA * | ptr, | ||
| AnimData * | adt, | ||
| const AnimationEvalContext * | anim_eval_context ) |
Definition at line 3717 of file anim_sys.cc.
References NlaStrip::act, AnimData::act_blendmode, AnimData::act_influence, AnimData::action, NlaKeyframingContext::adt, ADT_NLA_EDIT_ON, ADT_NLA_EVAL_OFF, ADT_NLA_EVAL_UPPER_TRACKS, animsys_evaluate_nla_for_keyframing(), BLI_addtail(), BLI_assert, BLI_findptr(), ELEM, ListBase::first, AnimData::flag, NlaKeyframingContext::lower_eval_data, MEM_callocN(), AnimData::nla_tracks, nlaeval_init(), NLASTRIP_MODE_REPLACE, offsetof, ptr, RNA_struct_is_ID(), and NlaKeyframingContext::strip.
| void BKE_animsys_nla_remap_keyframe_values | ( | NlaKeyframingContext * | context, |
| PointerRNA * | prop_ptr, | ||
| PropertyRNA * | prop, | ||
| const blender::MutableSpan< float > | values, | ||
| int | index, | ||
| const AnimationEvalContext * | anim_eval_context, | ||
| bool * | r_force_all, | ||
| blender::BitVector<> & | r_values_mask ) |
Create blended_snapshot and fill with input values.
Remove lower NLA stack effects.
Definition at line 3760 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, blender::MutableSpan< T >::begin(), BLI_assert, BLI_assert_msg, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, BLI_listbase_is_empty(), NlaEvalChannelSnapshot::channel, count, ELEM, blender::MutableSpan< T >::end(), blender::bits::BitVector< InlineBufferCapacity, Allocator >::fill(), i, blender::bits::BitVector< InlineBufferCapacity, Allocator >::index_range(), NlaEvalChannelSnapshot::length, LISTBASE_FOREACH_BACKWARD, NlaEvalChannel::mix_mode, NEC_MIX_QUATERNION, nlaeval_snapshot_ensure_channel(), nlaeval_snapshot_free_data(), nlaeval_snapshot_init(), nlaevalchan_verify_key(), nlasnapshot_blend_get_inverted_upper_snapshot(), nlasnapshot_blend_strip_get_inverted_lower_snapshot(), NLASTRIP_MODE_COMBINE, NLASTRIP_MODE_REPLACE, PointerRNA::owner_id, NlaEvalChannelKey::prop, NlaEvalChannelKey::ptr, NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, RNA_id_pointer_create(), blender::MutableSpan< T >::size(), and NlaEvalChannelSnapshot::values.
| bool BKE_animsys_read_from_rna_path | ( | PathResolvedRNA * | anim_rna, |
| float * | r_value ) |
Definition at line 396 of file anim_sys.cc.
References BLI_assert, PathResolvedRNA::prop, PROP_BOOLEAN, PROP_ENUM, PROP_FLOAT, PathResolvedRNA::prop_index, PROP_INT, PathResolvedRNA::ptr, ptr, RNA_property_animateable(), RNA_property_boolean_get(), RNA_property_boolean_get_index(), RNA_property_enum_get(), RNA_property_float_get(), RNA_property_float_get_index(), RNA_property_int_get(), RNA_property_int_get_index(), and RNA_property_type().
Referenced by animsys_blend_in_fcurves(), BKE_animsys_eval_driver_unshare(), BKE_animsys_write_to_rna_path(), and blender::deg::AnimationBackup::init_from_id().
| bool BKE_animsys_rna_path_resolve | ( | PointerRNA * | ptr, |
| const char * | rna_path, | ||
| const int | array_index, | ||
| PathResolvedRNA * | r_result ) |
Definition at line 347 of file anim_sys.cc.
References CLOG_WARN, G, G_DEBUG, LOG, PathResolvedRNA::prop, PathResolvedRNA::prop_index, PathResolvedRNA::ptr, ptr, RNA_path_resolve_property(), RNA_property_animateable(), and RNA_property_array_length().
Referenced by animsys_blend_in_fcurves(), animsys_evaluate_action_group(), animsys_evaluate_drivers(), animsys_evaluate_fcurves(), animsys_evaluate_overrides(), animsys_write_orig_anim_rna(), blender::animrig::animsys_write_orig_anim_rna(), BKE_animsys_eval_driver(), BKE_animsys_eval_driver_unshare(), blender::animrig::evaluate_keyframe_data(), blender::deg::AnimationBackup::init_from_id(), and blender::deg::AnimationBackup::restore_to_id().
| void BKE_animsys_update_driver_array | ( | ID * | id | ) |
Definition at line 4172 of file anim_sys.cc.
References BKE_animdata_from_id(), BLI_assert, BLI_listbase_count(), AnimData::driver_array, AnimData::drivers, ListBase::first, LISTBASE_FOREACH, and MEM_malloc_arrayN().
| bool BKE_animsys_write_to_rna_path | ( | struct PathResolvedRNA * | anim_rna, |
| float | value, | ||
| bool | force_write = false ) |
Write the given value to a setting using RNA, and return success.
| force_write | When false, this function will only call the RNA setter when value is different from the property's current value. When true, this function will skip that check and always call the RNA setter. |
Definition at line 457 of file anim_sys.cc.
References ANIMSYS_FLOAT_AS_BOOL, BKE_animsys_read_from_rna_path(), BLI_assert, PathResolvedRNA::prop, PROP_BOOLEAN, PROP_ENUM, PROP_FLOAT, PathResolvedRNA::prop_index, PROP_INT, PathResolvedRNA::ptr, ptr, RNA_property_animateable(), RNA_property_boolean_set(), RNA_property_boolean_set_index(), RNA_property_enum_set(), RNA_property_float_clamp(), RNA_property_float_set(), RNA_property_float_set_index(), RNA_property_int_clamp(), RNA_property_int_set(), RNA_property_int_set_index(), and RNA_property_type().
Referenced by animsys_blend_in_fcurves(), animsys_evaluate_action_group(), animsys_evaluate_drivers(), animsys_evaluate_fcurves(), animsys_evaluate_overrides(), animsys_write_orig_anim_rna(), blender::animrig::animsys_write_orig_anim_rna(), blender::animrig::apply_evaluation_result(), BKE_animsys_eval_driver(), BKE_animsys_eval_driver_unshare(), nladata_flush_channels(), and blender::deg::AnimationBackup::restore_to_id().
Copy a list of time markers.
Note: this is meant to be called in the context of duplicating an ID.
| flag | ID copy flags. Corresponds to the flag parameter of BKE_id_copy_ex(). |
Definition at line 4326 of file anim_sys.cc.
References BLI_duplicatelist(), flag, IDP_CopyProperty_ex(), and LISTBASE_FOREACH.
Referenced by blender::bke::action_copy_data(), and scene_copy_data().
| KeyingSet * BKE_keyingset_add | ( | struct ListBase * | list, |
| const char | idname[], | ||
| const char | name[], | ||
| short | flag, | ||
| short | keyingflag ) |
Used to create a new 'custom' KeyingSet for the user, that will be automatically added to the stack.
Definition at line 131 of file anim_sys.cc.
References BLI_addtail(), BLI_uniquename(), DATA_, flag, KeyingSet::flag, KeyingSet::idname, KeyingSet::keyingflag, KeyingSet::keyingoverride, MEM_callocN(), KeyingSet::name, offsetof, and STRNCPY_UTF8.
Referenced by add_default_keyingset_exec(), add_keyingset_button_exec(), blender::animrig::keyingset_info_register(), and blender::ed::outliner::verify_active_keyingset().
| KS_Path * BKE_keyingset_add_path | ( | struct KeyingSet * | ks, |
| struct ID * | id, | ||
| const char | group_name[], | ||
| const char | rna_path[], | ||
| int | array_index, | ||
| short | flag, | ||
| short | groupmode ) |
Add a path to a KeyingSet. Nothing is returned for now. Checks are performed to ensure that destination is appropriate for the KeyingSet in question
Definition at line 161 of file anim_sys.cc.
References KS_Path::array_index, BKE_keyingset_find_path(), BLI_addtail(), BLI_strdup(), CLOG_ERROR, ELEM, flag, KS_Path::flag, G, G_DEBUG, KS_Path::group, KS_Path::groupmode, GS, KS_Path::id, KS_Path::idtype, LOG, MEM_callocN(), ID::name, KeyingSet::paths, KS_Path::rna_path, and STRNCPY().
Referenced by add_keyingset_button_exec(), and blender::ed::outliner::do_outliner_keyingset_editop().
| KS_Path * BKE_keyingset_find_path | ( | struct KeyingSet * | ks, |
| struct ID * | id, | ||
| const char | group_name[], | ||
| const char | rna_path[], | ||
| int | array_index, | ||
| int | group_mode ) |
Find the destination matching the criteria given. TODO: do we want some method to perform partial matches too?
Definition at line 81 of file anim_sys.cc.
References ELEM, LISTBASE_FOREACH, KeyingSet::paths, and STREQ.
Referenced by BKE_keyingset_add_path(), blender::ed::outliner::do_outliner_keyingset_editop(), and remove_keyingset_button_exec().
Definition at line 224 of file anim_sys.cc.
References BLI_freelinkN(), ELEM, MEM_freeN(), KeyingSet::paths, and KS_Path::rna_path.
Referenced by BKE_keyingset_free_paths(), blender::ed::outliner::do_outliner_keyingset_editop(), remove_active_ks_path_exec(), and remove_keyingset_button_exec().
| void BKE_keyingset_free_paths | ( | KeyingSet * | ks | ) |
Definition at line 264 of file anim_sys.cc.
References BKE_keyingset_free_path(), ListBase::first, KS_Path::next, and KeyingSet::paths.
Referenced by BKE_keyingsets_free(), blender::animrig::keyingset_info_unregister(), remove_active_keyingset_exec(), and blender::animrig::validate_keyingset().
| void BKE_keyingsets_blend_read_data | ( | BlendDataReader * | reader, |
| ListBase * | list ) |
Definition at line 317 of file anim_sys.cc.
References BLO_read_string(), BLO_read_struct_list, and LISTBASE_FOREACH.
Referenced by scene_blend_read_data().
| void BKE_keyingsets_blend_write | ( | BlendWriter * | writer, |
| ListBase * | list ) |
Definition at line 299 of file anim_sys.cc.
References BLO_write_string(), BLO_write_struct, and LISTBASE_FOREACH.
Referenced by scene_blend_write().
Definition at line 240 of file anim_sys.cc.
References BLI_duplicatelist(), LISTBASE_FOREACH, and MEM_dupallocN().
| void BKE_keyingsets_foreach_id | ( | LibraryForeachIDData * | data, |
| const ListBase * | keyingsets ) |
Definition at line 253 of file anim_sys.cc.
References BKE_LIB_FOREACHID_PROCESS_ID, data, IDWALK_CB_NOP, and LISTBASE_FOREACH.
| void BKE_keyingsets_free | ( | ListBase * | list | ) |
Definition at line 280 of file anim_sys.cc.
References BKE_keyingset_free_paths(), BLI_freelinkN(), ListBase::first, and KeyingSet::next.
Referenced by blender::animrig::keyingset_infos_exit(), and scene_free_data().
| void BKE_time_markers_blend_read | ( | BlendDataReader * | reader, |
| ListBase & | markers ) |
Definition at line 4317 of file anim_sys.cc.
References BLO_read_struct, BLO_read_struct_list, IDP_BlendDataRead, and LISTBASE_FOREACH.
Referenced by blender::bke::action_blend_read_data(), and scene_blend_read_data().
| void BKE_time_markers_blend_write | ( | BlendWriter * | writer, |
| ListBase & | markers ) |
Definition at line 4306 of file anim_sys.cc.
References BLO_write_struct, IDP_BlendWrite(), and LISTBASE_FOREACH.
Referenced by blender::bke::action_blend_write(), and scene_blend_write().
|
static |
Check for special case of non-pushed action being evaluated with no NLA influence (off and no strips evaluated) nor NLA interference (ensure NLA not soloing).
NLA settings interference.
Allow action track to evaluate as if there isn't any NLA data.
Definition at line 3331 of file anim_sys.cc.
References AnimData::action, ADT_NLA_EDIT_ON, ADT_NLA_SOLO_TRACK, and AnimData::flag.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
|
static |
Definition at line 333 of file anim_sys.cc.
References AGRP_MUTED, BKE_fcurve_is_empty(), FCURVE_DISABLED, FCURVE_MUTED, bActionGroup::flag, FCurve::flag, and FCurve::grp.
Referenced by animsys_blend_in_fcurves(), animsys_evaluate_fcurves(), nla_eval_domain_action(), and nlasnapshot_from_action().
Definition at line 3315 of file anim_sys.cc.
References AnimData::act_track, ADT_NLA_EDIT_ON, BKE_nlatrack_is_enabled(), AnimData::flag, NlaTrack::flag, NlaTrack::index, and NLATRACK_DISABLED.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
|
static |
Definition at line 1604 of file anim_sys.cc.
References BLI_assert_msg, IS_EQF, NLASTRIP_MODE_ADD, NLASTRIP_MODE_COMBINE, NLASTRIP_MODE_MULTIPLY, NLASTRIP_MODE_REPLACE, and NLASTRIP_MODE_SUBTRACT.
Referenced by nlaevalchan_blend_value_get_inverted_lower_evalchan().
|
static |
No solution if strip had 0 influence.
Definition at line 1855 of file anim_sys.cc.
References ATTR_FALLTHROUGH, BLI_assert_msg, IS_EQF, NLASTRIP_MODE_ADD, NLASTRIP_MODE_COMBINE, NLASTRIP_MODE_MULTIPLY, and NLASTRIP_MODE_SUBTRACT.
Referenced by nlaevalchan_blend_value_get_inverted_upper_evalchan().
|
static |
Definition at line 1789 of file anim_sys.cc.
References ATTR_FALLTHROUGH, BLI_assert_msg, IS_EQF, NLASTRIP_MODE_ADD, NLASTRIP_MODE_COMBINE, NLASTRIP_MODE_MULTIPLY, and NLASTRIP_MODE_SUBTRACT.
Referenced by nlaevalchan_blend_value().
|
static |
Definition at line 1700 of file anim_sys.cc.
References BLI_assert_msg, IS_EQF, NEC_MIX_ADD, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, NEC_MIX_QUATERNION, and powf.
Referenced by nlaevalchan_combine_value_get_inverted_lower_evalchan().
|
static |
Definition at line 1919 of file anim_sys.cc.
References BLI_assert_msg, IS_EQF, NEC_MIX_ADD, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, and powf.
Referenced by nlaevalchan_combine_value_get_inverted_upper_evalchan().
|
static |
Accumulate quaternion channels for Combine mode according to influence.
Definition at line 1965 of file anim_sys.cc.
References mul_qt_qtqt(), normalize_qt_qt(), and pow_qt_fl_normalized().
Referenced by nlaevalchan_combine_quaternion().
|
static |
Definition at line 1762 of file anim_sys.cc.
References invert_qt_normalized(), IS_EQF, mul_qt_qtqt(), normalize_qt_qt(), and pow_qt_fl_normalized().
Referenced by nlaevalchan_combine_quaternion_get_inverted_lower_evalchan().
|
static |
Definition at line 1980 of file anim_sys.cc.
References invert_qt_normalized(), IS_EQF, mul_qt_qtqt(), normalize_qt_qt(), and pow_qt_fl_normalized().
Referenced by nlaevalchan_combine_quaternion_get_inverted_upper_evalchan().
|
static |
Definition at line 1825 of file anim_sys.cc.
References BLI_assert_msg, IS_EQF, NEC_MIX_ADD, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, and powf.
Referenced by nlaevalchan_combine_value().
|
static |
Definition at line 3141 of file anim_sys.cc.
References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), BLI_BITMAP_ENABLE, BLI_bitmap_set_all(), NlaEvalChannel::domain, blender::animrig::legacy::fcurves_for_action_slot(), is_fcurve_evaluatable(), NlaEvalChannel::mix_mode, NEC_MIX_QUATERNION, nlaevalchan_validate_index(), nlaevalchan_verify(), NlaValidMask::ptr, and ptr.
Referenced by animsys_evaluate_nla_domain(), and nla_eval_domain_strips().
|
static |
Definition at line 3176 of file anim_sys.cc.
References LISTBASE_FOREACH, nla_eval_domain_action(), nla_eval_domain_strips(), and ptr.
Referenced by animsys_evaluate_nla_domain(), and nla_eval_domain_strips().
| void nladata_flush_channels | ( | PointerRNA * | ptr, |
| NlaEvalData * | channels, | ||
| NlaEvalSnapshot * | snapshot, | ||
| bool | flush_to_original ) |
write the accumulated settings to.
The bitmask is set for all channels touched by NLA due to the domain() function. Channels touched by current set of evaluated strips will have a snapshot channel directly from the evaluation snapshot.
This function falls back to the default value if the snapshot channel doesn't exist. Thus channels, touched by NLA but not by the current set of evaluated strips, will be reset to default. If channel not touched by NLA then it's value is unchanged.
Definition at line 3096 of file anim_sys.cc.
References animsys_write_orig_anim_rna(), BKE_animsys_write_to_rna_path(), BLI_BITMAP_TEST, NlaEvalData::channels, i, NlaEvalChannelSnapshot::length, LISTBASE_FOREACH, nlaeval_snapshot_find_channel(), PathResolvedRNA::prop_index, ptr, and NlaEvalChannelSnapshot::values.
Referenced by animsys_calculate_nla().
|
static |
Definition at line 2584 of file anim_sys.cc.
References ELEM, ListBase::first, ListBase::last, FModifier::next, FModifier::prev, and result.
Referenced by nlastrip_evaluate_actionclip(), nlastrip_evaluate_meta(), and nlastrip_evaluate_transition().
Definition at line 2617 of file anim_sys.cc.
References ELEM, ListBase::first, ListBase::last, FModifier::next, and FModifier::prev.
Referenced by nlastrip_evaluate_actionclip(), nlastrip_evaluate_meta(), and nlastrip_evaluate_transition().
|
static |
Definition at line 1351 of file anim_sys.cc.
References NlaEvalData::base_snapshot, BLI_freelistN(), BLI_ghash_free(), NlaEvalData::channels, NlaEvalSnapshot::channels, NlaEvalData::eval_snapshot, NlaEvalData::key_hash, LISTBASE_FOREACH, MEM_SAFE_FREE, nlaeval_snapshot_free_data(), nlaevalchan_free_data(), and NlaEvalData::path_hash.
Referenced by animsys_calculate_nla(), and BKE_animsys_free_nla_keyframing_context_cache().
|
static |
Definition at line 1342 of file anim_sys.cc.
References BLI_ghash_new(), BLI_ghash_str_new(), NlaEvalData::key_hash, nlaevalchan_keycmp(), nlaevalchan_keyhash(), and NlaEvalData::path_hash.
Referenced by animsys_calculate_nla(), and BKE_animsys_get_nla_keyframing_context().
|
static |
Definition at line 1294 of file anim_sys.cc.
References NlaEvalSnapshot::base, nlaeval_snapshot_ensure_slot(), nlaeval_snapshot_find_channel(), nlaevalchan_snapshot_copy(), and nlaevalchan_snapshot_new().
Referenced by BKE_animsys_nla_remap_keyframe_values(), nlasnapshot_blend(), nlasnapshot_blend_get_inverted_lower_snapshot(), nlasnapshot_blend_get_inverted_upper_snapshot(), nlasnapshot_ensure_channels(), nlasnapshot_from_action(), and nlastrip_evaluate_transition().
|
static |
Definition at line 1256 of file anim_sys.cc.
References NlaEvalSnapshot::channels, CLAMP_MIN, MEM_recallocN_id, NlaEvalSnapshot::size, and size().
Referenced by nlaeval_snapshot_ensure_slot(), nlasnapshot_blend(), nlasnapshot_blend_get_inverted_lower_snapshot(), and nlasnapshot_blend_get_inverted_upper_snapshot().
|
static |
Definition at line 1270 of file anim_sys.cc.
References NlaEvalSnapshot::channels, NlaEvalChannel::index, nlaeval_snapshot_ensure_size(), NlaEvalData::num_channels, and NlaEvalChannel::owner.
Referenced by nlaeval_snapshot_ensure_channel(), and nlaevalchan_verify_key().
|
static |
Definition at line 1278 of file anim_sys.cc.
References NlaEvalSnapshot::base, NlaEvalChannel::base_snapshot, NlaEvalChannel::index, and nlaeval_snapshot_get().
Referenced by nladata_flush_channels(), nlaeval_snapshot_ensure_channel(), nlasnapshot_blend(), and nlasnapshot_blend_get_inverted_upper_snapshot().
|
static |
Definition at line 1314 of file anim_sys.cc.
References NlaEvalSnapshot::base, NlaEvalSnapshot::channels, i, MEM_freeN(), nlaevalchan_snapshot_free(), and NlaEvalSnapshot::size.
Referenced by BKE_animsys_nla_remap_keyframe_values(), nlaeval_free(), nlastrip_evaluate_actionclip(), and nlastrip_evaluate_transition().
|
static |
Definition at line 1250 of file anim_sys.cc.
References NlaEvalSnapshot::channels, and size().
Referenced by nlaeval_snapshot_find_channel(), nlasnapshot_blend(), nlasnapshot_blend_get_inverted_lower_snapshot(), nlasnapshot_blend_get_inverted_upper_snapshot(), nlasnapshot_enable_all_blend_domain(), and nlastrip_evaluate_transition().
|
static |
Definition at line 1239 of file anim_sys.cc.
References NlaEvalSnapshot::base, NlaEvalSnapshot::channels, MEM_calloc_arrayN(), NlaEvalData::num_channels, and NlaEvalSnapshot::size.
Referenced by BKE_animsys_nla_remap_keyframe_values(), nlastrip_evaluate_actionclip(), and nlastrip_evaluate_transition().
|
static |
Definition at line 2015 of file anim_sys.cc.
References BLI_assert, ELEM, NlaEvalChannelSnapshot::length, and UNUSED_VARS_NDEBUG.
Referenced by nlaevalchan_assert_blendOrcombine_compatible_quaternion(), nlaevalchan_blend_value(), nlaevalchan_blend_value_get_inverted_lower_evalchan(), nlaevalchan_blend_value_get_inverted_upper_evalchan(), nlaevalchan_combine_value(), nlaevalchan_combine_value_get_inverted_lower_evalchan(), and nlaevalchan_combine_value_get_inverted_upper_evalchan().
|
static |
Definition at line 2047 of file anim_sys.cc.
References BLI_assert, NlaEvalChannelSnapshot::length, and nlaevalchan_assert_blendOrcombine_compatible().
Referenced by nlaevalchan_combine_quaternion(), nlaevalchan_combine_quaternion_get_inverted_lower_evalchan(), and nlaevalchan_combine_quaternion_get_inverted_upper_evalchan().
|
static |
Definition at line 2008 of file anim_sys.cc.
References BLI_assert, NlaEvalChannelSnapshot::channel, and UNUSED_VARS_NDEBUG.
Referenced by nlaevalchan_blend_value_get_inverted_upper_evalchan(), nlaevalchan_blendOrcombine(), nlaevalchan_blendOrCombine_get_inverted_lower_evalchan(), nlaevalchan_blendOrcombine_get_inverted_upper_evalchan(), nlaevalchan_combine_quaternion_get_inverted_upper_evalchan(), and nlaevalchan_combine_value_get_inverted_upper_evalchan().
|
static |
Based on blendmode, blend lower necs with upper necs into blended necs.
Each upper value's blend domain determines whether to blend or to copy directly from lower.
Definition at line 2113 of file anim_sys.cc.
References NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_TEST_BOOL, length(), NlaEvalChannelSnapshot::length, nla_blend_value(), nlaevalchan_assert_blendOrcombine_compatible(), nlaevalchan_blendOrcombine_try_copy_from_lower(), NlaValidMask::ptr, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrcombine().
|
static |
Definition at line 2408 of file anim_sys.cc.
References NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_DISABLE, BLI_BITMAP_ENABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, length(), NlaEvalChannelSnapshot::length, nla_blend_get_inverted_lower_value(), nlaevalchan_assert_blendOrcombine_compatible(), nlaevalchan_blendOrcombine_try_copy_to_lower(), NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrCombine_get_inverted_lower_evalchan().
|
static |
Based on blend-mode, solve for the upper values such that when lower blended with upper then we get blended values as a result.
Only processes blended values in the remap domain. Successfully remapped upper values are placed in the remap domain so caller knows which values are usable.
Definition at line 2258 of file anim_sys.cc.
References BLI_BITMAP_DISABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, length(), NlaEvalChannelSnapshot::length, nla_blend_get_inverted_strip_value(), nlaevalchan_assert_blendOrcombine_compatible(), nlaevalchan_assert_nonNull(), NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrcombine_get_inverted_upper_evalchan().
|
static |
Based on blend-mode and mix-mode, blend lower necs with upper necs into blended necs.
Each upper value's blend domain determines whether to blend or to copy directly from lower.
| lower_necs | Never nullptr. |
| upper_necs | Can be nullptr. |
| upper_blendmode | Enum value in eNlaStrip_Blend_Mode. |
| upper_influence | Value in range [0, 1]. |
| upper_necs | Never nullptr. |
Definition at line 2212 of file anim_sys.cc.
References BLI_assert_msg, NlaEvalChannelSnapshot::channel, NlaEvalChannel::mix_mode, NEC_MIX_ADD, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, NEC_MIX_QUATERNION, nlaevalchan_assert_nonNull(), nlaevalchan_blend_value(), nlaevalchan_combine_quaternion(), nlaevalchan_combine_value(), NLASTRIP_MODE_ADD, NLASTRIP_MODE_COMBINE, NLASTRIP_MODE_MULTIPLY, NLASTRIP_MODE_REPLACE, and NLASTRIP_MODE_SUBTRACT.
Referenced by nlasnapshot_blend().
|
static |
Based on blendmode and mix mode, solve for the lower values such that when lower blended or combined with upper then we get blended values as a result.
Only processes blended values in the remap domain. Successfully remapped lower values are placed in the remap domain so caller knows which values are usable.
| blended_necs | Never nullptr. |
| upper_necs | Can be nullptr. |
| upper_blendmode | Enum value in eNlaStrip_Blend_Mode. |
| upper_influence | Value in range [0, 1]. |
| r_lower_necs | Never nullptr. |
Definition at line 2537 of file anim_sys.cc.
References BLI_assert_msg, NlaEvalChannelSnapshot::channel, NlaEvalChannel::mix_mode, NEC_MIX_ADD, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, NEC_MIX_QUATERNION, nlaevalchan_assert_nonNull(), nlaevalchan_blend_value_get_inverted_lower_evalchan(), nlaevalchan_combine_quaternion_get_inverted_lower_evalchan(), nlaevalchan_combine_value_get_inverted_lower_evalchan(), NLASTRIP_MODE_ADD, NLASTRIP_MODE_COMBINE, NLASTRIP_MODE_MULTIPLY, NLASTRIP_MODE_REPLACE, and NLASTRIP_MODE_SUBTRACT.
Referenced by nlasnapshot_blend_get_inverted_lower_snapshot().
|
static |
Based on blend-mode and mix mode, solve for the upper values such that when lower blended or combined with upper then we get blended values as a result.
Only processes blended values in the remap domain. Successfully remapped upper values are placed in the remap domain so caller knows which values are usable.
| lower_necs | Never nullptr. |
| blended_necs | Never nullptr. |
| upper_blendmode | Enum value in eNlaStrip_Blend_Mode. |
| upper_influence | Value in range [0, 1]. |
| r_upper_necs | Never nullptr. |
Definition at line 2361 of file anim_sys.cc.
References BLI_assert_msg, BLI_bitmap_set_all(), NlaEvalChannelSnapshot::channel, IS_EQF, NlaEvalChannelSnapshot::length, NlaEvalChannel::mix_mode, NEC_MIX_ADD, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, NEC_MIX_QUATERNION, nlaevalchan_assert_nonNull(), nlaevalchan_blend_value_get_inverted_upper_evalchan(), nlaevalchan_combine_quaternion_get_inverted_upper_evalchan(), nlaevalchan_combine_value_get_inverted_upper_evalchan(), NLASTRIP_MODE_ADD, NLASTRIP_MODE_COMBINE, NLASTRIP_MODE_MULTIPLY, NLASTRIP_MODE_REPLACE, NLASTRIP_MODE_SUBTRACT, NlaValidMask::ptr, and NlaEvalChannelSnapshot::remap_domain.
Referenced by nlasnapshot_blend_get_inverted_upper_snapshot().
|
static |
Copies from lower necs to blended necs if upper necs is nullptr or has zero influence.
Definition at line 2065 of file anim_sys.cc.
References IS_EQF, and nlaevalchan_copy_values().
Referenced by nlaevalchan_blend_value(), nlaevalchan_combine_quaternion(), and nlaevalchan_combine_value().
|
static |
Copies to lower necs from blended necs if upper necs is nullptr or has zero influence. If successful, copies blended_necs remap domains to lower_necs.
Does not check upper value blend domains.
Definition at line 2088 of file anim_sys.cc.
References BLI_bitmap_copy_all(), IS_EQF, NlaEvalChannelSnapshot::length, nlaevalchan_copy_values(), NlaValidMask::ptr, and NlaEvalChannelSnapshot::remap_domain.
Referenced by nlaevalchan_blend_value_get_inverted_lower_evalchan(), nlaevalchan_combine_quaternion_get_inverted_lower_evalchan(), and nlaevalchan_combine_value_get_inverted_lower_evalchan().
|
static |
Quaternion combines lower necs with upper necs into blended necs.
Each upper value's blend domain determines whether to blend or to copy directly from lower.
No need to check per index. We limit to all or nothing combining for quaternions.
Definition at line 2178 of file anim_sys.cc.
References NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_TEST_BOOL, nla_combine_quaternion(), nlaevalchan_assert_blendOrcombine_compatible_quaternion(), nlaevalchan_blendOrcombine_try_copy_from_lower(), nlaevalchan_copy_values(), NlaValidMask::ptr, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrcombine().
|
static |
Definition at line 2492 of file anim_sys.cc.
References NlaEvalChannelSnapshot::blend_domain, BLI_bitmap_set_all(), BLI_BITMAP_TEST_BOOL, nla_combine_quaternion_get_inverted_lower_values(), nlaevalchan_assert_blendOrcombine_compatible_quaternion(), nlaevalchan_blendOrcombine_try_copy_to_lower(), nlaevalchan_combine_quaternion_handle_undefined_blend_values(), NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrCombine_get_inverted_lower_evalchan().
|
static |
Solve for the upper values such that when lower quaternion combined with upper then we get blended values as a result.
All blended values must be in the remap domain. If successfully remapped, then all upper values are placed in the remap domain so caller knows the result is usable.
Definition at line 2329 of file anim_sys.cc.
References BLI_bitmap_set_all(), nla_combine_quaternion_get_inverted_strip_values(), nlaevalchan_assert_blendOrcombine_compatible_quaternion(), nlaevalchan_assert_nonNull(), nlaevalchan_combine_quaternion_handle_undefined_blend_values(), NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrcombine_get_inverted_upper_evalchan().
|
static |
Check each remap domain of blended values individually in case animator had a non-combine NLA strip with a subset of quaternion channels and remapping through any of them failed and thus potentially has undefined values.
Definition at line 2033 of file anim_sys.cc.
References BLI_bitmap_set_all(), BLI_BITMAP_TEST_BOOL, NlaValidMask::ptr, and NlaEvalChannelSnapshot::remap_domain.
Referenced by nlaevalchan_combine_quaternion_get_inverted_lower_evalchan(), and nlaevalchan_combine_quaternion_get_inverted_upper_evalchan().
|
static |
Based on mix-mode, provided by one the necs, combines lower necs with upper necs into blended necs.
Each upper value's blend domain determines whether to blend or to copy directly from lower.
Definition at line 2144 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::channel, length(), NlaEvalChannelSnapshot::length, NlaEvalChannel::mix_mode, nla_combine_value(), nlaevalchan_assert_blendOrcombine_compatible(), nlaevalchan_blendOrcombine_try_copy_from_lower(), NlaValidMask::ptr, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrcombine().
|
static |
Definition at line 2449 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_DISABLE, BLI_BITMAP_ENABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::channel, length(), NlaEvalChannelSnapshot::length, NlaEvalChannel::mix_mode, nla_combine_get_inverted_lower_value(), nlaevalchan_assert_blendOrcombine_compatible(), nlaevalchan_blendOrcombine_try_copy_to_lower(), NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrCombine_get_inverted_lower_evalchan().
|
static |
Based on mix-mode, solve for the upper values such that when lower combined with upper then we get blended values as a result.
Only processes blended values in the remap domain. Successfully remapped upper values are placed in the remap domain so caller knows which values are usable.
Definition at line 2291 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, BLI_BITMAP_DISABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::channel, length(), NlaEvalChannelSnapshot::length, NlaEvalChannel::mix_mode, nla_combine_get_inverted_strip_value(), nlaevalchan_assert_blendOrcombine_compatible(), nlaevalchan_assert_nonNull(), NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrcombine_get_inverted_upper_evalchan().
|
static |
Definition at line 2056 of file anim_sys.cc.
References NlaEvalChannelSnapshot::length, and NlaEvalChannelSnapshot::values.
Referenced by nlaevalchan_blendOrcombine_try_copy_from_lower(), nlaevalchan_blendOrcombine_try_copy_to_lower(), and nlaevalchan_combine_quaternion().
|
static |
Definition at line 1487 of file anim_sys.cc.
References length(), NEC_MIX_ADD, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, NEC_MIX_QUATERNION, NlaEvalChannelKey::prop, PROP_AXISANGLE, PROP_PROPORTIONAL, PROP_QUATERNION, RNA_property_flag(), and RNA_property_subtype().
Referenced by nlaevalchan_verify_key().
|
static |
Definition at line 1335 of file anim_sys.cc.
References NlaEvalChannel::domain, NlaEvalChannel::key, and nlavalidmask_free().
Referenced by nlaeval_free().
|
static |
Definition at line 1406 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, BLI_assert, i, NlaEvalChannel::key, length(), NlaEvalChannelSnapshot::length, MEM_freeN(), MEM_malloc_arrayN(), NlaEvalChannel::mix_mode, NEC_MIX_AXIS_ANGLE, NEC_MIX_MULTIPLY, NEC_MIX_QUATERNION, NlaEvalChannelKey::prop, PROP_BOOLEAN, PROP_ENUM, PROP_FLOAT, PROP_INT, NlaEvalChannelKey::ptr, ptr, RNA_property_array_check(), RNA_property_array_length(), RNA_property_boolean_get_default(), RNA_property_boolean_get_default_array(), RNA_property_enum_get_default(), RNA_property_float_get_default(), RNA_property_float_get_default_array(), RNA_property_int_get_default(), RNA_property_int_get_default_array(), RNA_property_type(), unit_qt(), and zero_v4().
Referenced by nlaevalchan_verify_key().
|
static |
|
static |
Definition at line 1183 of file anim_sys.cc.
References BLI_ghashutil_ptrhash(), PointerRNA::data, hash, NlaEvalChannelKey::prop, NlaEvalChannelKey::ptr, and ptr.
Referenced by nlaeval_init().
|
static |
Definition at line 1228 of file anim_sys.cc.
References BLI_assert, NlaEvalChannelSnapshot::channel, NlaEvalChannelSnapshot::length, and NlaEvalChannelSnapshot::values.
Referenced by nlaeval_snapshot_ensure_channel().
|
static |
Definition at line 1218 of file anim_sys.cc.
References NlaEvalChannelSnapshot::blend_domain, BLI_assert, NlaEvalChannelSnapshot::is_base, MEM_freeN(), nlavalidmask_free(), and NlaEvalChannelSnapshot::remap_domain.
Referenced by nlaeval_snapshot_free_data().
|
static |
Definition at line 1201 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, NlaEvalChannelSnapshot::blend_domain, NlaEvalChannelSnapshot::channel, length(), NlaEvalChannelSnapshot::length, MEM_callocN(), nlavalidmask_init(), and NlaEvalChannelSnapshot::remap_domain.
Referenced by nlaeval_snapshot_ensure_channel().
|
static |
Definition at line 1371 of file anim_sys.cc.
References NlaEvalChannel::is_array.
Referenced by nla_eval_domain_action(), and nlaevalchan_validate_index_ex().
|
static |
Definition at line 1383 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, CLOG_WARN, G, G_DEBUG, NlaEvalChannel::key, NlaEvalChannelSnapshot::length, LOG, ID::name, nlaevalchan_validate_index(), PointerRNA::owner_id, NlaEvalChannelKey::ptr, and NlaEvalChannel::rna_path.
Referenced by nlasnapshot_from_action().
|
static |
Definition at line 1555 of file anim_sys.cc.
References BLI_ghash_ensure_p(), CLOG_WARN, G, G_DEBUG, LOG, nlaevalchan_verify_key(), NlaEvalData::path_hash, NlaEvalChannelKey::prop, NlaEvalChannelKey::ptr, ptr, NlaEvalChannel::rna_path, RNA_path_resolve_property(), and RNA_property_animateable().
Referenced by nla_eval_domain_action(), and nlasnapshot_from_action().
|
static |
Definition at line 1504 of file anim_sys.cc.
References NlaEvalChannel::base_snapshot, NlaEvalData::base_snapshot, BLI_addtail(), BLI_ghash_ensure_p_ex(), NlaEvalChannelSnapshot::channel, NlaEvalData::channels, NlaEvalChannel::domain, NlaEvalChannel::index, NlaEvalChannel::is_array, NlaEvalChannelSnapshot::is_base, NlaEvalChannel::key, NlaEvalData::key_hash, length(), NlaEvalChannelSnapshot::length, MEM_callocN(), NlaEvalChannel::mix_mode, nlaeval_snapshot_ensure_slot(), nlaevalchan_detect_mix_mode(), nlaevalchan_get_default_values(), nlavalidmask_init(), NlaEvalData::num_channels, NlaEvalChannel::owner, NlaEvalChannelKey::prop, NlaEvalChannelKey::ptr, NlaEvalChannel::rna_path, RNA_property_array_check(), RNA_property_array_length(), and NlaEvalChannelSnapshot::values.
Referenced by BKE_animsys_nla_remap_keyframe_values(), and nlaevalchan_verify().
| void nlasnapshot_blend | ( | NlaEvalData * | eval_data, |
| NlaEvalSnapshot * | lower_snapshot, | ||
| NlaEvalSnapshot * | upper_snapshot, | ||
| short | upper_blendmode, | ||
| float | upper_influence, | ||
| NlaEvalSnapshot * | r_blended_snapshot ) |
Blends the lower_snapshot with the upper_snapshot into r_blended_snapshot according to the given upper_blendmode and upper_influence.
For upper_snapshot, blending limited to values in the blend_domain. For Replace blend-mode, this allows the upper snapshot to have a location XYZ channel where only a subset of values are blended.
Blend with lower_snapshot's base or default.
Definition at line 3635 of file anim_sys.cc.
References NlaEvalSnapshot::base, NlaEvalData::channels, LISTBASE_FOREACH, nlaeval_snapshot_ensure_channel(), nlaeval_snapshot_ensure_size(), nlaeval_snapshot_find_channel(), nlaeval_snapshot_get(), nlaevalchan_blendOrcombine(), and NlaEvalData::num_channels.
Referenced by nlastrip_evaluate_actionclip(), and nlastrip_evaluate_transition().
| void nlasnapshot_blend_get_inverted_lower_snapshot | ( | NlaEvalData * | eval_data, |
| NlaEvalSnapshot * | blended_snapshot, | ||
| NlaEvalSnapshot * | upper_snapshot, | ||
| const short | upper_blendmode, | ||
| const float | upper_influence, | ||
| NlaEvalSnapshot * | r_lower_snapshot ) |
Using blended_snapshot and upper_snapshot, we can solve for the r_lower_snapshot.
Only channels that exist within blended_snapshot are processed. Only blended values within the remap_domain are processed.
Writes to r_upper_snapshot NlaEvalChannelSnapshot->remap_domain to match remapping success.
Assumes caller marked upper values that are in the blend_domain. This determines whether the blended value came directly from the lower snapshot or a result of blending.
Definition at line 3690 of file anim_sys.cc.
References NlaEvalData::channels, LISTBASE_FOREACH, nlaeval_snapshot_ensure_channel(), nlaeval_snapshot_ensure_size(), nlaeval_snapshot_get(), nlaevalchan_blendOrCombine_get_inverted_lower_evalchan(), and NlaEvalData::num_channels.
Referenced by nlastrip_evaluate_actionclip().
| void nlasnapshot_blend_get_inverted_upper_snapshot | ( | NlaEvalData * | eval_data, |
| NlaEvalSnapshot * | lower_snapshot, | ||
| NlaEvalSnapshot * | blended_snapshot, | ||
| short | upper_blendmode, | ||
| float | upper_influence, | ||
| NlaEvalSnapshot * | r_upper_snapshot ) |
Using blended_snapshot and lower_snapshot, we can solve for the r_upper_snapshot.
Only channels that exist within blended_snapshot are inverted.
For r_upper_snapshot, disables NlaEvalChannelSnapshot->remap_domain for failed inversions. Only values within the remap_domain are processed.
Definition at line 3662 of file anim_sys.cc.
References NlaEvalSnapshot::base, NlaEvalData::channels, LISTBASE_FOREACH, nlaeval_snapshot_ensure_channel(), nlaeval_snapshot_ensure_size(), nlaeval_snapshot_find_channel(), nlaeval_snapshot_get(), nlaevalchan_blendOrcombine_get_inverted_upper_evalchan(), and NlaEvalData::num_channels.
Referenced by BKE_animsys_nla_remap_keyframe_values().
| void nlasnapshot_blend_strip | ( | PointerRNA * | ptr, |
| NlaEvalData * | channels, | ||
| ListBase * | modifiers, | ||
| NlaEvalStrip * | nes, | ||
| NlaEvalSnapshot * | snapshot, | ||
| const AnimationEvalContext * | anim_eval_context, | ||
| const bool | flush_to_original ) |
Definition at line 3049 of file anim_sys.cc.
References nlastrip_evaluate(), ptr, and STRIP_EVAL_BLEND.
Referenced by animsys_evaluate_nla_for_flush(), animsys_evaluate_nla_for_keyframing(), and nlastrip_evaluate_transition().
| void nlasnapshot_blend_strip_get_inverted_lower_snapshot | ( | PointerRNA * | ptr, |
| NlaEvalData * | channels, | ||
| ListBase * | modifiers, | ||
| NlaEvalStrip * | nes, | ||
| NlaEvalSnapshot * | snapshot, | ||
| const AnimationEvalContext * | anim_eval_context ) |
Definition at line 3067 of file anim_sys.cc.
References nlastrip_evaluate(), ptr, and STRIP_EVAL_BLEND_GET_INVERTED_LOWER_SNAPSHOT.
Referenced by BKE_animsys_nla_remap_keyframe_values().
| void nlasnapshot_blend_strip_no_blend | ( | PointerRNA * | ptr, |
| NlaEvalData * | channels, | ||
| ListBase * | modifiers, | ||
| NlaEvalStrip * | nes, | ||
| NlaEvalSnapshot * | snapshot, | ||
| const AnimationEvalContext * | anim_eval_context ) |
Definition at line 3085 of file anim_sys.cc.
References nlastrip_evaluate(), ptr, and STRIP_EVAL_NOBLEND.
Referenced by nlastrip_evaluate_transition().
| void nlasnapshot_enable_all_blend_domain | ( | NlaEvalSnapshot * | snapshot | ) |
Definition at line 3616 of file anim_sys.cc.
References NlaEvalChannelSnapshot::blend_domain, BLI_bitmap_set_all(), i, NlaEvalChannelSnapshot::length, nlaeval_snapshot_get(), NlaValidMask::ptr, and NlaEvalSnapshot::size.
Referenced by nlastrip_evaluate_transition().
| void nlasnapshot_ensure_channels | ( | NlaEvalData * | eval_data, |
| NlaEvalSnapshot * | snapshot ) |
Definition at line 3628 of file anim_sys.cc.
References NlaEvalData::channels, LISTBASE_FOREACH, and nlaeval_snapshot_ensure_channel().
Referenced by nlastrip_evaluate_transition().
|
static |
Fills r_snapshot with the action's evaluated fcurve values with modifiers applied.
Definition at line 2641 of file anim_sys.cc.
References action_idcode_patch_check(), NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_ENABLE, BLI_bitmap_set_all(), BLI_listbase_count(), FModifiersStackStorage::buffer, evaltime, evaluate_fcurve(), evaluate_fmodifiers_storage_size_per_modifier(), evaluate_time_fmodifiers(), evaluate_value_fmodifiers(), blender::animrig::legacy::fcurves_for_action_slot(), is_fcurve_evaluatable(), NlaEvalChannel::mix_mode, FModifiersStackStorage::modifier_count, NEC_MIX_QUATERNION, nlaeval_snapshot_ensure_channel(), nlaevalchan_validate_index_ex(), nlaevalchan_verify(), NlaValidMask::ptr, ptr, FModifiersStackStorage::size_per_modifier, and NlaEvalChannelSnapshot::values.
Referenced by nlastrip_evaluate_actionclip().
| void nlastrip_evaluate | ( | const int | evaluation_mode, |
| PointerRNA * | ptr, | ||
| NlaEvalData * | channels, | ||
| ListBase * | modifiers, | ||
| NlaEvalStrip * | nes, | ||
| NlaEvalSnapshot * | snapshot, | ||
| const AnimationEvalContext * | anim_eval_context, | ||
| const bool | flush_to_original ) |
Definition at line 2992 of file anim_sys.cc.
References NlaStrip::flag, nlastrip_evaluate_actionclip(), nlastrip_evaluate_meta(), nlastrip_evaluate_transition(), NLASTRIP_FLAG_EDIT_TOUCHED, NLASTRIP_TYPE_CLIP, NLASTRIP_TYPE_META, NLASTRIP_TYPE_TRANSITION, ptr, NlaEvalStrip::strip, and NlaStrip::type.
Referenced by nlasnapshot_blend_strip(), nlasnapshot_blend_strip_get_inverted_lower_snapshot(), nlasnapshot_blend_strip_no_blend(), and nlastrip_evaluate_meta().
|
static |
Definition at line 2692 of file anim_sys.cc.
References NlaStrip::act, NlaStrip::action_slot_handle, NlaStrip::blendmode, CLOG_ERROR, NlaStrip::influence, LOG, NlaStrip::modifiers, NlaStrip::name, nlaeval_fmodifiers_join_stacks(), nlaeval_fmodifiers_split_stacks(), nlaeval_snapshot_free_data(), nlaeval_snapshot_init(), nlasnapshot_blend(), nlasnapshot_blend_get_inverted_lower_snapshot(), nlasnapshot_from_action(), ptr, NlaEvalStrip::strip, STRIP_EVAL_BLEND, STRIP_EVAL_BLEND_GET_INVERTED_LOWER_SNAPSHOT, STRIP_EVAL_NOBLEND, and NlaStrip::strip_time.
Referenced by nlastrip_evaluate().
|
static |
Definition at line 952 of file anim_sys.cc.
References NlaStrip::actend, NlaStrip::actstart, animsys_evaluate_fcurves(), AnimationEvalContext::eval_time, NlaStrip::fcurves, ListBase::first, NlaStrip::flag, fmod(), NlaStrip::influence, blender::listbase_to_vector(), NLASTRIP_FLAG_NO_TIME_MAP, NLASTRIP_FLAG_USR_INFLUENCE, NLASTRIP_FLAG_USR_TIME, NLASTRIP_FLAG_USR_TIME_CYCLIC, nlastrip_get_frame(), nlastrip_get_influence(), NLATIME_CONVERT_EVAL, RNA_pointer_create_discrete(), and NlaStrip::strip_time.
Referenced by nlastrips_ctime_get_strip().
|
static |
Definition at line 2926 of file anim_sys.cc.
References BKE_animsys_eval_context_construct_at(), BLI_assert, ELEM, NlaStrip::end, evaltime, MEM_freeN(), NlaStrip::modifiers, nlaeval_fmodifiers_join_stacks(), nlaeval_fmodifiers_split_stacks(), nlastrip_evaluate(), nlastrips_ctime_get_strip(), ptr, NlaStrip::start, NlaEvalStrip::strip, STRIP_EVAL_BLEND, STRIP_EVAL_BLEND_GET_INVERTED_LOWER_SNAPSHOT, STRIP_EVAL_NOBLEND, NlaEvalStrip::strip_time, and NlaStrip::strips.
Referenced by nlastrip_evaluate().
|
static |
Replace snapshot2 nullptr channels with base or default values so all channels blend.
Mark all snapshot2 channel's values to blend.
Definition at line 2773 of file anim_sys.cc.
References NlaEvalChannelSnapshot::blend_domain, BLI_assert_msg, BLI_BITMAP_DISABLE, BLI_BITMAP_TEST_BOOL, NlaEvalData::channels, NlaStrip::flag, i, NlaEvalChannelSnapshot::length, LISTBASE_FOREACH, NlaStrip::modifiers, NES_TIME_TRANSITION_END, NES_TIME_TRANSITION_START, NlaStrip::next, nlaeval_fmodifiers_join_stacks(), nlaeval_fmodifiers_split_stacks(), nlaeval_snapshot_ensure_channel(), nlaeval_snapshot_free_data(), nlaeval_snapshot_get(), nlaeval_snapshot_init(), nlasnapshot_blend(), nlasnapshot_blend_strip(), nlasnapshot_blend_strip_no_blend(), nlasnapshot_enable_all_blend_domain(), nlasnapshot_ensure_channels(), NLASTRIP_FLAG_REVERSE, NLASTRIP_MODE_REPLACE, NlaStrip::prev, NlaValidMask::ptr, ptr, NlaEvalChannelSnapshot::remap_domain, NlaEvalStrip::strip, STRIP_EVAL_BLEND, STRIP_EVAL_BLEND_GET_INVERTED_LOWER_SNAPSHOT, STRIP_EVAL_NOBLEND, NlaEvalStrip::strip_mode, NlaEvalStrip::strip_time, and NlaStrip::strip_time.
Referenced by nlastrip_evaluate().
|
static |
Definition at line 931 of file anim_sys.cc.
References NlaStrip::blendin, NlaStrip::blendout, NlaStrip::end, fabsf, IS_EQF, and NlaStrip::start.
Referenced by nlastrip_evaluate_controls().
| NlaEvalStrip * nlastrips_ctime_get_strip | ( | ListBase * | list, |
| ListBase * | strips, | ||
| short | index, | ||
| const AnimationEvalContext * | anim_eval_context, | ||
| const bool | flush_to_original ) |
Definition at line 996 of file anim_sys.cc.
References NlaStrip::act, BKE_animsys_eval_context_construct_at(), BLI_addtail(), ELEM, NlaStrip::end, AnimationEvalContext::eval_time, ListBase::first, NlaStrip::flag, IN_RANGE_INCL, NlaStrip::influence, ListBase::last, LISTBASE_FOREACH, MEM_callocN(), NES_TIME_AFTER, NES_TIME_BEFORE, NES_TIME_WITHIN, NlaStrip::next, nlastrip_evaluate_controls(), NLASTRIP_EXTEND_HOLD, NLASTRIP_EXTEND_HOLD_FORWARD, NLASTRIP_EXTEND_NOTHING, NLASTRIP_FLAG_MUTED, NLASTRIP_FLAG_NO_TIME_MAP, NLASTRIP_TYPE_CLIP, NLASTRIP_TYPE_TRANSITION, NlaStrip::prev, NlaStrip::start, NlaEvalStrip::strip, NlaEvalStrip::strip_mode, NlaEvalStrip::strip_time, NlaStrip::strip_time, NlaEvalStrip::track_index, and NlaStrip::type.
Referenced by animsys_evaluate_nla_for_flush(), animsys_evaluate_nla_for_keyframing(), nlastrip_evaluate_meta(), and nlastrips_ctime_get_strip_single().
|
static |
Definition at line 1146 of file anim_sys.cc.
References ListBase::first, ListBase::last, and nlastrips_ctime_get_strip().
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
XXX(Wayde Moss): BKE_nlatrack_find_tweaked() exists within nla.cc, but it doesn't appear to work as expected. From animsys_evaluate_nla_for_flush(), it returns nullptr in tweak mode. I'm not sure why. Preferably, it would be as simple as checking for (adt->act_Track == nlt) but that doesn't work either, neither does comparing indices.
This function is a temporary work around. The first disabled track is always the tweaked track.
Definition at line 3359 of file anim_sys.cc.
References LISTBASE_FOREACH, AnimData::nla_tracks, and NLATRACK_DISABLED.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
|
static |
Definition at line 1173 of file anim_sys.cc.
References mask(), and MEM_freeN().
Referenced by nlaevalchan_free_data(), and nlaevalchan_snapshot_free().
|
static |
Definition at line 1162 of file anim_sys.cc.
References BLI_BITMAP_NEW, BLI_BITMAP_SIZE, and mask().
Referenced by nlaevalchan_snapshot_new(), and nlaevalchan_verify_key().
|
static |
Definition at line 72 of file anim_sys.cc.