Blender
V3.3
|
#include <float.h>
#include <math.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_alloca.h"
#include "BLI_blenlib.h"
#include "BLI_dynstr.h"
#include "BLI_listbase.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_string_utils.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "DNA_anim_types.h"
#include "DNA_light_types.h"
#include "DNA_material_types.h"
#include "DNA_object_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.h"
#include "BKE_anim_data.h"
#include "BKE_animsys.h"
#include "BKE_context.h"
#include "BKE_fcurve.h"
#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_nla.h"
#include "BKE_node.h"
#include "BKE_report.h"
#include "BKE_texture.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "RNA_access.h"
#include "RNA_path.h"
#include "RNA_prototypes.h"
#include "BLO_read_write.h"
#include "nla_private.h"
#include "atomic_ops.h"
#include "CLG_log.h"
Go to the source code of this file.
Macros | |
#define | ANIMSYS_FLOAT_AS_BOOL(value) ((value) > (1.0f - FLT_EPSILON)) |
#define | EVAL_ANIM_IDS(first, aflag) |
#define | EVAL_ANIM_NODETREE_IDS(first, NtId_Type, aflag) |
Variables | |
static CLG_LogRef | LOG = {"bke.anim_sys"} |
#define ANIMSYS_FLOAT_AS_BOOL | ( | value | ) | ((value) > (1.0f - FLT_EPSILON)) |
Definition at line 414 of file anim_sys.c.
#define EVAL_ANIM_IDS | ( | first, | |
aflag | |||
) |
#define EVAL_ANIM_NODETREE_IDS | ( | first, | |
NtId_Type, | |||
aflag | |||
) |
Definition at line 821 of file anim_sys.c.
References ELEM, G, G_DEBUG, GS, id, bAction::id, bAction::idroot, ID::name, and NULL.
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.
first_fcurve
. This is so that the caller knows how many FCurves can be skipped while iterating over them. Definition at line 663 of file anim_sys.c.
References animsys_quaternion_evaluate_fcurves(), interp_qt_qtqt(), PathResolvedRNA::prop, PathResolvedRNA::ptr, RNA_property_float_get_array(), and RNA_property_float_set_array().
Referenced by animsys_blend_in_fcurves().
void animsys_blend_in_action | ( | PointerRNA * | ptr, |
bAction * | act, | ||
const AnimationEvalContext * | anim_eval_context, | ||
const float | blend_factor | ||
) |
Definition at line 904 of file anim_sys.c.
References action_idcode_patch_check(), animsys_blend_in_fcurves(), bAction::curves, PointerRNA::owner_id, and ptr.
Referenced by BKE_pose_apply_action_blend().
|
static |
Definition at line 685 of file anim_sys.c.
References animsys_blend_fcurves_quaternion(), BKE_animsys_read_from_rna_path(), BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), BLI_assert, BLI_strdup(), calculate_fcurve(), is_fcurve_evaluatable(), LISTBASE_FOREACH, MEM_SAFE_FREE, NULL, PathResolvedRNA::prop, PROP_BOOLEAN, PROP_ENUM, PROP_INT, ptr, RNA_property_identifier(), RNA_property_type(), and STREQ.
Referenced by animsys_blend_in_action().
|
static |
Definition at line 3558 of file anim_sys.c.
References AnimData::action, animsys_evaluate_action(), animsys_evaluate_nla_domain(), animsys_evaluate_nla_for_flush(), CLOG_WARN, NlaEvalData::eval_snapshot, G, G_DEBUG, LOG, nladata_flush_channels(), nlaeval_free(), nlaeval_init(), and ptr.
Referenced by BKE_animsys_evaluate_animdata().
|
static |
Definition at line 543 of file anim_sys.c.
References PointerRNA::data, NULL, ID::orig_id, NlaStrip::orig_strip, PointerRNA::owner_id, ptr, and PointerRNA::type.
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 3220 of file anim_sys.c.
References NlaStrip::act, AnimData::act_blendmode, AnimData::act_extendmode, AnimData::act_influence, NlaStrip::actend, AnimData::action, NlaStrip::actstart, ADT_NLA_EDIT_ON, ADT_NLA_EVAL_UPPER_TRACKS, ADT_NLA_SOLO_TRACK, NlaStrip::blendmode, calc_action_range(), NlaStrip::end, NlaStrip::extendmode, NlaStrip::flag, AnimData::flag, NlaStrip::influence, IS_EQF, NLASTRIP_EXTEND_HOLD, NLASTRIP_EXTEND_NOTHING, NLASTRIP_FLAG_MUTED, NLASTRIP_FLAG_NO_TIME_MAP, NLASTRIP_FLAG_USR_INFLUENCE, NlaStrip::start, 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.
Controls whether able to keyframe outside range of tweaked strip.
Definition at line 3183 of file anim_sys.c.
References AnimData::actstrip, ADT_NLA_EDIT_NOMAP, BKE_nlastrip_recalculate_bounds_sync_action(), NlaStrip::extendmode, NlaStrip::flag, AnimData::flag, NlaStrip::next, NLASTRIP_EXTEND_HOLD, NLASTRIP_EXTEND_NOTHING, NLASTRIP_FLAG_NO_TIME_MAP, NLASTRIP_FLAG_SYNC_LENGTH, NLASTRIP_FLAG_USR_TIME, NULL, 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 AnimationEvalContext * | anim_eval_context, | ||
const bool | flush_to_original | ||
) |
Definition at line 888 of file anim_sys.c.
References action_idcode_patch_check(), animsys_evaluate_fcurves(), bAction::curves, NULL, PointerRNA::owner_id, and ptr.
Referenced by animsys_calculate_nla(), and BKE_animsys_evaluate_animdata().
void animsys_evaluate_action_group | ( | PointerRNA * | ptr, |
bAction * | act, | ||
bActionGroup * | agrp, | ||
const AnimationEvalContext * | anim_eval_context | ||
) |
Definition at line 856 of file anim_sys.c.
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_DISABLED, FCURVE_MUTED, ListBase::first, bActionGroup::flag, FCurve::flag, FCurve::grp, FCurve::next, NULL, PointerRNA::owner_id, ptr, and FCurve::rna_path.
|
static |
Definition at line 778 of file anim_sys.c.
References FCurve::array_index, BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), calculate_fcurve(), FCurve::driver, DRIVER_FLAG_INVALID, AnimData::drivers, FCURVE_DISABLED, FCURVE_MUTED, ListBase::first, ChannelDriver::flag, FCurve::flag, FCurve::next, ptr, and FCurve::rna_path.
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 588 of file anim_sys.c.
References animsys_write_orig_anim_rna(), BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), calculate_fcurve(), is_fcurve_evaluatable(), LISTBASE_FOREACH, 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 3140 of file anim_sys.c.
References AnimData::action, ADT_NLA_EDIT_ON, ADT_NLA_EVAL_UPPER_TRACKS, ADT_NLA_SOLO_TRACK, BLI_gset_free(), BLI_gset_ptr_new(), channels(), AnimData::flag, LISTBASE_FOREACH, nla_eval_domain_action(), nla_eval_domain_strips(), AnimData::nla_tracks, NLATRACK_MUTED, NLATRACK_SOLO, NULL, ptr, 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 3352 of file anim_sys.c.
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(), NlaEvalStrip::next, NlaTrack::next, AnimData::nla_tracks, nlasnapshot_blend_strip(), nlastrips_ctime_get_strip(), nlastrips_ctime_get_strip_single(), nlatrack_find_tweaked(), NULL, 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.
NOTE: Although we early out, we can still keyframe to the non-pushed action since the keyframe remap function detects (r_context->strip.act == NULL) and will keyframe without remapping.
Definition at line 3421 of file anim_sys.c.
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, NlaTrack::flag, AnimData::flag, NlaStrip::influence, is_action_track_evaluated_without_nla(), IS_EQF, is_nlatrack_evaluatable(), NlaKeyframingContext::lower_eval_data, NlaEvalStrip::next, 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, NULL, ptr, NlaKeyframingContext::strip, NlaTrack::strips, NlaEvalStrip::track, and NlaKeyframingContext::upper_estrips.
Referenced by BKE_animsys_get_nla_keyframing_context().
|
static |
Definition at line 3881 of file anim_sys.c.
References AnimOverride::array_index, BKE_animsys_rna_path_resolve(), BKE_animsys_write_to_rna_path(), ListBase::first, AnimOverride::next, AnimData::overrides, ptr, AnimOverride::rna_path, and AnimOverride::value.
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 619 of file anim_sys.c.
References FCurve::array_index, calculate_fcurve(), FCurve::next, normalize_qt(), PathResolvedRNA::prop_index, FCurve::rna_path, and STREQ.
Referenced by animsys_blend_fcurves_quaternion().
|
static |
Definition at line 567 of file anim_sys.c.
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(), and nladata_flush_channels().
Definition at line 4136 of file anim_sys.c.
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, id, and ID::name.
Referenced by blender::deg::DepsgraphNodeBuilder::build_animdata().
AnimationEvalContext BKE_animsys_eval_context_construct | ( | struct Depsgraph * | depsgraph, |
float | eval_time | ||
) |
Definition at line 761 of file anim_sys.c.
References AnimationEvalContext::depsgraph, and depsgraph.
Referenced by achannel_setting_slider_cb(), achannel_setting_slider_nla_curve_cb(), achannel_setting_slider_shapekey_cb(), actcon_get_tarmat(), ANIM_apply_keyingset(), autokeyframe_object(), autokeyframe_pose(), 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(), ED_autokeyframe_property(), gpencil_stroke_path_animation(), gpencil_stroke_path_animation_add_keyframes(), insert_action_keys(), insert_graph_keys(), insert_key_button_exec(), ocean_bake_exec(), particle_system_update(), pose_clear_user_transforms_exec(), poselib_blend_apply(), poselib_preview_apply(), pyrna_struct_keyframe_insert(), RE_RenderAnim(), seq_prefetch_anim_eval_context(), 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 771 of file anim_sys.c.
References BKE_animsys_eval_context_construct(), and AnimationEvalContext::depsgraph.
Referenced by achannel_setting_slider_shapekey_cb(), nla_time_remap(), nlastrip_evaluate_meta(), nlastrips_ctime_get_strip(), poselib_apply_pose(), and ui_but_anim_flag().
void BKE_animsys_eval_driver | ( | Depsgraph * | depsgraph, |
ID * | id, | ||
int | driver_index, | ||
FCurve * | fcu_orig | ||
) |
Definition at line 4170 of file anim_sys.c.
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_findlink(), calculate_fcurve(), CLOG_WARN, DriverVar::curval, ChannelDriver::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, DriverTarget::flag, DriverVar::flag, ChannelDriver::flag, FCurve::flag, id, LOG, MAX_DRIVER_TARGETS, ID::name, DriverVar::next, NULL, RNA_id_pointer_create(), FCurve::rna_path, DriverVar::targets, and ChannelDriver::variables.
Referenced by blender::deg::DepsgraphNodeBuilder::build_driver().
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 3985 of file anim_sys.c.
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, id, and main().
Referenced by 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 3932 of file anim_sys.c.
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, ListBase::first, AnimData::flag, AnimData::nla_tracks, NULL, and RNA_id_pointer_create().
Referenced by BKE_animsys_eval_animdata().
Free all cached contexts from the list.
Definition at line 3866 of file anim_sys.c.
References BLI_freelistN(), LISTBASE_FOREACH, MEM_SAFE_FREE, and nlaeval_free().
Referenced by achannel_setting_slider_cb(), achannel_setting_slider_shapekey_cb(), ANIM_apply_keyingset(), autokeyframe_object(), autokeyframe_pose(), insert_action_keys(), insert_graph_keys(), and insert_keyframe().
NlaKeyframingContext* BKE_animsys_get_nla_keyframing_context | ( | struct ListBase * | cache, |
struct PointerRNA * | ptr, | ||
struct AnimData * | adt, | ||
const AnimationEvalContext * | anim_eval_context | ||
) |
Definition at line 3702 of file anim_sys.c.
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, NULL, ptr, and NlaKeyframingContext::strip.
void BKE_animsys_nla_remap_keyframe_values | ( | struct NlaKeyframingContext * | context, |
struct PointerRNA * | prop_ptr, | ||
struct PropertyRNA * | prop, | ||
float * | values, | ||
int | count, | ||
int | index, | ||
const struct AnimationEvalContext * | anim_eval_context, | ||
bool * | r_force_all, | ||
BLI_bitmap * | r_successful_remaps | ||
) |
Apply correction from the NLA context to the values about to be keyframed.
context | Context to use (may be NULL). | |
prop_ptr | Property about to be keyframed. | |
[in,out] | values | Array of property values to adjust. |
count | Number of values in the array. | |
index | Index of the element about to be updated, or -1. | |
[out] | r_force_all | Set to true if all channels must be inserted. May be NULL. |
[out] | r_successful_remaps | Bits will be enabled for indices that are both intended to be remapped and succeeded remapping. With both, it allows caller to check successfully remapped indices without having to explicitly check whether the index was intended to be remapped. |
Create blended_snapshot and fill with input values.
Remove lower NLA stack effects.
Definition at line 3740 of file anim_sys.c.
References NlaEvalChannel::base_snapshot, BLI_assert, BLI_assert_msg, BLI_bitmap_copy_all(), BLI_BITMAP_ENABLE, BLI_BITMAP_NEW, BLI_bitmap_set_all(), BLI_BITMAP_TEST_BOOL, BLI_listbase_is_empty(), NlaEvalChannelSnapshot::channel, blender::compositor::context, count, ELEM, NlaEvalChannelSnapshot::length, LISTBASE_FOREACH_BACKWARD, MEM_freeN, 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, NULL, PointerRNA::owner_id, NlaEvalChannelKey::ptr, NlaValidMask::ptr, NlaEvalChannelSnapshot::remap_domain, RNA_id_pointer_create(), and NlaEvalChannelSnapshot::values.
Referenced by get_keyframe_values().
bool BKE_animsys_read_from_rna_path | ( | PathResolvedRNA * | anim_rna, |
float * | r_value | ||
) |
Definition at line 416 of file anim_sys.c.
References BLI_assert, float(), NULL, PointerRNA::owner_id, 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(), and BKE_animsys_write_to_rna_path().
bool BKE_animsys_rna_path_resolve | ( | PointerRNA * | ptr, |
const char * | rna_path, | ||
const int | array_index, | ||
PathResolvedRNA * | r_result | ||
) |
Definition at line 367 of file anim_sys.c.
References CLOG_WARN, G, G_DEBUG, LOG, ID::name, NULL, PointerRNA::owner_id, 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(), BKE_animsys_eval_driver(), and blender::deg::AnimationBackup::restore_to_id().
Definition at line 4150 of file anim_sys.c.
References BKE_animdata_from_id(), BLI_assert, BLI_listbase_count(), AnimData::driver_array, AnimData::drivers, ListBase::first, LISTBASE_FOREACH, and MEM_mallocN.
bool BKE_animsys_write_to_rna_path | ( | struct PathResolvedRNA * | anim_rna, |
float | value | ||
) |
Write the given value to a setting using RNA, and return success.
Definition at line 478 of file anim_sys.c.
References ANIMSYS_FLOAT_AS_BOOL, BKE_animsys_read_from_rna_path(), BLI_assert, NULL, PointerRNA::owner_id, 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(), BKE_animsys_eval_driver(), nladata_flush_channels(), and blender::deg::AnimationBackup::restore_to_id().
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 126 of file anim_sys.c.
References BLI_addtail(), BLI_strncpy(), BLI_uniquename(), DATA_, KeyingSet::flag, KeyingSet::idname, KeyingSet::keyingflag, KeyingSet::keyingoverride, MEM_callocN, and KeyingSet::name.
Referenced by add_default_keyingset_exec(), add_keyingset_button_exec(), ANIM_keyingset_info_register(), and 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 160 of file anim_sys.c.
References KS_Path::array_index, BKE_keyingset_find_path(), BLI_addtail(), BLI_strdup(), BLI_strncpy(), CLOG_ERROR, ELEM, KS_Path::flag, G, G_DEBUG, KS_Path::group, KS_Path::groupmode, GS, id, KS_Path::id, KS_Path::idtype, LOG, MEM_callocN, ID::name, NULL, KeyingSet::paths, and KS_Path::rna_path.
Referenced by add_keyingset_button_exec(), and do_outliner_keyingset_editop().
KS_Path* BKE_keyingset_find_path | ( | KeyingSet * | ks, |
ID * | id, | ||
const char | group_name[], | ||
const char | rna_path[], | ||
int | array_index, | ||
int | UNUSEDgroup_mode | ||
) |
Definition at line 74 of file anim_sys.c.
References KS_Path::array_index, ELEM, ListBase::first, KS_Path::id, KS_Path::next, NULL, KeyingSet::paths, KS_Path::rna_path, and STREQ.
Referenced by BKE_keyingset_add_path().
Definition at line 266 of file anim_sys.c.
References BKE_keyingset_free_path(), ListBase::first, KS_Path::next, NULL, and KeyingSet::paths.
Referenced by ANIM_keyingset_info_unregister(), ANIM_validate_keyingset(), BKE_keyingsets_free(), and remove_active_keyingset_exec().
Definition at line 223 of file anim_sys.c.
References BLI_freelinkN(), ELEM, MEM_freeN, NULL, KeyingSet::paths, and KS_Path::rna_path.
Referenced by BKE_keyingset_free(), do_outliner_keyingset_editop(), remove_active_ks_path_exec(), and remove_keyingset_button_exec().
void BKE_keyingsets_blend_read_data | ( | BlendDataReader * | reader, |
ListBase * | list | ||
) |
Definition at line 319 of file anim_sys.c.
References BLO_read_data_address, BLO_read_list(), LISTBASE_FOREACH, and KeyingSet::paths.
Referenced by scene_blend_read_data().
void BKE_keyingsets_blend_read_expand | ( | BlendExpander * | expander, |
ListBase * | list | ||
) |
Definition at line 341 of file anim_sys.c.
References BLO_expand, LISTBASE_FOREACH, and KeyingSet::paths.
Referenced by scene_blend_read_expand().
void BKE_keyingsets_blend_read_lib | ( | BlendLibReader * | reader, |
ID * | id, | ||
ListBase * | list | ||
) |
Definition at line 332 of file anim_sys.c.
References BLO_read_id_address, id, Library::id, ID::lib, LISTBASE_FOREACH, and KeyingSet::paths.
Referenced by scene_blend_read_lib().
void BKE_keyingsets_blend_write | ( | BlendWriter * | writer, |
ListBase * | list | ||
) |
Definition at line 301 of file anim_sys.c.
References BLO_write_string(), BLO_write_struct, LISTBASE_FOREACH, and KeyingSet::paths.
Referenced by scene_blend_write().
Definition at line 239 of file anim_sys.c.
References BLI_duplicatelist(), ListBase::first, MEM_dupallocN, KS_Path::next, KeyingSet::next, KeyingSet::paths, and KS_Path::rna_path.
void BKE_keyingsets_foreach_id | ( | LibraryForeachIDData * | data, |
const ListBase * | keyingsets | ||
) |
Definition at line 255 of file anim_sys.c.
References BKE_LIB_FOREACHID_PROCESS_ID, data, ListBase::first, IDWALK_CB_NOP, and KS_Path::next.
Definition at line 282 of file anim_sys.c.
References BKE_keyingset_free(), BLI_freelinkN(), ListBase::first, KeyingSet::next, and NULL.
Referenced by ANIM_keyingset_infos_exit(), and scene_free_data().
|
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 3302 of file anim_sys.c.
References AnimData::action, ADT_NLA_EDIT_ON, ADT_NLA_SOLO_TRACK, AnimData::flag, and NULL.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
Definition at line 353 of file anim_sys.c.
References AGRP_MUTED, BKE_fcurve_is_empty(), FCURVE_DISABLED, FCURVE_MUTED, bActionGroup::flag, FCurve::flag, FCurve::grp, and NULL.
Referenced by animsys_blend_in_fcurves(), animsys_evaluate_fcurves(), nla_eval_domain_action(), and nlasnapshot_from_action().
Definition at line 3272 of file anim_sys.c.
References AnimData::act_track, ADT_NLA_EDIT_ON, ADT_NLA_SOLO_TRACK, NlaTrack::flag, AnimData::flag, NlaTrack::index, NLATRACK_DISABLED, NLATRACK_MUTED, and NLATRACK_SOLO.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
|
static |
Definition at line 1574 of file anim_sys.c.
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.
Math:
blended_value = inf * (lower_value * strip_value) + (1 - inf) * lower_value blended_value - (1 - inf) * lower_value = inf * (lower_value * strip_value) (blended_value - (1 - inf) * lower_value) / (inf * lower_value) = strip_value (blended_value - lower_value + inf * lower_value) / (inf * lower_value) = strip_value ((blended_value - lower_value) / (inf * lower_value)) + 1 = strip_value
strip_value = ((blended_value - lower_value) / (inf * lower_value)) + 1
Math:
blended_value = lower_value * (1.0f - inf) + (strip_value * inf) blended_value - lower_value * (1.0f - inf) = (strip_value * inf) (blended_value - lower_value * (1.0f - inf)) / inf = strip_value
strip_value = (blended_value - lower_value * (1.0f - inf)) / inf
Definition at line 1830 of file anim_sys.c.
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 1761 of file anim_sys.c.
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 1672 of file anim_sys.c.
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 1894 of file anim_sys.c.
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.
blended_value = lower_values @ strip_values^infl
Definition at line 1940 of file anim_sys.c.
References mul_qt_qtqt(), normalize_qt_qt(), and pow_qt_fl_normalized().
Referenced by nlaevalchan_combine_quaternion().
|
static |
Definition at line 1734 of file anim_sys.c.
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 1955 of file anim_sys.c.
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 1800 of file anim_sys.c.
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 3087 of file anim_sys.c.
References BLI_BITMAP_ENABLE, BLI_bitmap_set_all(), BLI_gset_add(), channels(), bAction::curves, NlaEvalChannel::domain, is_fcurve_evaluatable(), LISTBASE_FOREACH, NlaEvalChannel::mix_mode, NEC_MIX_QUATERNION, nlaevalchan_validate_index(), nlaevalchan_verify(), NULL, NlaValidMask::ptr, and ptr.
Referenced by animsys_evaluate_nla_domain(), and nla_eval_domain_strips().
|
static |
Definition at line 3120 of file anim_sys.c.
References channels(), LISTBASE_FOREACH, nla_eval_domain_action(), and ptr.
Referenced by animsys_evaluate_nla_domain().
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 3045 of file anim_sys.c.
References animsys_write_orig_anim_rna(), BKE_animsys_write_to_rna_path(), BLI_BITMAP_TEST, channels(), NlaEvalChannelSnapshot::length, LISTBASE_FOREACH, nlaeval_snapshot_find_channel(), NULL, PathResolvedRNA::prop_index, PathResolvedRNA::ptr, ptr, and NlaEvalChannelSnapshot::values.
Referenced by animsys_calculate_nla().
|
static |
Definition at line 2550 of file anim_sys.c.
References ELEM, ListBase::first, ListBase::last, FModifier::next, NULL, FModifier::prev, and result.
Referenced by nlastrip_evaluate_actionclip(), nlastrip_evaluate_meta(), and nlastrip_evaluate_transition().
Definition at line 2583 of file anim_sys.c.
References ELEM, ListBase::first, ListBase::last, FModifier::next, NULL, and FModifier::prev.
Referenced by nlastrip_evaluate_actionclip(), nlastrip_evaluate_meta(), and nlastrip_evaluate_transition().
|
static |
Definition at line 1321 of file anim_sys.c.
References NlaEvalData::base_snapshot, BLI_freelistN(), BLI_ghash_free(), NlaEvalSnapshot::channels, NlaEvalData::channels, NlaEvalData::eval_snapshot, NlaEvalData::key_hash, LISTBASE_FOREACH, MEM_SAFE_FREE, nlaeval_snapshot_free_data(), nlaevalchan_free_data(), NULL, and NlaEvalData::path_hash.
Referenced by animsys_calculate_nla(), and BKE_animsys_free_nla_keyframing_context_cache().
|
static |
Definition at line 1312 of file anim_sys.c.
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 1265 of file anim_sys.c.
References NlaEvalSnapshot::base, nlaeval_snapshot_ensure_slot(), nlaeval_snapshot_find_channel(), nlaevalchan_snapshot_copy(), nlaevalchan_snapshot_new(), and NULL.
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 1227 of file anim_sys.c.
References NlaEvalSnapshot::channels, CLAMP_MIN, MEM_recallocN_id, size(), and NlaEvalSnapshot::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 1241 of file anim_sys.c.
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 1249 of file anim_sys.c.
References NlaEvalSnapshot::base, NlaEvalChannel::base_snapshot, NlaEvalChannel::index, nlaeval_snapshot_get(), and NULL.
Referenced by nladata_flush_channels(), nlaeval_snapshot_ensure_channel(), nlasnapshot_blend(), and nlasnapshot_blend_get_inverted_upper_snapshot().
|
static |
Definition at line 1285 of file anim_sys.c.
References NlaEvalSnapshot::base, NlaEvalSnapshot::channels, MEM_freeN, nlaevalchan_snapshot_free(), NULL, and NlaEvalSnapshot::size.
Referenced by BKE_animsys_nla_remap_keyframe_values(), nlaeval_free(), nlastrip_evaluate_actionclip(), and nlastrip_evaluate_transition().
|
static |
Definition at line 1221 of file anim_sys.c.
References NlaEvalSnapshot::channels, NULL, 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 1210 of file anim_sys.c.
References NlaEvalSnapshot::base, NlaEvalSnapshot::channels, MAX2, MEM_callocN, 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 1990 of file anim_sys.c.
References BLI_assert, ELEM, NlaEvalChannelSnapshot::length, NULL, 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 2021 of file anim_sys.c.
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 1983 of file anim_sys.c.
References BLI_assert, NlaEvalChannelSnapshot::channel, NULL, 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 2086 of file anim_sys.c.
References NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::length, blender::math::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 2378 of file anim_sys.c.
References NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_DISABLE, BLI_BITMAP_ENABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::length, blender::math::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 2228 of file anim_sys.c.
References BLI_BITMAP_DISABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::length, blender::math::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 NULL. |
upper_necs | Can be NULL. |
upper_blendmode | Enum value in eNlaStrip_Blend_Mode. |
upper_influence | Value in range [0, 1]. |
upper_necs | Never NULL. |
Definition at line 2182 of file anim_sys.c.
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 NULL. |
upper_necs | Can be NULL. |
upper_blendmode | Enum value in eNlaStrip_Blend_Mode. |
upper_influence | Value in range [0, 1]. |
r_lower_necs | Never NULL. |
Definition at line 2503 of file anim_sys.c.
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 NULL. |
blended_necs | Never NULL. |
upper_blendmode | Enum value in eNlaStrip_Blend_Mode. |
upper_influence | Value in range [0, 1]. |
r_upper_necs | Never NULL. |
Definition at line 2331 of file anim_sys.c.
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 NULL or has zero influence.
Definition at line 2039 of file anim_sys.c.
References IS_EQF, nlaevalchan_copy_values(), and NULL.
Referenced by nlaevalchan_blend_value(), nlaevalchan_combine_quaternion(), and nlaevalchan_combine_value().
|
static |
Copies to lower necs from blended necs if upper necs is NULL or has zero influence. If successful, copies blended_necs remap domains to lower_necs.
Does not check upper value blend domains.
Definition at line 2061 of file anim_sys.c.
References BLI_bitmap_copy_all(), IS_EQF, NlaEvalChannelSnapshot::length, nlaevalchan_copy_values(), NULL, 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 2149 of file anim_sys.c.
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 2460 of file anim_sys.c.
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 2299 of file anim_sys.c.
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 2007 of file anim_sys.c.
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 2116 of file anim_sys.c.
References NlaEvalChannel::base_snapshot, NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::channel, NlaEvalChannelSnapshot::length, blender::math::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 2418 of file anim_sys.c.
References NlaEvalChannel::base_snapshot, NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_DISABLE, BLI_BITMAP_ENABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::channel, NlaEvalChannelSnapshot::length, blender::math::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 2261 of file anim_sys.c.
References NlaEvalChannel::base_snapshot, BLI_BITMAP_DISABLE, BLI_BITMAP_SET, BLI_BITMAP_TEST_BOOL, NlaEvalChannelSnapshot::channel, NlaEvalChannelSnapshot::length, blender::math::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 2030 of file anim_sys.c.
References src, 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 1457 of file anim_sys.c.
References blender::math::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 1306 of file anim_sys.c.
References NlaEvalChannel::domain, and nlavalidmask_free().
Referenced by nlaeval_free().
|
static |
Definition at line 1376 of file anim_sys.c.
References NlaEvalChannel::base_snapshot, BLI_assert, float(), NlaEvalChannel::key, NlaEvalChannelSnapshot::length, blender::math::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().
Definition at line 1162 of file anim_sys.c.
References A, Freestyle::a, B, and usdtokens::b().
Referenced by nlaeval_init().
Definition at line 1155 of file anim_sys.c.
References BLI_ghashutil_ptrhash(), PointerRNA::data, hash, NlaEvalChannelKey::prop, NlaEvalChannelKey::ptr, and ptr.
Referenced by nlaeval_init().
|
static |
Definition at line 1199 of file anim_sys.c.
References BLI_assert, NlaEvalChannelSnapshot::channel, NlaEvalChannelSnapshot::length, src, and NlaEvalChannelSnapshot::values.
Referenced by nlaeval_snapshot_ensure_channel().
|
static |
Definition at line 1189 of file anim_sys.c.
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 1173 of file anim_sys.c.
References NlaEvalChannel::base_snapshot, NlaEvalChannelSnapshot::blend_domain, NlaEvalChannelSnapshot::channel, NlaEvalChannelSnapshot::length, blender::math::length(), MEM_callocN, nlavalidmask_init(), and NlaEvalChannelSnapshot::remap_domain.
Referenced by nlaeval_snapshot_ensure_channel().
|
static |
Definition at line 1341 of file anim_sys.c.
References NlaEvalChannel::is_array.
Referenced by nla_eval_domain_action(), and nlaevalchan_validate_index_ex().
|
static |
Although array_index comes from fcurve, that doesn't necessarily mean the property has that many elements.
Definition at line 1353 of file anim_sys.c.
References NlaEvalChannel::base_snapshot, CLOG_WARN, G, G_DEBUG, id, 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 1525 of file anim_sys.c.
References BLI_ghash_ensure_p(), CLOG_WARN, G, G_DEBUG, LOG, ID::name, nlaevalchan_verify_key(), NULL, PointerRNA::owner_id, 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 1474 of file anim_sys.c.
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, NlaEvalChannelSnapshot::length, blender::math::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 3610 of file anim_sys.c.
References NlaEvalSnapshot::base, NlaEvalData::channels, LISTBASE_FOREACH, nlaeval_snapshot_ensure_channel(), nlaeval_snapshot_ensure_size(), nlaeval_snapshot_find_channel(), nlaeval_snapshot_get(), nlaevalchan_blendOrcombine(), NULL, 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 3675 of file anim_sys.c.
References NlaEvalData::channels, LISTBASE_FOREACH, nlaeval_snapshot_ensure_channel(), nlaeval_snapshot_ensure_size(), nlaeval_snapshot_get(), nlaevalchan_blendOrCombine_get_inverted_lower_evalchan(), NULL, 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.
We assume the caller only wants a subset of channels to be inverted, those that exist within blended_snapshot.
Definition at line 3637 of file anim_sys.c.
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(), NULL, 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 struct AnimationEvalContext * | anim_eval_context, | ||
const bool | flush_to_original | ||
) |
Definition at line 2998 of file anim_sys.c.
References channels(), 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 struct AnimationEvalContext * | anim_eval_context | ||
) |
Definition at line 3016 of file anim_sys.c.
References channels(), 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 struct AnimationEvalContext * | anim_eval_context | ||
) |
Definition at line 3034 of file anim_sys.c.
References channels(), nlastrip_evaluate(), ptr, and STRIP_EVAL_NOBLEND.
Referenced by nlastrip_evaluate_transition().
void nlasnapshot_enable_all_blend_domain | ( | NlaEvalSnapshot * | snapshot | ) |
Definition at line 3591 of file anim_sys.c.
References NlaEvalChannelSnapshot::blend_domain, BLI_bitmap_set_all(), NlaEvalChannelSnapshot::length, nlaeval_snapshot_get(), NULL, NlaValidMask::ptr, and NlaEvalSnapshot::size.
Referenced by nlastrip_evaluate_transition().
void nlasnapshot_ensure_channels | ( | NlaEvalData * | eval_data, |
NlaEvalSnapshot * | snapshot | ||
) |
Definition at line 3603 of file anim_sys.c.
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 2607 of file anim_sys.c.
References action_idcode_patch_check(), FCurve::array_index, NlaEvalChannelSnapshot::blend_domain, BLI_BITMAP_ENABLE, BLI_bitmap_set_all(), BLI_listbase_count(), FModifiersStackStorage::buffer, channels(), bAction::curves, evaltime, evaluate_fcurve(), evaluate_fmodifiers_storage_size_per_modifier(), evaluate_time_fmodifiers(), evaluate_value_fmodifiers(), ListBase::first, is_fcurve_evaluatable(), NlaEvalChannel::mix_mode, FModifiersStackStorage::modifier_count, NEC_MIX_QUATERNION, FCurve::next, nlaeval_snapshot_ensure_channel(), nlaevalchan_validate_index_ex(), nlaevalchan_verify(), NULL, PointerRNA::owner_id, NlaValidMask::ptr, ptr, FCurve::rna_path, 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 2941 of file anim_sys.c.
References channels(), 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 2659 of file anim_sys.c.
References NlaStrip::act, NlaStrip::blendmode, channels(), 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(), NULL, 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 938 of file anim_sys.c.
References NlaStrip::actend, NlaStrip::actstart, animsys_evaluate_fcurves(), AnimationEvalContext::eval_time, NlaStrip::fcurves, ListBase::first, NlaStrip::flag, NlaStrip::influence, 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, NULL, RNA_pointer_create(), and NlaStrip::strip_time.
Referenced by nlastrips_ctime_get_strip().
|
static |
Definition at line 2876 of file anim_sys.c.
References BKE_animsys_eval_context_construct_at(), BLI_assert, channels(), ELEM, NlaStrip::end, evaltime, MEM_freeN, NlaStrip::modifiers, nlaeval_fmodifiers_join_stacks(), nlaeval_fmodifiers_split_stacks(), nlastrip_evaluate(), nlastrips_ctime_get_strip(), NULL, 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 NULL channels with base or default values so all channels blend.
Mark all snapshot2 channel's values to blend.
Definition at line 2725 of file anim_sys.c.
References NlaEvalChannelSnapshot::blend_domain, BLI_assert, BLI_BITMAP_DISABLE, BLI_BITMAP_TEST_BOOL, channels(), NlaStrip::flag, 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, NULL, 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().
Definition at line 917 of file anim_sys.c.
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 982 of file anim_sys.c.
References NlaStrip::act, BKE_animsys_eval_context_construct_at(), BLI_addtail(), ELEM, NlaStrip::end, AnimationEvalContext::eval_time, NlaStrip::extendmode, ListBase::first, NlaStrip::flag, IN_RANGE_INCL, NlaStrip::influence, ListBase::last, MEM_callocN, NES_TIME_AFTER, NES_TIME_BEFORE, NES_TIME_WITHIN, NlaStrip::next, nlastrip_evaluate_controls(), NLASTRIP_EXTEND_HOLD, NLASTRIP_EXTEND_NOTHING, NLASTRIP_FLAG_MUTED, NLASTRIP_FLAG_NO_TIME_MAP, NLASTRIP_TYPE_CLIP, NLASTRIP_TYPE_TRANSITION, NULL, 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 1118 of file anim_sys.c.
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.c, but it doesn't appear to work as expected. From animsys_evaluate_nla_for_flush(), it returns NULL 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 3330 of file anim_sys.c.
References ListBase::first, NlaTrack::flag, NlaTrack::next, AnimData::nla_tracks, NLATRACK_DISABLED, and NULL.
Referenced by animsys_evaluate_nla_for_flush(), and animsys_evaluate_nla_for_keyframing().
|
static |
Definition at line 1145 of file anim_sys.c.
References mask(), and MEM_freeN.
Referenced by nlaevalchan_free_data(), and nlaevalchan_snapshot_free().
|
static |
Definition at line 1134 of file anim_sys.c.
References BLI_BITMAP_NEW, BLI_BITMAP_SIZE, and mask().
Referenced by nlaevalchan_snapshot_new(), and nlaevalchan_verify_key().
|
static |
Definition at line 67 of file anim_sys.c.
Referenced by animsys_calculate_nla(), BKE_animsys_eval_driver(), BKE_animsys_rna_path_resolve(), BKE_keyingset_add_path(), nlaevalchan_validate_index_ex(), nlaevalchan_verify(), and nlastrip_evaluate_actionclip().