|
Blender V4.3
|
Go to the source code of this file.
Classes | |
| struct | OwnedAnimData |
Typedefs | |
| typedef enum eAnimData_MergeCopy_Modes | eAnimData_MergeCopy_Modes |
Enumerations | |
| enum | eAnimData_MergeCopy_Modes { ADT_MERGECOPY_KEEP_DST = 0 , ADT_MERGECOPY_SRC_COPY = 1 , ADT_MERGECOPY_SRC_REF = 2 } |
| typedef enum eAnimData_MergeCopy_Modes eAnimData_MergeCopy_Modes |
| Enumerator | |
|---|---|
| ADT_MERGECOPY_KEEP_DST | |
| ADT_MERGECOPY_SRC_COPY | |
| ADT_MERGECOPY_SRC_REF | |
Definition at line 147 of file BKE_anim_data.hh.
| bool BKE_animdata_action_editable | ( | const AnimData * | adt | ) |
Definition at line 224 of file anim_data.cc.
References AnimData::actstrip, ADT_NLA_EDIT_ON, AnimData::flag, and AnimData::tmpact.
Referenced by blender::animrig::assign_action(), and BKE_animdata_set_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().
| void BKE_animdata_blend_read_data | ( | BlendDataReader * | reader, |
| ID * | id ) |
Definition at line 1482 of file anim_data.cc.
References AnimData::act_track, AnimData::actstrip, IdAdtTemplate::adt, BKE_fcurve_blend_read_data_listbase(), BKE_nla_blend_read_data(), BKE_nla_tweakmode_exit_nofollowptr(), BLO_read_struct, BLO_read_struct_list, AnimData::driver_array, AnimData::drivers, id_can_have_animdata(), ID_IS_LINKED, and AnimData::nla_tracks.
Referenced by direct_link_id_common().
| void BKE_animdata_blend_write | ( | BlendWriter * | writer, |
| ID * | id ) |
Definition at line 1455 of file anim_data.cc.
References BKE_animdata_from_id(), BKE_fcurve_blend_write_listbase(), BKE_nla_blend_write(), BLO_write_string(), BLO_write_struct, AnimData::drivers, LISTBASE_FOREACH, AnimData::nla_tracks, and AnimData::overrides.
Referenced by BKE_id_blend_write().
Make a copy of the given AnimData - to be used when copying data-blocks.
| flag | Control ID pointers management, see LIB_ID_CREATE_.../LIB_ID_COPY_... flags in BKE_lib_id.hh. |
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().
| flag | Control ID pointers management, see LIB_ID_CREATE_.../LIB_ID_COPY_... flags in BKE_lib_id.hh |
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().
Copy AnimData Actions.
Definition at line 515 of file anim_data.cc.
References animdata_copy_id_action(), and ID_IS_OVERRIDE_LIBRARY.
| 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.
| owner_library | the 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().
Definition at line 521 of file anim_data.cc.
References animdata_copy_id_action(), USER_DUP_ACT, and USER_DUP_LINKED_ID.
Referenced by BKE_id_copy_for_duplicate(), BKE_scene_duplicate(), blender::ed::object::single_object_action_users(), and blender::ed::object::single_objectdata_action_users().
Ensure AnimData exists in the given ID-block (when supported).
Definition at line 103 of file anim_data.cc.
References AnimData::act_influence, IdAdtTemplate::adt, id_can_have_animdata(), and MEM_callocN.
Referenced by blender::animrig::assign_action(), BKE_animdata_set_action(), BKE_animdata_transfer_by_basepath(), do_versions_ipos_to_animato(), blender::bke::greasepencil::convert::AnimDataConvertor::fcurves_convert_finalize(), blender::animrig::id_action_ensure(), blender::animrig::insert_keyframes(), merge_actions_selection_exec(), nlaedit_objects_add_exec(), blender::ed::object::object_speaker_add_exec(), blender::interface::internal::paste_property_drivers(), sequencer_write_copy_paste_file(), blender::animrig::tests::KeyframingTest::SetUp(), blender::interface::tests::CopyDriversToSelected::SetUp(), blender::animrig::nla::tests::TEST_F(), blender::animrig::nla::tests::TEST_F(), blender::animrig::tests::TEST_F(), and verify_driver_fcurve().
| void BKE_animdata_foreach_id | ( | AnimData * | adt, |
| LibraryForeachIDData * | data ) |
Callback used by lib_query to walk over all ID usages (mimics foreach_id callback of IDTypeInfo structure).
Definition at line 346 of file anim_data.cc.
References AnimData::action, BKE_fcurve_foreach_id(), BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL, BKE_LIB_FOREACHID_PROCESS_IDSUPER, BKE_nla_strip_foreach_id(), AnimData::drivers, IDWALK_CB_USER, LISTBASE_FOREACH, AnimData::nla_tracks, NlaStrip::strips, and AnimData::tmpact.
Referenced by library_foreach_ID_link().
| void BKE_animdata_free | ( | ID * | id, |
| bool | do_id_user ) |
Free AnimData used by the nominated ID-block, and clear ID-block's AnimData pointer.
Definition at line 263 of file anim_data.cc.
References AnimData::action, IdAdtTemplate::adt, blender::animrig::assign_tmpaction(), BKE_fcurves_free(), BKE_nla_tracks_free(), BKE_nla_tweakmode_exit(), BLI_assert_msg, BLI_assert_unreachable, AnimData::driver_array, AnimData::drivers, bAction::id, id_can_have_animdata(), id_us_min(), MEM_freeN(), MEM_SAFE_FREE, AnimData::nla_tracks, AnimData::tmpact, blender::animrig::unassign_action(), and UNUSED_VARS_NDEBUG.
Referenced by animchannels_clean_empty_exec(), BKE_animdata_copy_id(), BKE_libblock_free_data(), blender::ed::outliner::clear_animdata_fn(), curves_free_data(), grease_pencil_free_data(), blender::ed::object::make_object_duplilist_real(), blender::bke::node_tree_free_tree(), pointcloud_free_data(), and volume_free_data().
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().
| bool BKE_animdata_id_is_animated | ( | const ID * | id | ) |
Return true if the ID-block has non-empty AnimData.
Definition at line 321 of file anim_data.cc.
References AnimData::action, BKE_animdata_from_id(), BLI_listbase_is_empty(), bAction::curves, AnimData::drivers, blender::animrig::Action::is_action_layered(), blender::animrig::Action::is_action_legacy(), blender::animrig::Action::is_slot_animated(), AnimData::nla_tracks, AnimData::overrides, and AnimData::slot_handle.
Referenced by BKE_object_moves_in_time(), calculate_selection_fcurve_bounds(), and blender::io::AbstractHierarchyWriter::check_is_animated().
| 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().
| void BKE_animdata_main_cb | ( | struct Main * | bmain, |
| blender::FunctionRef< void(ID *, AnimData *)> | func ) |
Referenced by blo_do_versions_280(), and blo_do_versions_300().
| void BKE_animdata_merge_copy | ( | Main * | bmain, |
| ID * | dst_id, | ||
| ID * | src_id, | ||
| eAnimData_MergeCopy_Modes | action_mode, | ||
| bool | fix_drivers ) |
Merge copies of the data from the src AnimData into the destination AnimData.
Definition at line 530 of file anim_data.cc.
References AnimData::action, ADT_MERGECOPY_SRC_COPY, ADT_MERGECOPY_SRC_REF, ADT_NLA_EDIT_ON, BKE_animdata_from_id(), BKE_fcurves_copy(), BKE_id_copy(), BKE_nla_tracks_copy(), BLI_movelisttolist(), CLOG_ERROR, DRIVER_TARGETS_LOOPER_END, DRIVER_TARGETS_USED_LOOPER_BEGIN, AnimData::drivers, ELEM, ListBase::first, AnimData::flag, bAction::id, id_us_plus(), LISTBASE_FOREACH, LOG, AnimData::nla_tracks, AnimData::slot_handle, AnimData::slot_name, STRNCPY, AnimData::tmp_slot_handle, AnimData::tmp_slot_name, AnimData::tmpact, and ChannelDriver::variables.
Referenced by ED_armature_join_objects_exec().
| 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.)
| reports | Can be NULL. |
| id | The owner of the animation data |
| act | The Action to set, or NULL to clear. |
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().
| 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.
| void BKE_fcurves_id_cb | ( | struct ID * | id, |
| blender::FunctionRef< void(ID *, FCurve *)> | func ) |
| void BKE_fcurves_main_cb | ( | struct Main * | bmain, |
| blender::FunctionRef< void(ID *, FCurve *)> | func ) |
Apply the given callback function on all F-Curves attached to data in main database.
Referenced by do_versions_after_linking_270(), ED_armature_join_objects_exec(), and blender::ed::greasepencil::join_object_with_active().
| bool id_can_have_animdata | ( | const ID * | id | ) |
Definition at line 79 of file anim_data.cc.
References GS, and id_type_can_have_animdata().
Referenced by BKE_animdata_blend_read_data(), BKE_animdata_ensure_id(), BKE_animdata_free(), BKE_animdata_from_id(), BKE_libblock_copy_in_lib(), insert_key(), blender::animrig::internal::rebuild_slot_user_cache(), RNA_property_animateable(), blender::animrig::Action::slot_name_propagate(), and uiTemplateAction().
| bool id_type_can_have_animdata | ( | short | id_type | ) |
Check if the given ID-block can have AnimData.
Definition at line 70 of file anim_data.cc.
References BKE_idtype_get_info_from_idcode(), IDTypeInfo::flags, and IDTYPE_FLAGS_NO_ANIMDATA.
Referenced by id_can_have_animdata(), blender::animrig::internal::rebuild_slot_user_cache(), and wm_context_member_from_ptr().