Blender V4.3
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
11#include <functional>
12#include <optional>
13
14#include "BLI_function_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
81bool BKE_animdata_set_tmpact(ReportList *reports, ID *id, bAction *act);
82
84
89bool BKE_animdata_action_ensure_idroot(const ID *owner, bAction *action);
90
94void BKE_animdata_free(ID *id, bool do_id_user);
95
99bool BKE_animdata_id_is_animated(const ID *id);
100
106
118AnimData *BKE_animdata_copy(Main *bmain, AnimData *adt, int flag);
119
128 std::optional<Library *> owner_library,
129 AnimData *adt,
130 int flag);
131
137bool BKE_animdata_copy_id(Main *bmain, ID *id_to, ID *id_from, int flag);
138
142void BKE_animdata_copy_id_action(Main *bmain, ID *id);
143
144void BKE_animdata_duplicate_id_action(Main *bmain, ID *id, uint duplicate_flags);
145
146/* Merge copies of data from source AnimData block */
148 /* Keep destination action */
150
151 /* Use src action (make a new copy) */
153
154 /* Use src action (but just reference the existing version) */
157
162 Main *bmain, ID *dst_id, ID *src_id, eAnimData_MergeCopy_Modes action_mode, bool fix_drivers);
163
164void BKE_animdata_blend_write(BlendWriter *writer, ID *id);
166
175
176/* ************************************* */
177/* Batch AnimData API */
178/* Loop over all datablocks applying callback */
179void BKE_animdata_main_cb(struct Main *bmain, blender::FunctionRef<void(ID *, AnimData *)> func);
180
182void BKE_fcurves_main_cb(struct Main *bmain, blender::FunctionRef<void(ID *, FCurve *)> func);
183
184/* Look over all f-curves of a given ID. */
185void BKE_fcurves_id_cb(struct ID *id, blender::FunctionRef<void(ID *, FCurve *)> func);
186
187/* ************************************* */
188/* TODO: overrides, remapping, and path-finding API's. */
AnimData * BKE_animdata_copy_in_lib(Main *bmain, std::optional< Library * > owner_library, AnimData *adt, int flag)
Definition anim_data.cc:364
bool BKE_animdata_id_is_animated(const ID *id)
Definition anim_data.cc:321
bool BKE_animdata_action_ensure_idroot(const ID *owner, bAction *action)
Definition anim_data.cc:232
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:530
void BKE_animdata_blend_write(BlendWriter *writer, ID *id)
AnimData * BKE_animdata_ensure_id(ID *id)
Definition anim_data.cc:103
bool id_can_have_animdata(const ID *id)
Definition anim_data.cc:79
void BKE_animdata_foreach_id(AnimData *adt, LibraryForeachIDData *data)
Definition anim_data.cc:346
AnimData * BKE_animdata_copy(Main *bmain, AnimData *adt, int flag)
Definition anim_data.cc:447
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:224
bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act)
Definition anim_data.cc:194
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:70
bool BKE_animdata_copy_id(Main *bmain, ID *id_to, ID *id_from, int flag)
Definition anim_data.cc:452
AnimData * BKE_animdata_from_id(const ID *id)
Definition anim_data.cc:89
void BKE_animdata_duplicate_id_action(Main *bmain, ID *id, uint duplicate_flags)
Definition anim_data.cc:521
void BKE_animdata_blend_read_data(BlendDataReader *reader, ID *id)
void BKE_animdata_free(ID *id, bool do_id_user)
Definition anim_data.cc:263
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)
bool BKE_animdata_set_tmpact(ReportList *reports, ID *id, bAction *act)
Definition anim_data.cc:181
void BKE_animdata_copy_id_action(Main *bmain, ID *id)
Definition anim_data.cc:515
unsigned int uint
Definition DNA_ID.h:413
AnimData & adt
uint8_t flag
Definition wm_window.cc:138