Blender V5.0
anim_data.cc File Reference
#include "MEM_guardedalloc.h"
#include <cstring>
#include <optional>
#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_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_string_utf8.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.

Namespaces

namespace  blender
namespace  blender::bke
namespace  blender::bke::animdata

Typedefs

using IDFCurveCallback = FunctionRef<bool(ID *, FCurve *)>

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)
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, animrig::slot_handle_t slot_handle, 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)
bool BKE_animdata_driver_path_remove (ID *id, const char *prefix)
bool BKE_animdata_drivers_remove_for_rna_struct (ID &owner_id, StructRNA &type, void *data)
static bool fcurves_apply_cb (ID *id, blender::Span< FCurve * > fcurves, const IDFCurveCallback func)
static bool fcurves_listbase_apply_cb (ID *id, ListBase *fcurves, const IDFCurveCallback func)
static bool nlastrips_apply_all_curves_cb (ID *id, ListBase *strips, const IDFCurveCallback func)
static bool adt_apply_all_fcurves_cb (ID *id, AnimData *adt, const IDFCurveCallback 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_blend_write (BlendWriter *writer, ID *id)
void BKE_animdata_blend_read_data (BlendDataReader *reader, ID *id)
void BKE_animdata_liboverride_post_process (ID *id)
void blender::bke::animdata::action_slots_user_cache_invalidate (Main &bmain)
bool blender::bke::animdata::prop_is_animated (const AnimData *adt, StringRefNull rna_path, int array_index)

Variables

static CLG_LogRef LOG = {"anim.data"}

Typedef Documentation

◆ IDFCurveCallback

using IDFCurveCallback = FunctionRef<bool(ID *, FCurve *)>

Callback function for ID & F-Curve reporting when looping over all F-Curves of an ID.

Returns
whether looping should continue (true = keep going, false = stop).

Definition at line 1177 of file anim_data.cc.

Function Documentation

◆ action_move_fcurves_by_basepath()

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()

bool adt_apply_all_fcurves_cb ( ID * id,
AnimData * adt,
const IDFCurveCallback func )
static

Call the callback function for all F-Curves on the ID. Muted NLA Tracks are ignored, drivers and Actions on NLA strips are included.

Returns
whether the loop was completed to the end, so false if any call of the callback returned false.

Definition at line 1229 of file anim_data.cc.

References AnimData::action, BKE_nlatrack_is_enabled(), AnimData::drivers, fcurves_apply_cb(), blender::animrig::legacy::fcurves_for_action_slot(), fcurves_listbase_apply_cb(), LISTBASE_FOREACH, AnimData::nla_tracks, nlastrips_apply_all_curves_cb(), AnimData::slot_handle, AnimData::tmp_slot_handle, and AnimData::tmpact.

Referenced by BKE_fcurves_id_cb(), BKE_fcurves_main_cb(), and blender::bke::animdata::prop_is_animated().

◆ animdata_copy_id_action()

◆ animdata_move_drivers_by_basepath()

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

◆ animpath_matches_basepath()

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 529 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()

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 ( ID * owner_id,
bAction * act,
animrig::slot_handle_t slot_handle,
const char * prefix,
const char * oldName,
const char * newName,
int oldSubscript,
int newSubscript,
bool verify_paths )

◆ 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 159 of file anim_data.cc.

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

Referenced by blender::bke::greasepencil::convert::AnimDataConvertor::fcurves_convert_finalize(), 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 364 of file anim_data.cc.

References BKE_animdata_copy_in_lib(), and flag.

Referenced by BKE_animdata_copy_id(), ED_armature_join_objects_exec(), and blender::ed::greasepencil::join_object_with_active().

◆ 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 369 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 432 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 281 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_driver_path_remove()

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

Remove drivers that have an RNA path starting with prefix.

Returns
true if any driver was removed.

Definition at line 1147 of file anim_data.cc.

References BKE_animdata_from_id(), AnimData::drivers, and fcurves_path_remove_from_listbase().

Referenced by BKE_animdata_drivers_remove_for_rna_struct().

◆ BKE_animdata_drivers_remove_for_rna_struct()

bool BKE_animdata_drivers_remove_for_rna_struct ( struct ID & owner_id,
struct StructRNA & type,
void * data )

Remove all drivers from the given struct.

Parameters
typeneeds to be a struct owned by the given ID.
datathe actual struct data, needs to be the data for the StructRNA.
Returns
true if any driver was removed.

Definition at line 1158 of file anim_data.cc.

References BKE_animdata_driver_path_remove(), BLI_assert_unreachable, data, RNA_path_from_ID_to_struct(), and RNA_pointer_create_discrete().

Referenced by BKE_constraint_remove_ex(), BKE_object_shapekey_remove(), and blender::ed::object::object_modifier_remove().

◆ 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_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 83 of file anim_data.cc.

References IdAdtTemplate::adt, and id_can_have_animdata().

Referenced by achannel_setting_slider_cb(), action_main_region_draw(), ANIM_list_elem_update(), ANIM_remove_driver(), animdata_copy_id_action(), animdata_filter_base_is_ok(), animfilter_block_data(), blender::ed::transform::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_driver_path_remove(), 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_transfer_by_basepath(), BKE_animsys_eval_animdata(), BKE_animsys_eval_driver(), BKE_animsys_eval_driver_unshare(), 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(), blo_do_versions_440(), 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_420(), do_versions_after_linking_500(), draw_fcurve_curve(), ED_curve_updateAnimPaths(), blender::animrig::tests::KeyframingTest::ensure_legacy_action_assigned(), blender::ed::outliner::TreeElementID::expand(), blender::animrig::foreach_action_slot_use_with_references(), blender::animrig::foreach_action_slot_use_with_rna(), 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(), blender::animrig::id_frame_has_keyframe(), insert_key_button_exec(), 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(), long_id_names_process_action_slots_identifiers(), blender::ed::object::make_local_exec(), blender::ed::object::make_local_material_tag(), make_new_animlistelem(), mouse_nla_tracks(), blender::ed::transform::nlastrip_shuffle_transformed(), poseAnim_mapping_refresh(), poselib_keytag_pose(), pyrna_struct_driver_add(), RE_RenderAnim(), blender::ed::transform::recalcData_nla(), RNA_property_anim_editable(), RNA_property_driver_editable(), blender::seq::seq_prefetch_frames(), blender::seq::seq_render_mask(), blender::ed::object::single_object_action_users(), blender::ed::object::single_objectdata_action_users(), blender::animrig::Action::slot_add_for_id(), blender::animrig::Action::slot_identifier_propagate(), tag_update_animation_element(), blender::bke::tests::TEST_F(), texture_slot_move_exec(), blender::ed::transform::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 1365 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_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 125 of file anim_data.cc.

References 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::bke::tests::TEST_F(), blender::ed::outliner::unlink_action_fn(), and blender::ed::outliner::unlinkact_animdata_fn().

◆ 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 890 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 blender::ed::greasepencil::join_object_with_active(), and 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 1271 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 1284 of file anim_data.cc.

References adt_apply_all_fcurves_cb(), and BKE_animdata_main_cb().

◆ check_rna_path_is_valid()

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

Definition at line 689 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()

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()

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

Definition at line 1180 of file anim_data.cc.

Referenced by adt_apply_all_fcurves_cb(), and nlastrips_apply_all_curves_cb().

◆ fcurves_listbase_apply_cb()

bool fcurves_listbase_apply_cb ( ID * id,
ListBase * fcurves,
const IDFCurveCallback func )
static

Definition at line 1189 of file anim_data.cc.

References LISTBASE_FOREACH.

Referenced by adt_apply_all_fcurves_cb().

◆ fcurves_path_remove_from_listbase()

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 1075 of file anim_data.cc.

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

Referenced by BKE_animdata_driver_path_remove(), and BKE_animdata_fix_paths_remove().

◆ fcurves_path_rename_fix()

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()

bool nlastrips_apply_all_curves_cb ( ID * id,
ListBase * strips,
const IDFCurveCallback func )
static

◆ nlastrips_path_remove_fix()

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

◆ nlastrips_path_rename_fix()

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()

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

CLG_LogRef LOG = {"anim.data"}
static

Definition at line 55 of file anim_data.cc.