32#include "RNA_prototypes.hh"
100 const char *bPtr = nullptr, *pPtr = nullptr;
102 if (fcurve.rna_path == nullptr) {
107 bPtr = strstr(fcurve.
rna_path, basePath->c_str());
116 bPtr += strlen(basePath->c_str());
121 pPtr = strstr(bPtr,
"location");
129 pPtr = strstr(bPtr,
"scale");
137 pPtr = strstr(bPtr,
"rotation");
145 pPtr = strstr(bPtr,
"bbone_");
154 pPtr = strstr(bPtr,
"[\"");
170 ListBase curves = {
nullptr,
nullptr};
252 Object *prev_ob, *ob_pose_armature;
255 ob_pose_armature =
nullptr;
263 if (ob_pose_armature ==
nullptr) {
266 if (!ob_pose_armature->
adt || !ob_pose_armature->
adt->
action) {
280 ob_pose_armature =
nullptr;
288 if (ob_pose_armature ==
nullptr) {
291 if (!ob_pose_armature->
adt || !ob_pose_armature->
adt->
action) {
354 pchan->
roll1 = pfl->roll1;
355 pchan->
roll2 = pfl->roll2;
360 pchan->
ease1 = pfl->ease1;
361 pchan->
ease2 = pfl->ease2;
370 if (pfl->old_system_properties) {
447 (fcuLinks) ? fcuLinks->
first :
452 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.
static constexpr const char * ANIM_KS_WHOLE_CHARACTER_ID
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)
LinkData * BLI_genericNodeN(void *data)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_freelinkN(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
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
Read Guarded memory(de)allocation.
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
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 relative_keyingset_add_source(blender::Vector< PointerRNA > &sources, ID *id, StructRNA *srna, void *data)
KeyingSet * get_keyingset_for_autokeying(const Scene *scene, const char *transformKSName)
int apply_keyingset(bContext *C, blender::Vector< PointerRNA > *sources, KeyingSet *keyingset, ModifyKeyMode mode, float cfra)
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_discrete(ID *id, StructRNA *type, void *data)
std::optional< std::string > RNA_path_from_ID_to_struct(const PointerRNA *ptr)
IDProperty * system_properties
IDProperty * old_system_properties
void WM_event_add_notifier(const bContext *C, uint type, void *reference)