44 {0,
nullptr, 0,
nullptr,
nullptr},
56 "Only insert keyframes where they're needed in the relevant F-Curves"},
61 "Insert keyframes based on 'visual transforms'"},
63 "INSERTKEY_XYZ_TO_RGB",
65 "XYZ=RGB Colors (ignored)",
66 "This flag is no longer in use, and is here so that code that uses it doesn't break. The "
67 "XYZ=RGB coloring is determined by the animation preferences."},
68 {0,
nullptr, 0,
nullptr,
nullptr},
77 "Only insert keyframes where they're needed in the relevant F-Curves"},
82 "Insert keyframes based on 'visual transforms'"},
84 "INSERTKEY_XYZ_TO_RGB",
86 "XYZ=RGB Colors (ignored)",
87 "This flag is no longer in use, and is here so that code that uses it doesn't break. The "
88 "XYZ=RGB coloring is determined by the animation preferences."},
93 "Only replace existing keyframes"},
95 "INSERTKEY_AVAILABLE",
98 "Don't create F-Curves when they don't already exist"},
100 "INSERTKEY_CYCLE_AWARE",
102 "Cycle Aware Keying",
103 "When inserting into a curve with cyclic extrapolation, remap the keyframe inside "
104 "the cycle time range, and if changing an end key, also update the other one"},
105 {0,
nullptr, 0,
nullptr,
nullptr},
143 rna_AnimData_update(bmain, scene,
ptr);
146static int rna_AnimData_action_editable(
const PointerRNA *
ptr,
const char ** )
168# ifdef WITH_ANIM_BAKLAVA
190static void rna_AnimData_tweakmode_set(
PointerRNA *
ptr,
const bool value)
216bool rna_AnimData_tweakmode_override_apply(
Main * ,
225 anim_data_dst->flag = (anim_data_dst->flag & ~ADT_NLA_EDIT_ON) |
234# ifdef WITH_ANIM_BAKLAVA
244 slot_handle_to_assign, animated_id, action_ptr_ref, slot_handle_ref, slot_name);
249 case ActionSlotAssignmentResult::OK:
251 case ActionSlotAssignmentResult::SlotNotFromAction:
254 case ActionSlotAssignmentResult::SlotNotSuitable:
256 "This slot is not suitable for this data-block type (%c%c)",
258 animated_id.
name[1]);
260 case ActionSlotAssignmentResult::MissingAction:
266static void rna_AnimData_action_slot_handle_set(
272 rna_generic_action_slot_handle_set(
286 if (!dna_action || slot_handle == Slot::unassigned) {
290 Action &action = dna_action->wrap();
304void rna_generic_action_slot_set(
PointerRNA rna_slot_to_assign,
314 Slot *slot = dna_slot ? &dna_slot->wrap() :
nullptr;
317 slot, animated_id, action_ptr_ref, slot_handle_ref, slot_name);
320 case ActionSlotAssignmentResult::OK:
322 case ActionSlotAssignmentResult::SlotNotFromAction:
324 reports,
RPT_ERROR,
"This slot (%s) does not belong to the assigned Action", slot->
name);
326 case ActionSlotAssignmentResult::SlotNotSuitable:
329 "This slot (%s) is not suitable for this data-block type (%c%c)",
332 animated_id.
name[1]);
334 case ActionSlotAssignmentResult::MissingAction:
349 rna_generic_action_slot_set(
357 rna_AnimData_dependency_update(bmain, scene,
ptr);
372 const Slot **slot_ptr_ptr =
static_cast<const Slot **
>(
data);
375 const Slot &slot = **slot_ptr_ptr;
388 if (!assigned_action) {
397 (
void *)slots.
data(),
401 rna_iterator_generic_action_slots_skip);
407 rna_iterator_generic_action_slots_begin(iter, rna_animdata(
ptr).action);
425 func = &rna_KeyingSetInfo_poll_func;
448 extern FunctionRNA rna_KeyingSetInfo_iterator_func;
454 func = &rna_KeyingSetInfo_iterator_func;
472 extern FunctionRNA rna_KeyingSetInfo_generate_func;
478 func = &rna_KeyingSetInfo_generate_func;
504static bool rna_KeyingSetInfo_unregister(
Main *bmain,
StructRNA *type)
508 if (ksi ==
nullptr) {
526 const char *identifier,
531 const char *error_prefix =
"Registering keying set info class:";
534 bool have_function[3];
542 if (validate(&dummy_ksi_ptr, data, have_function) != 0) {
546 if (strlen(identifier) >=
sizeof(dummy_ksi.
idname)) {
549 "%s '%s' is too long, maximum length is %d",
552 int(
sizeof(dummy_ksi.
idname)));
561 "%s '%s', bl_idname '%s' has been registered before, unregistering previous",
567 if (!(srna && rna_KeyingSetInfo_unregister(bmain, srna))) {
570 "%s '%s', bl_idname '%s' %s",
574 srna ?
"is built-in" :
"could not be unregistered");
592 ksi->
poll = (have_function[0]) ? RKS_POLL_rna_internal : nullptr;
593 ksi->
iter = (have_function[1]) ? RKS_ITER_rna_internal : nullptr;
594 ksi->
generate = (have_function[2]) ? RKS_GEN_rna_internal : nullptr;
613static int rna_ksPath_id_editable(
const PointerRNA *
ptr,
const char ** )
619static void rna_ksPath_id_type_set(
PointerRNA *
ptr,
int value)
625 if ((data->id) && (
GS(data->id->name) != data->idtype)) {
630static void rna_ksPath_RnaPath_get(
PointerRNA *
ptr,
char *value)
635 strcpy(value, ksp->rna_path);
647 return strlen(ksp->rna_path);
654static void rna_ksPath_RnaPath_set(
PointerRNA *
ptr,
const char *value)
666 ksp->rna_path =
nullptr;
672static void rna_KeyingSet_name_set(
PointerRNA *
ptr,
const char *value)
704static int rna_KeyingSet_active_ksPath_editable(
const PointerRNA *
ptr,
const char ** )
728static int rna_KeyingSet_active_ksPath_index_get(
PointerRNA *
ptr)
734static void rna_KeyingSet_active_ksPath_index_set(
PointerRNA *
ptr,
int value)
740static void rna_KeyingSet_active_ksPath_index_range(
764 const char rna_path[],
767 const char group_name[])
792static void rna_KeyingSet_paths_remove(
KeyingSet *keyingset,
799 if ((keyingset && ksp) ==
false) {
839 if (track ==
nullptr) {
856static void rna_NlaTrack_remove(
892 if (
ELEM(
nullptr, src_driver, src_driver->
driver)) {
906static FCurve *rna_Driver_new(
909 if (rna_path[0] ==
'\0') {
939 const char *data_path,
942 if (data_path[0] ==
'\0') {
951std::optional<std::string> rna_AnimData_path(
const PointerRNA * )
953 return std::string{
"animation_data"};
963 const int len_dst = rnaapply_ctx.
len_src;
964 const int len_src = rnaapply_ctx.
len_src;
968 BLI_assert(len_dst == len_src && (!ptr_storage || len_dst == len_storage) && len_dst == 0);
970 "Unsupported RNA override operation on animdata pointer");
979 if (adt_dst ==
nullptr && adt_src !=
nullptr) {
985 else if (adt_dst !=
nullptr && adt_src ==
nullptr) {
991 else if (adt_dst !=
nullptr && adt_src !=
nullptr) {
1003# ifdef WITH_ANIM_BAKLAVA
1036 "Unsupported RNA override operation on constraints collection");
1047 NlaTrack *nla_track_anchor =
nullptr;
1057 nla_track_anchor =
static_cast<NlaTrack *
>(anim_data_dst->nla_tracks.last);
1062 nla_track_src =
static_cast<NlaTrack *
>(
1066 if (nla_track_src ==
nullptr) {
1093 "Override Insert Keyframes Default- Only Needed",
1094 "Override default setting to only insert keyframes where they're "
1095 "needed in the relevant F-Curves");
1104 "Override Insert Keyframes Default - Visual",
1105 "Override default setting to insert keyframes based on 'visual transforms'");
1114 "Insert Keyframes - Only Needed",
1115 "Only insert keyframes where they're needed in the relevant F-Curves");
1123 prop,
"Insert Keyframes - Visual",
"Insert keyframes based on 'visual transforms'");
1132# define KEYINGSET_IDNAME_DOC \
1133 "If this is set, the Keying Set gets a custom ID, otherwise it takes " \
1134 "the name of the class used to define the Keying Set (for example, " \
1135 "if the class name is \"BUILTIN_KSI_location\", and bl_idname is not " \
1136 "set by the script, then bl_idname = \"BUILTIN_KSI_location\")"
1148 srna,
"Keying Set Info",
"Callback function defines for builtin Keying Sets");
1151 srna,
"rna_KeyingSetInfo_register",
"rna_KeyingSetInfo_unregister",
nullptr);
1203 func,
"Call generate() on the structs which have properties to be keyframed");
1213 func,
"Add Paths to the Keying Set to keyframe the properties of the given data");
1240 "ID-Block that keyframes for Keying Set should be added to "
1241 "(for Absolute Keying Sets only)");
1258 prop,
"Group Name",
"Name of Action Group to assign setting(s) for this path to");
1267 prop,
"Grouping Method",
"Method used to define which Group-name to use");
1274 prop,
"rna_ksPath_RnaPath_get",
"rna_ksPath_RnaPath_length",
"rna_ksPath_RnaPath_set");
1291 "When an 'array/vector' type is chosen (Location, Rotation, Color, etc.), "
1292 "entire array is to be used");
1321 func,
"ksp",
"KeyingSetPath",
"New Path",
"Path created and added to the Keying Set");
1325 func,
"target_id",
"ID",
"Target ID",
"ID data-block for the destination");
1330 func,
"data_path",
nullptr, 256,
"Data-Path",
"RNA-Path to destination property");
1339 "The index of the destination property (i.e. axis of Location/Rotation/etc.), "
1340 "or -1 for the entire array",
1349 "Method used to define which Group-name to use");
1356 "Name of Action Group to assign destination to (only if grouping mode is to use this name)");
1377 "rna_KeyingSet_active_ksPath_get",
1378 "rna_KeyingSet_active_ksPath_set",
1382 prop,
"Active Keying Set",
"Active Keying Set used to insert/delete keyframes");
1387 "rna_KeyingSet_active_ksPath_index_get",
1388 "rna_KeyingSet_active_ksPath_index_set",
1389 "rna_KeyingSet_active_ksPath_index_range");
1429 prop,
"Type Info",
"Callback function defines for built-in Keying Sets");
1436 prop,
"Paths",
"Keying Set Paths to define settings that get keyframed together");
1445 "Keying Set defines specific paths/settings to be keyframed "
1446 "(i.e. is not reliant on context info)");
1455# undef KEYINGSET_IDNAME_DOC
1474 RNA_def_pointer(func,
"prev",
"NlaTrack",
"",
"NLA Track to add the new one after");
1476 parm =
RNA_def_pointer(func,
"track",
"NlaTrack",
"",
"New NLA Track");
1483 parm =
RNA_def_pointer(func,
"track",
"NlaTrack",
"",
"NLA Track to remove");
1490 prop,
"rna_NlaTrack_active_get",
"rna_NlaTrack_active_set",
nullptr,
nullptr);
1516 parm =
RNA_def_string(func,
"data_path",
nullptr, 0,
"Data Path",
"F-Curve data path to use");
1518 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Array index", 0, INT_MAX);
1520 parm =
RNA_def_pointer(func,
"driver",
"FCurve",
"",
"Newly Driver F-Curve");
1530 func =
RNA_def_function(srna,
"from_existing",
"rna_Driver_from_existing");
1537 "Existing Driver F-Curve to use as template for a new one");
1539 parm =
RNA_def_pointer(func,
"driver",
"FCurve",
"",
"New Driver F-Curve");
1546 "Find a driver F-Curve. Note that this function performs a linear scan "
1547 "of all driver F-Curves.");
1549 parm =
RNA_def_string(func,
"data_path",
nullptr, 0,
"Data Path",
"F-Curve data path");
1551 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Array index", 0, INT_MAX);
1554 func,
"fcurve",
"FCurve",
"",
"The found F-Curve, or None if it doesn't exist");
1605 "rna_AnimData_action_get",
1609 "rna_AnimData_action_set",
1611 "rna_Action_id_poll");
1622 "Action Extrapolation",
1623 "Action to take for gaps past the Active Action's range (when evaluating with NLA)");
1632 "Method used for combining Active Action's result with result of NLA stack");
1641 "Amount the Active Action contributes to the result of the NLA stack");
1649 prop,
nullptr,
"rna_AnimData_tmpact_set",
nullptr,
"rna_Action_id_poll");
1651 "Tweak Mode Action Storage",
1652 "Slot to temporarily hold the main action while in tweak mode");
1671 prop,
"NLA Evaluation Enabled",
"NLA stack is evaluated when evaluating this block");
1678 prop,
"Use NLA Tweak Mode",
"Whether to enable or disable tweak mode in NLA");
1688# ifdef WITH_ANIM_BAKLAVA
1696 "Action Slot Handle",
1697 "A number that identifies which sub-set of the Action is considered "
1698 "to be for this data-block");
1707 "The name of the action slot. The slot identifies which sub-set of the Action "
1708 "is considered to be for this data-block, and its name is used to find the right slot "
1709 "when assigning an Action.");
1718 "The slot identifies which sub-set of the Action is considered to be for this "
1719 "data-block, and its name is used to find the right slot when assigning an Action");
1721 prop,
"rna_AnimData_action_slot_get",
"rna_AnimData_action_slot_set",
nullptr,
nullptr);
1738 "rna_iterator_animdata_action_slots_begin",
1739 "rna_iterator_array_next",
1740 "rna_iterator_array_end",
1741 "rna_iterator_array_dereference_get",
Functions and classes to work with Actions.
Functions for backward compatibility with the legacy Action API.
bool BKE_animdata_action_editable(const AnimData *adt)
bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act)
bool BKE_animdata_copy_id(Main *bmain, ID *id_to, ID *id_from, int flag)
AnimData * BKE_animdata_from_id(const ID *id)
void BKE_animdata_free(ID *id, bool do_id_user)
bool BKE_animdata_set_tmpact(ReportList *reports, ID *id, bAction *act)
struct KS_Path * BKE_keyingset_add_path(struct KeyingSet *ks, struct ID *id, const char group_name[], const char rna_path[], int array_index, short flag, short groupmode)
void BKE_keyingset_free_path(struct KeyingSet *ks, struct KS_Path *ksp)
ReportList * CTX_wm_reports(const bContext *C)
FCurve * BKE_fcurve_copy(const FCurve *fcu)
FCurve * BKE_fcurve_find(ListBase *list, const char rna_path[], int array_index)
void BKE_fcurve_free(FCurve *fcu)
void BKE_nla_tweakmode_exit(OwnedAnimData owned_adt)
NlaTrack * BKE_nlatrack_copy(Main *bmain, NlaTrack *nlt, bool use_same_actions, int flag)
void BKE_nlatrack_set_active(ListBase *tracks, NlaTrack *nlt)
NlaTrack * BKE_nlatrack_new_after(ListBase *nla_tracks, NlaTrack *prev, bool is_liboverride)
NlaTrack * BKE_nlatrack_new_tail(ListBase *nla_tracks, const bool is_liboverride)
bool BKE_nla_tweakmode_enter(OwnedAnimData owned_adt)
NlaTrack * BKE_nlatrack_find_active(ListBase *tracks)
void BKE_nlatrack_remove_and_free(ListBase *tracks, NlaTrack *nlt, bool do_id_user)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
void BLI_kdtree_nd_ free(KDTree *tree)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void BLI_movelisttolist(struct ListBase *dst, struct ListBase *src) ATTR_NONNULL(1
bool BLI_remlink_safe(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define STRNCPY(dst, src)
#define UNUSED_VARS_NDEBUG(...)
#define BLT_I18NCONTEXT_ID_ACTION
#define BLT_I18NCONTEXT_ID_ID
void DEG_id_tag_update_ex(Main *bmain, ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ LIBOVERRIDE_OP_INSERT_AFTER
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ ADT_CURVES_ALWAYS_VISIBLE
Object is a sort of wrapper for general info.
@ DRIVER_FCURVE_KEYFRAMES
Read Guarded memory(de)allocation.
#define RNA_POINTER_INVALIDATE(ptr)
StructRNA * ID_code_to_RNA_type(short idcode)
#define RNA_DYN_DESCR_MAX
int(*)(PointerRNA *ptr, void *data, bool *have_function) StructValidateFunc
void(*)(void *data) StructFreeFunc
int(*)(bContext *C, PointerRNA *ptr, FunctionRNA *func, ParameterList *list) StructCallbackFunc
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROPOVERRIDE_LIBRARY_INSERTION
@ PROPOVERRIDE_NO_PROP_NAME
constexpr PointerRNA PointerRNA_NULL
void ANIM_id_update(Main *bmain, ID *id)
constexpr const T * data() const
constexpr int64_t size() const
blender::Span< const Slot * > slots() const
Slot * slot_for_handle(slot_handle_t handle)
static void users_invalidate(Main &bmain)
bool is_suitable_for(const ID &animated_id) const
FCurve * verify_driver_fcurve(ID *id, const char rna_path[], const int array_index, eDriverFCurveCreationMode creation_mode)
KeyingSetInfo * ANIM_keyingset_info_find_name(const char name[])
void ANIM_keyingset_info_unregister(Main *bmain, KeyingSetInfo *keyingset_info)
void ANIM_keyingset_info_register(KeyingSetInfo *keyingset_info)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
Vector< bActionGroup * > channel_groups_for_assigned_slot(AnimData *adt)
ActionSlotAssignmentResult generic_assign_action_slot(Slot *slot_to_assign, ID &animated_id, bAction *&action_ptr_ref, slot_handle_t &slot_handle_ref, char *slot_name) ATTR_WARN_UNUSED_RESULT
decltype(::ActionSlot::handle) slot_handle_t
Action * get_action(ID &animated_id)
ActionSlotAssignmentResult generic_assign_action_slot_handle(slot_handle_t slot_handle_to_assign, ID &animated_id, bAction *&action_ptr_ref, slot_handle_t &slot_handle_ref, char *slot_name) ATTR_WARN_UNUSED_RESULT
bool assign_action(bAction *action, ID &animated_id)
ActionSlotAssignmentResult
const EnumPropertyItem rna_enum_id_type_items[]
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_parameter_list_free(ParameterList *parms)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
void RNA_property_update_main(Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
PointerRNA rna_pointer_inherit_refine(const PointerRNA *ptr, StructRNA *type, void *data)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **r_value)
PointerRNA RNA_id_pointer_create(ID *id)
static void rna_def_common_keying_flags(StructRNA *srna, short reg)
const EnumPropertyItem rna_enum_keying_flag_api_items[]
void RNA_def_animation(BlenderRNA *brna)
static void rna_api_animdata_nla_tracks(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_animdata(BlenderRNA *brna)
static void rna_def_keyingset_paths(BlenderRNA *brna, PropertyRNA *cprop)
const EnumPropertyItem rna_enum_keying_flag_items[]
#define KEYINGSET_IDNAME_DOC
const EnumPropertyItem rna_enum_keyingset_path_grouping_items[]
static void rna_api_animdata_drivers(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_keyingset_path(BlenderRNA *brna)
static void rna_def_keyingset(BlenderRNA *brna)
void rna_def_animdata_common(StructRNA *srna)
static void rna_def_keyingset_info(BlenderRNA *brna)
void RNA_api_keyingset(StructRNA *srna)
void RNA_api_animdata(StructRNA *srna)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_define_lib_overridable(const bool make_overridable)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_property_float_default(PropertyRNA *prop, float value)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
void RNA_define_verify_sdna(bool verify)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_string_maxlength(PropertyRNA *prop, int maxlength)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_struct_free_extension(StructRNA *srna, ExtensionRNA *rna_ext)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
void RNA_def_property_override_funcs(PropertyRNA *prop, const char *diff, const char *store, const char *apply)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
bool rna_AnimaData_override_apply(Main *bmain, RNAPropertyOverrideApplyContext &rnaapply_ctx)
const EnumPropertyItem rna_enum_nla_mode_blend_items[]
const EnumPropertyItem rna_enum_nla_mode_extend_items[]
int subitem_reference_index
cbKeyingSet_Generate generate
cbKeyingSet_Iterator iter
IDOverrideLibraryPropertyOperation * liboverride_operation
void WM_report(eReportType type, const char *message)
void WM_main_add_notifier(uint type, void *reference)
void WM_reportf(eReportType type, const char *format,...)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)