31#include "RNA_prototypes.hh"
99 const char *bPtr = nullptr, *pPtr = nullptr;
101 if (fcurve.rna_path == nullptr) {
106 bPtr = strstr(fcurve.
rna_path, basePath->c_str());
115 bPtr += strlen(basePath->c_str());
120 pPtr = strstr(bPtr,
"location");
128 pPtr = strstr(bPtr,
"scale");
136 pPtr = strstr(bPtr,
"rotation");
144 pPtr = strstr(bPtr,
"bbone_");
153 pPtr = strstr(bPtr,
"[\"");
169 ListBase curves = {
nullptr,
nullptr};
247 Object *prev_ob, *ob_pose_armature;
250 ob_pose_armature =
nullptr;
258 if (ob_pose_armature ==
nullptr) {
261 if (!ob_pose_armature->
adt || !ob_pose_armature->
adt->
action) {
275 ob_pose_armature =
nullptr;
283 if (ob_pose_armature ==
nullptr) {
286 if (!ob_pose_armature->
adt || !ob_pose_armature->
adt->
action) {
349 pchan->
roll1 = pfl->roll1;
350 pchan->
roll2 = pfl->roll2;
355 pchan->
ease1 = pfl->ease1;
356 pchan->
ease2 = pfl->ease2;
375 ob->id.tag &= ~ID_TAG_DOIT;
437 (fcuLinks) ? fcuLinks->
first :
442 for (ld = first; ld; ld = ld->
next) {
Functions and classes to work with Actions.
Functionality to iterate an Action in various ways.
Functions to insert, delete or modify keyframes.
Functionality to interact with keying sets.
Blender kernel action and pose functionality.
AnimData * BKE_animdata_from_id(const ID *id)
#define CTX_DATA_BEGIN_WITH_ID(C, Type, instance, member, Type_id, instance_id)
View3D * CTX_wm_view3d(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void IDP_FreeProperty(IDProperty *prop)
IDProperty * IDP_CopyProperty(const IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_SyncGroupValues(IDProperty *dest, const IDProperty *src) ATTR_NONNULL()
#define FOREACH_OBJECT_IN_MODE_END
#define FOREACH_OBJECT_IN_MODE_BEGIN(_scene, _view_layer, _v3d, _object_type, _object_mode, _instance)
General operations, lookup, etc. for blender objects.
Object * BKE_object_pose_armature_get(Object *ob)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
struct LinkData * BLI_genericNodeN(void *data)
void copy_qt_qt(float q[4], const float a[4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
void DEG_id_tag_update(ID *id, unsigned int flags)
@ ID_RECALC_ANIMATION_NO_FLUSH
@ MOTIONPATH_BAKE_HAS_PATHS
Object is a sort of wrapper for general info.
@ POSE_PATH_CALC_RANGE_FULL
#define ANIM_KS_WHOLE_CHARACTER_ID
Read Guarded memory(de)allocation.
void ANIM_relative_keyingset_add_source(blender::Vector< PointerRNA > &sources, ID *id, StructRNA *srna, void *data)
KeyingSet * ANIM_get_keyingset_for_autokeying(const Scene *scene, const char *transformKSName)
int ANIM_apply_keyingset(bContext *C, blender::Vector< PointerRNA > *sources, KeyingSet *keyingset, const blender::animrig::ModifyKeyMode mode, const float cfra)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void foreach_fcurve_in_action_slot(Action &action, slot_handle_t handle, FunctionRef< void(FCurve &fcurve)> callback)
bool autokeyframe_cfra_can_key(const Scene *scene, ID *id)
void ED_pose_recalculate_paths(bContext *C, Scene *scene, Object *ob, ePosePathCalcRange range)
void poseAnim_mapping_autoKeyframe(bContext *C, Scene *scene, ListBase *pfLinks, float cframe)
static void fcurves_to_pchan_links_get(ListBase &pfLinks, Object &ob, bPoseChannel &pchan)
void poseAnim_mapping_free(ListBase *pfLinks)
void poseAnim_mapping_reset(ListBase *pfLinks)
void poseAnim_mapping_get(bContext *C, ListBase *pfLinks)
Object * poseAnim_object_get(Object *ob_)
void poseAnim_mapping_refresh(bContext *C, Scene *, Object *ob)
static eAction_TransformFlags get_item_transform_flags_and_fcurves(Object &ob, bPoseChannel &pchan, ListBase &r_curves)
LinkData * poseAnim_mapping_getNextFCurve(ListBase *fcuLinks, LinkData *prev, const char *path)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
std::optional< std::string > RNA_path_from_ID_to_struct(const PointerRNA *ptr)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)