Blender V5.0
BKE_anim_data.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009 Blender Authors, Joshua Leung. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10
11#include <optional>
12
13#include "BLI_function_ref.hh"
14#include "BLI_string_ref.hh"
15
16struct AnimData;
17struct BlendDataReader;
18struct BlendWriter;
19struct FCurve;
20struct ID;
21struct Library;
23struct Main;
24struct ReportList;
25struct bAction;
26
27/* ************************************* */
28/* AnimData API */
29
47
51bool id_type_can_have_animdata(short id_type);
52bool id_can_have_animdata(const ID *id);
53
58
63
76bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act);
77
79
84bool BKE_animdata_action_ensure_idroot(const ID *owner, bAction *action);
85
89void BKE_animdata_free(ID *id, bool do_id_user);
90
96bool BKE_animdata_id_is_animated(const ID *id);
97
103
115AnimData *BKE_animdata_copy(Main *bmain, AnimData *adt, int flag);
116
125 std::optional<Library *> owner_library,
126 AnimData *adt,
127 int flag);
128
134bool BKE_animdata_copy_id(Main *bmain, ID *id_to, ID *id_from, int flag);
135
139void BKE_animdata_copy_id_action(Main *bmain, ID *id);
140
141void BKE_animdata_duplicate_id_action(Main *bmain, ID *id, uint duplicate_flags);
142
143/* Merge copies of data from source AnimData block */
145 /* Keep destination action */
147
148 /* Use src action (make a new copy) */
150
151 /* Use src action (but just reference the existing version) */
153};
154
159 Main *bmain, ID *dst_id, ID *src_id, eAnimData_MergeCopy_Modes action_mode, bool fix_drivers);
160
161void BKE_animdata_blend_write(BlendWriter *writer, ID *id);
163
172
173/* ************************************* */
174/* Batch AnimData API */
175/* Loop over all datablocks applying callback */
176void BKE_animdata_main_cb(struct Main *bmain, blender::FunctionRef<void(ID *, AnimData *)> func);
177
179void BKE_fcurves_main_cb(struct Main *bmain, blender::FunctionRef<void(ID *, FCurve *)> func);
180
181/* Look over all f-curves of a given ID. */
182void BKE_fcurves_id_cb(struct ID *id, blender::FunctionRef<void(ID *, FCurve *)> func);
183
184/* ************************************* */
185/* TODO: overrides, remapping, and path-finding API's. */
186
188
205
216bool prop_is_animated(const AnimData *adt, StringRefNull rna_path, int array_index);
217
218} // namespace blender::bke::animdata
AnimData * BKE_animdata_copy_in_lib(Main *bmain, std::optional< Library * > owner_library, AnimData *adt, int flag)
Definition anim_data.cc:281
bool BKE_animdata_id_is_animated(const ID *id)
Definition anim_data.cc:238
bool BKE_animdata_action_ensure_idroot(const ID *owner, bAction *action)
Definition anim_data.cc:159
void BKE_animdata_merge_copy(Main *bmain, ID *dst_id, ID *src_id, eAnimData_MergeCopy_Modes action_mode, bool fix_drivers)
Definition anim_data.cc:447
void BKE_animdata_blend_write(BlendWriter *writer, ID *id)
AnimData * BKE_animdata_ensure_id(ID *id)
Definition anim_data.cc:97
bool id_can_have_animdata(const ID *id)
Definition anim_data.cc:73
void BKE_animdata_foreach_id(AnimData *adt, LibraryForeachIDData *data)
Definition anim_data.cc:263
AnimData * BKE_animdata_copy(Main *bmain, AnimData *adt, int flag)
Definition anim_data.cc:364
eAnimData_MergeCopy_Modes
@ ADT_MERGECOPY_KEEP_DST
@ ADT_MERGECOPY_SRC_COPY
@ ADT_MERGECOPY_SRC_REF
bool BKE_animdata_action_editable(const AnimData *adt)
Definition anim_data.cc:151
bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act)
Definition anim_data.cc:125
void BKE_animdata_main_cb(struct Main *bmain, blender::FunctionRef< void(ID *, AnimData *)> func)
bool id_type_can_have_animdata(short id_type)
Definition anim_data.cc:64
bool BKE_animdata_copy_id(Main *bmain, ID *id_to, ID *id_from, int flag)
Definition anim_data.cc:369
AnimData * BKE_animdata_from_id(const ID *id)
Definition anim_data.cc:83
void BKE_animdata_duplicate_id_action(Main *bmain, ID *id, uint duplicate_flags)
Definition anim_data.cc:438
void BKE_animdata_blend_read_data(BlendDataReader *reader, ID *id)
void BKE_animdata_free(ID *id, bool do_id_user)
Definition anim_data.cc:188
void BKE_fcurves_id_cb(struct ID *id, blender::FunctionRef< void(ID *, FCurve *)> func)
void BKE_animdata_liboverride_post_process(ID *id)
void BKE_fcurves_main_cb(struct Main *bmain, blender::FunctionRef< void(ID *, FCurve *)> func)
void BKE_animdata_copy_id_action(Main *bmain, ID *id)
Definition anim_data.cc:432
unsigned int uint
BMesh const char void * data
void action_slots_user_cache_invalidate(Main &bmain)
bool prop_is_animated(const AnimData *adt, StringRefNull rna_path, int array_index)
Definition DNA_ID.h:414
AnimData & adt
uint8_t flag
Definition wm_window.cc:145