Blender V4.3
anim_data.cc File Reference
#include "MEM_guardedalloc.h"
#include <cstring>
#include <optional>
#include "ANIM_action.hh"
#include "BKE_action.hh"
#include "BKE_anim_data.hh"
#include "BKE_animsys.h"
#include "BKE_context.hh"
#include "BKE_fcurve.hh"
#include "BKE_fcurve_driver.h"
#include "BKE_global.hh"
#include "BKE_idtype.hh"
#include "BKE_lib_id.hh"
#include "BKE_lib_query.hh"
#include "BKE_main.hh"
#include "BKE_nla.hh"
#include "BKE_node.hh"
#include "BKE_report.hh"
#include "DNA_ID.h"
#include "DNA_anim_types.h"
#include "DNA_light_types.h"
#include "DNA_material_types.h"
#include "DNA_node_types.h"
#include "DNA_space_types.h"
#include "DNA_windowmanager_types.h"
#include "DNA_world_types.h"
#include "BLI_alloca.h"
#include "BLI_dynstr.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "DEG_depsgraph.hh"
#include "BLO_read_write.hh"
#include "RNA_access.hh"
#include "RNA_path.hh"
#include "ANIM_action_iterators.hh"
#include "ANIM_action_legacy.hh"
#include "CLG_log.h"

Go to the source code of this file.

Macros

#define ANIMDATA_IDS_CB(first)
 
#define ANIMDATA_NODETREE_IDS_CB(first, NtId_Type)
 

Functions

bool id_type_can_have_animdata (const short id_type)
 
bool id_can_have_animdata (const ID *id)
 
AnimDataBKE_animdata_from_id (const ID *id)
 
AnimDataBKE_animdata_ensure_id (ID *id)
 
static bool animdata_set_action (ReportList *reports, ID *id, bAction **act_slot, bAction *act)
 
bool BKE_animdata_set_tmpact (ReportList *reports, ID *id, bAction *act)
 
bool BKE_animdata_set_action (ReportList *reports, ID *id, bAction *act)
 
bool BKE_animdata_action_editable (const AnimData *adt)
 
bool BKE_animdata_action_ensure_idroot (const ID *owner, bAction *action)
 
void BKE_animdata_free (ID *id, const bool do_id_user)
 
bool BKE_animdata_id_is_animated (const ID *id)
 
void BKE_animdata_foreach_id (AnimData *adt, LibraryForeachIDData *data)
 
AnimDataBKE_animdata_copy_in_lib (Main *bmain, std::optional< Library * > owner_library, AnimData *adt, const int flag)
 
AnimDataBKE_animdata_copy (Main *bmain, AnimData *adt, const int flag)
 
bool BKE_animdata_copy_id (Main *bmain, ID *id_to, ID *id_from, const int flag)
 
static void animdata_copy_id_action (Main *bmain, ID *id, const bool set_newid, const bool do_linked_id)
 
void BKE_animdata_copy_id_action (Main *bmain, ID *id)
 
void BKE_animdata_duplicate_id_action (Main *bmain, ID *id, const uint duplicate_flags)
 
void BKE_animdata_merge_copy (Main *bmain, ID *dst_id, ID *src_id, eAnimData_MergeCopy_Modes action_mode, bool fix_drivers)
 
static bool animpath_matches_basepath (const char path[], const char basepath[])
 
static void animpath_update_basepath (FCurve *fcu, const char *old_basepath, const char *new_basepath)
 
static void action_move_fcurves_by_basepath (bAction *srcAct, const animrig::slot_handle_t src_slot_handle, bAction *dstAct, const animrig::slot_handle_t dst_slot_handle, const char *src_basepath, const char *dst_basepath)
 
static void animdata_move_drivers_by_basepath (AnimData *srcAdt, AnimData *dstAdt, const char *src_basepath, const char *dst_basepath)
 
void BKE_animdata_transfer_by_basepath (Main *bmain, ID *srcID, ID *dstID, ListBase *basepaths)
 
static bool check_rna_path_is_valid (ID *owner_id, const char *path)
 
static char * rna_path_rename_fix (ID *owner_id, const char *prefix, const char *oldName, const char *newName, char *oldpath, bool verify_paths)
 
static bool fcurves_path_rename_fix (ID *owner_id, const char *prefix, const char *oldName, const char *newName, const char *oldKey, const char *newKey, blender::Span< FCurve * > curves, bool verify_paths)
 
static bool drivers_path_rename_fix (ID *owner_id, ID *ref_id, const char *prefix, const char *oldName, const char *newName, const char *oldKey, const char *newKey, ListBase *curves, bool verify_paths)
 
static bool nlastrips_path_rename_fix (ID *owner_id, const char *prefix, const char *oldName, const char *newName, const char *oldKey, const char *newKey, ListBase *strips, bool verify_paths)
 
char * BKE_animsys_fix_rna_path_rename (ID *owner_id, char *old_path, const char *prefix, const char *oldName, const char *newName, int oldSubscript, int newSubscript, bool verify_paths)
 
void BKE_action_fix_paths_rename (ID *owner_id, bAction *act, const char *prefix, const char *oldName, const char *newName, int oldSubscript, int newSubscript, bool verify_paths)
 
void BKE_animdata_fix_paths_rename (ID *owner_id, AnimData *adt, ID *ref_id, const char *prefix, const char *oldName, const char *newName, int oldSubscript, int newSubscript, bool verify_paths)
 
static bool fcurves_path_remove_from_listbase (const char *prefix, ListBase *curves)
 
static bool nlastrips_path_remove_fix (const char *prefix, ListBase *strips)
 
bool BKE_animdata_fix_paths_remove (ID *id, const char *prefix)
 
static void fcurves_apply_cb (ID *id, blender::Span< FCurve * > fcurves, const FunctionRef< void(ID *, FCurve *)> func)
 
static void fcurves_listbase_apply_cb (ID *id, ListBase *fcurves, const FunctionRef< void(ID *, FCurve *)> func)
 
static void nlastrips_apply_all_curves_cb (ID *id, ListBase *strips, const FunctionRef< void(ID *, FCurve *)> func)
 
static void adt_apply_all_fcurves_cb (ID *id, AnimData *adt, const FunctionRef< void(ID *, FCurve *)> func)
 
void BKE_fcurves_id_cb (ID *id, const FunctionRef< void(ID *, FCurve *)> func)
 
void BKE_fcurves_main_cb (Main *bmain, const FunctionRef< void(ID *, FCurve *)> func)
 
void BKE_animdata_main_cb (Main *bmain, const FunctionRef< void(ID *, AnimData *)> func)
 
void BKE_animdata_fix_paths_rename_all (ID *ref_id, const char *prefix, const char *oldName, const char *newName)
 
void BKE_animdata_fix_paths_rename_all_ex (Main *bmain, ID *ref_id, const char *prefix, const char *oldName, const char *newName, const int oldSubscript, const int newSubscript, const bool verify_paths)
 
void BKE_animdata_blend_write (BlendWriter *writer, ID *id)
 
void BKE_animdata_blend_read_data (BlendDataReader *reader, ID *id)
 
void BKE_animdata_liboverride_post_process (ID *id)
 

Variables

static CLG_LogRef LOG = {"bke.anim_sys"}
 

Macro Definition Documentation

◆ ANIMDATA_IDS_CB

#define ANIMDATA_IDS_CB ( first)
Value:
for (id = static_cast<ID *>(first); id; id = static_cast<ID *>(id->next)) { \
if (adt) { \
func(id, adt); \
} \
} \
(void)0
AnimData * BKE_animdata_from_id(const ID *id)
Definition anim_data.cc:89
Definition DNA_ID.h:413

Referenced by BKE_animdata_main_cb().

◆ ANIMDATA_NODETREE_IDS_CB

#define ANIMDATA_NODETREE_IDS_CB ( first,
NtId_Type )
Value:
for (id = static_cast<ID *>(first); id; id = static_cast<ID *>(id->next)) { \
NtId_Type *ntp = (NtId_Type *)id; \
if (ntp->nodetree) { \
AnimData *adt2 = BKE_animdata_from_id((ID *)ntp->nodetree); \
if (adt2) { \
func(id, adt2); \
} \
} \
if (adt) { \
func(id, adt); \
} \
} \
(void)0

Referenced by BKE_animdata_main_cb().

Function Documentation

◆ action_move_fcurves_by_basepath()

static void action_move_fcurves_by_basepath ( bAction * srcAct,
const animrig::slot_handle_t src_slot_handle,
bAction * dstAct,
const animrig::slot_handle_t dst_slot_handle,
const char * src_basepath,
const char * dst_basepath )
static

◆ adt_apply_all_fcurves_cb()

◆ animdata_copy_id_action()

◆ animdata_move_drivers_by_basepath()

static void animdata_move_drivers_by_basepath ( AnimData * srcAdt,
AnimData * dstAdt,
const char * src_basepath,
const char * dst_basepath )
static

◆ animdata_set_action()

static bool animdata_set_action ( ReportList * reports,
ID * id,
bAction ** act_slot,
bAction * act )
static

◆ animpath_matches_basepath()

static bool animpath_matches_basepath ( const char path[],
const char basepath[] )
static

Helper heuristic for determining if a path is compatible with the basepath

Parameters
pathFull RNA-path from some data (usually an F-Curve) to compare
basepathShorter path fragment to look for
Returns
Whether there is a match

Definition at line 612 of file anim_data.cc.

References STRPREFIX.

Referenced by action_move_fcurves_by_basepath(), animdata_move_drivers_by_basepath(), and animpath_update_basepath().

◆ animpath_update_basepath()

static void animpath_update_basepath ( FCurve * fcu,
const char * old_basepath,
const char * new_basepath )
static

◆ BKE_action_fix_paths_rename()

void BKE_action_fix_paths_rename ( struct ID * owner_id,
struct bAction * act,
const char * prefix,
const char * oldName,
const char * newName,
int oldSubscript,
int newSubscript,
bool verify_paths )

Fix all the paths for the given ID + Action.

This is just an external wrapper for the F-Curve fixing function, with input validity checks on top of the basic method.

Note
it is assumed that the structure we're replacing is <prefix><["><name><"]> i.e. pose.bones["Bone"].

Definition at line 1038 of file anim_data.cc.

References BLI_array_alloca, BLI_sprintfN(), BLI_str_escape(), ELEM, blender::animrig::legacy::fcurves_all(), fcurves_path_rename_fix(), and MEM_freeN().

Referenced by constraint_bone_name_fix(), and joined_armature_fix_links_constraints().

◆ BKE_animdata_action_editable()

bool BKE_animdata_action_editable ( const AnimData * adt)

◆ BKE_animdata_action_ensure_idroot()

bool BKE_animdata_action_ensure_idroot ( const ID * owner,
bAction * action )

Ensure that the action's idroot is set correctly given the ID type of the owner. Return true if it is, false if it was already set to an incompatible type.

Definition at line 232 of file anim_data.cc.

References blender::animrig::legacy::action_treat_as_legacy(), GS, bAction::idroot, and ID::name.

Referenced by animdata_set_action(), blender::animrig::generic_assign_action(), and what_does_obaction().

◆ BKE_animdata_blend_read_data()

◆ BKE_animdata_blend_write()

◆ BKE_animdata_copy()

AnimData * BKE_animdata_copy ( Main * bmain,
AnimData * adt,
int flag )

Make a copy of the given AnimData - to be used when copying data-blocks.

Note
Regarding handling of IDs managed by the AnimData struct, this function follows the behaviors of the generic BKE_id_copy_ex, please see its documentation for more details.
Parameters
flagControl ID pointers management, see LIB_ID_CREATE_.../LIB_ID_COPY_... flags in BKE_lib_id.hh.
Returns
The copied animdata.

Definition at line 447 of file anim_data.cc.

References BKE_animdata_copy_in_lib(), and flag.

Referenced by BKE_animdata_copy_id(), and ED_armature_join_objects_exec().

◆ BKE_animdata_copy_id()

bool BKE_animdata_copy_id ( Main * bmain,
ID * id_to,
ID * id_from,
int flag )
Parameters
flagControl ID pointers management, see LIB_ID_CREATE_.../LIB_ID_COPY_... flags in BKE_lib_id.hh
Returns
true is successfully copied.

Definition at line 452 of file anim_data.cc.

References IdAdtTemplate::adt, BKE_animdata_copy(), BKE_animdata_free(), BKE_animdata_from_id(), flag, GS, LIB_ID_CREATE_NO_USER_REFCOUNT, and ID::name.

Referenced by blender::ed::object::make_links_data_exec().

◆ BKE_animdata_copy_id_action()

void BKE_animdata_copy_id_action ( Main * bmain,
ID * id )

Copy AnimData Actions.

Definition at line 515 of file anim_data.cc.

References animdata_copy_id_action(), and ID_IS_OVERRIDE_LIBRARY.

◆ BKE_animdata_copy_in_lib()

AnimData * BKE_animdata_copy_in_lib ( Main * bmain,
std::optional< Library * > owner_library,
AnimData * adt,
int flag )

Same as BKE_animdata_copy, but allows to duplicate Action IDs into a library.

Parameters
owner_librarythe Library to 'assign' the newly created ID to. Use nullptr to make ID not use any library (i.e. become a local ID). Use std::nullopt for default behavior (i.e. behavior of the BKE_animdata_copy function).

Definition at line 364 of file anim_data.cc.

References AnimData::action, BKE_fcurves_copy(), BKE_id_copy_in_lib(), BKE_nla_tracks_copy_from_adt(), BLI_assert, BLI_listbase_clear(), AnimData::driver_array, AnimData::drivers, flag, id_us_plus(), LIB_ID_COPY_ACTIONS, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, MEM_dupallocN, AnimData::overrides, AnimData::tmpact, and blender::animrig::Slot::users_invalidate().

Referenced by BKE_animdata_copy(), BKE_libblock_copy_in_lib(), and blender::bke::greasepencil::convert::legacy_gpencil_to_grease_pencil().

◆ BKE_animdata_duplicate_id_action()

void BKE_animdata_duplicate_id_action ( Main * bmain,
ID * id,
const uint duplicate_flags )

◆ BKE_animdata_ensure_id()

◆ BKE_animdata_fix_paths_remove()

bool BKE_animdata_fix_paths_remove ( struct ID * id,
const char * prefix )

◆ BKE_animdata_fix_paths_rename()

void BKE_animdata_fix_paths_rename ( struct ID * owner_id,
struct AnimData * adt,
struct ID * ref_id,
const char * prefix,
const char * oldName,
const char * newName,
int oldSubscript,
int newSubscript,
bool verify_paths )

◆ BKE_animdata_fix_paths_rename_all()

void BKE_animdata_fix_paths_rename_all ( struct ID * ref_id,
const char * prefix,
const char * oldName,
const char * newName )

◆ BKE_animdata_fix_paths_rename_all_ex()

void BKE_animdata_fix_paths_rename_all_ex ( struct Main * bmain,
struct ID * ref_id,
const char * prefix,
const char * oldName,
const char * newName,
int oldSubscript,
int newSubscript,
bool verify_paths )

Fix all RNA-Paths throughout the database (directly access the Global.main version).

Note
it is assumed that the structure we're replacing is <prefix><["><name><"]> i.e. pose.bones["Bone"]

Definition at line 1438 of file anim_data.cc.

References BKE_animdata_fix_paths_rename(), and BKE_animdata_main_cb().

Referenced by BKE_animdata_fix_paths_rename_all(), and version_node_socket_index_animdata().

◆ BKE_animdata_foreach_id()

void BKE_animdata_foreach_id ( AnimData * adt,
LibraryForeachIDData * data )

◆ BKE_animdata_free()

◆ BKE_animdata_from_id()

AnimData * BKE_animdata_from_id ( const ID * id)

Get AnimData from the given ID-block.

Definition at line 89 of file anim_data.cc.

References IdAdtTemplate::adt, and id_can_have_animdata().

Referenced by achannel_setting_slider_cb(), action_to_animdata(), ANIM_list_elem_update(), ANIM_remove_driver(), animdata_copy_id_action(), animdata_filter_base_is_ok(), animfilter_block_data(), animrecord_check_state(), animviz_calc_motionpaths(), blender::animrig::assign_action_ensure_slot_for_keying(), blender::animrig::assign_action_slot(), BKE_animdata_blend_write(), BKE_animdata_copy_id(), BKE_animdata_fix_paths_remove(), BKE_animdata_id_is_animated(), BKE_animdata_liboverride_post_process(), BKE_animdata_merge_copy(), BKE_animdata_set_action(), BKE_animdata_set_tmpact(), BKE_animdata_transfer_by_basepath(), BKE_animsys_eval_animdata(), BKE_animsys_eval_driver(), BKE_animsys_update_driver_array(), BKE_fcurve_find_by_rna_context_ui(), BKE_fcurves_id_cb(), BKE_lib_override_library_property_is_animated(), BKE_library_id_can_use_filter_id(), BKE_nla_debug_print_flags(), blender::deg::DepsgraphNodeBuilder::build_animdata(), blender::deg::DepsgraphRelationBuilder::build_animdata_curves(), blender::deg::DepsgraphRelationBuilder::build_animdata_drivers(), blender::deg::DepsgraphRelationBuilder::build_copy_on_write_relations(), blender::deg::DepsgraphRelationBuilder::build_driver_relations(), calculate_fcurve_bounds_and_unhide(), blender::animrig::clear_keyframe(), convert_action_exec(), convert_action_poll(), curve_is_animated(), blender::animrig::delete_keyframe(), do_graph_region_driver_buttons(), do_version_hue_sat_node(), do_versions_after_linking_250(), do_versions_after_linking_300(), do_versions_after_linking_400(), do_versions_ipos_to_animato(), draw_fcurve_curve(), ED_curve_updateAnimPaths(), blender::ed::outliner::TreeElementID::expand(), blender::animrig::Action::find_suitable_slot_for(), blender::animrig::foreach_action_slot_use_with_references(), blender::bke::nla::foreach_strip(), gather_frames_to_render(), gather_frames_to_render_for_id(), blender::animrig::get_action(), blender::animrig::get_action_slot_pair(), get_fcurves_of_property(), blender::interface::internal::get_property_drivers(), blender::ed::greasepencil::get_selected_object_keyframes(), blender::deg::graph_tag_ids_for_visible_update(), id_data_find_fcurve(), id_frame_has_keyframe(), insert_key_button_exec(), ipo_to_animdata(), blender::bke::greasepencil::convert::legacy_gpencil_to_grease_pencil(), blender::bke::greasepencil::convert::legacy_object_modifier_common(), blender::bke::greasepencil::convert::legacy_object_thickness_modifier_thickness_anim(), library_foreach_ID_link(), blender::ed::object::make_local_exec(), blender::ed::object::make_local_material_tag(), make_new_animlistelem(), mouse_nla_tracks(), nlastrip_shuffle_transformed(), nlastrips_to_animdata(), poseAnim_mapping_refresh(), poselib_keytag_pose(), pyrna_struct_driver_add(), RE_RenderAnim(), recalcData_nla(), remove_sequencer_fcurves(), RNA_property_anim_editable(), RNA_property_driver_editable(), seq_prefetch_frames(), seq_render_mask(), blender::ed::object::single_object_action_users(), blender::ed::object::single_objectdata_action_users(), blender::animrig::Action::slot_name_propagate(), tag_update_animation_element(), texture_slot_move_exec(), transdata_get_track_shuffle_offset_side(), uiTemplateAction(), undocurve_from_editcurve(), undocurve_to_editcurve(), verify_driver_fcurve(), version_liboverride_rnacollections_insertion_animdata(), version_nla_action_strip_hold(), version_nla_tweakmode_incomplete(), and version_principled_bsdf_update_animdata().

◆ BKE_animdata_id_is_animated()

◆ BKE_animdata_liboverride_post_process()

void BKE_animdata_liboverride_post_process ( ID * id)

Process the AnimData struct after all library overrides have been applied.

This is necessary as an extra step to fix the NLA, as that requires multiple pointers & various sets of flags to all be consistent. It's much easier to do that once all overrides have been applied.

Definition at line 1521 of file anim_data.cc.

References BKE_animdata_from_id(), and BKE_nla_liboverride_post_process().

Referenced by BKE_lib_override_library_update().

◆ BKE_animdata_main_cb()

◆ BKE_animdata_merge_copy()

◆ BKE_animdata_set_action()

bool BKE_animdata_set_action ( ReportList * reports,
ID * id,
bAction * act )

Set active action used by AnimData from the given ID-block.

Called when user tries to change the active action of an AnimData block (via RNA, Outliner, etc.)

Parameters
reportsCan be NULL.
idThe owner of the animation data
actThe Action to set, or NULL to clear.
Returns
true when the action was successfully updated, false otherwise.

Definition at line 194 of file anim_data.cc.

References AnimData::action, animdata_set_action(), blender::animrig::assign_action(), BKE_animdata_action_editable(), BKE_animdata_ensure_id(), BKE_animdata_from_id(), BKE_report(), RPT_ERROR, and RPT_WARNING.

Referenced by blender::ed::outliner::actionset_id_fn(), blender::ed::outliner::unlink_action_fn(), and blender::ed::outliner::unlinkact_animdata_fn().

◆ BKE_animdata_set_tmpact()

bool BKE_animdata_set_tmpact ( ReportList * reports,
ID * id,
bAction * act )

Same as BKE_animdata_set_action(), except sets tmpact instead of action.

Definition at line 181 of file anim_data.cc.

References animdata_set_action(), BKE_animdata_from_id(), BKE_report(), RPT_WARNING, and AnimData::tmpact.

◆ BKE_animdata_transfer_by_basepath()

void BKE_animdata_transfer_by_basepath ( struct Main * bmain,
struct ID * srcID,
struct ID * dstID,
struct ListBase * basepaths )

◆ BKE_animsys_fix_rna_path_rename()

char * BKE_animsys_fix_rna_path_rename ( struct ID * owner_id,
char * old_path,
const char * prefix,
const char * oldName,
const char * newName,
int oldSubscript,
int newSubscript,
bool verify_paths )

Get a "fixed" version of the given path old_path.

This is just an external wrapper for the RNA-Path fixing function, with input validity checks on top of the basic method.

Note
it is assumed that the structure we're replacing is <prefix><["><name><"]> i.e. pose.bones["Bone"].

Definition at line 981 of file anim_data.cc.

References BLI_array_alloca, BLI_sprintfN(), BLI_str_escape(), CLOG_WARN, ELEM, G, G_DEBUG, LOG, MEM_freeN(), printf, result, and rna_path_rename_fix().

Referenced by joined_armature_fix_animdata_cb().

◆ BKE_fcurves_id_cb()

void BKE_fcurves_id_cb ( ID * id,
const FunctionRef< void(ID *, FCurve *)> func )

Definition at line 1302 of file anim_data.cc.

References adt_apply_all_fcurves_cb(), and BKE_animdata_from_id().

◆ BKE_fcurves_main_cb()

void BKE_fcurves_main_cb ( Main * bmain,
const FunctionRef< void(ID *, FCurve *)> func )

Definition at line 1310 of file anim_data.cc.

References adt_apply_all_fcurves_cb(), and BKE_animdata_main_cb().

◆ check_rna_path_is_valid()

static bool check_rna_path_is_valid ( ID * owner_id,
const char * path )
static

Definition at line 775 of file anim_data.cc.

References ptr, RNA_id_pointer_create(), and RNA_path_resolve_property().

Referenced by rna_path_rename_fix().

◆ drivers_path_rename_fix()

static bool drivers_path_rename_fix ( ID * owner_id,
ID * ref_id,
const char * prefix,
const char * oldName,
const char * newName,
const char * oldKey,
const char * newKey,
ListBase * curves,
bool verify_paths )
static

◆ fcurves_apply_cb()

static void fcurves_apply_cb ( ID * id,
blender::Span< FCurve * > fcurves,
const FunctionRef< void(ID *, FCurve *)> func )
static

Definition at line 1246 of file anim_data.cc.

Referenced by adt_apply_all_fcurves_cb(), and nlastrips_apply_all_curves_cb().

◆ fcurves_listbase_apply_cb()

static void fcurves_listbase_apply_cb ( ID * id,
ListBase * fcurves,
const FunctionRef< void(ID *, FCurve *)> func )
static

Definition at line 1254 of file anim_data.cc.

References LISTBASE_FOREACH.

Referenced by adt_apply_all_fcurves_cb().

◆ fcurves_path_remove_from_listbase()

static bool fcurves_path_remove_from_listbase ( const char * prefix,
ListBase * curves )
static

Remove F-Curves from the listbase when their RNA path starts with prefix.

Definition at line 1171 of file anim_data.cc.

References BKE_fcurve_free(), BLI_remlink(), FCurve::next, FCurve::rna_path, and STRPREFIX.

Referenced by BKE_animdata_fix_paths_remove().

◆ fcurves_path_rename_fix()

static bool fcurves_path_rename_fix ( ID * owner_id,
const char * prefix,
const char * oldName,
const char * newName,
const char * oldKey,
const char * newKey,
blender::Span< FCurve * > curves,
bool verify_paths )
static

◆ id_can_have_animdata()

◆ id_type_can_have_animdata()

bool id_type_can_have_animdata ( short id_type)

◆ nlastrips_apply_all_curves_cb()

static void nlastrips_apply_all_curves_cb ( ID * id,
ListBase * strips,
const FunctionRef< void(ID *, FCurve *)> func )
static

◆ nlastrips_path_remove_fix()

static bool nlastrips_path_remove_fix ( const char * prefix,
ListBase * strips )
static

◆ nlastrips_path_rename_fix()

static bool nlastrips_path_rename_fix ( ID * owner_id,
const char * prefix,
const char * oldName,
const char * newName,
const char * oldKey,
const char * newKey,
ListBase * strips,
bool verify_paths )
static

◆ rna_path_rename_fix()

static char * rna_path_rename_fix ( ID * owner_id,
const char * prefix,
const char * oldName,
const char * newName,
char * oldpath,
bool verify_paths )
static

Variable Documentation

◆ LOG