35 {0,
nullptr, 0,
nullptr,
nullptr},
47 "Only insert keyframes where they're needed in the relevant F-Curves"},
52 "Insert keyframes based on 'visual transforms'"},
54 "INSERTKEY_XYZ_TO_RGB",
56 "XYZ=RGB Colors (ignored)",
57 "This flag is no longer in use, and is here so that code that uses it doesn't break. The "
58 "XYZ=RGB coloring is determined by the animation preferences."},
59 {0,
nullptr, 0,
nullptr,
nullptr},
68 "Only insert keyframes where they're needed in the relevant F-Curves"},
73 "Insert keyframes based on 'visual transforms'"},
75 "INSERTKEY_XYZ_TO_RGB",
77 "XYZ=RGB Colors (ignored)",
78 "This flag is no longer in use, and is here so that code that uses it doesn't break. The "
79 "XYZ=RGB coloring is determined by the animation preferences."},
84 "Only replace existing keyframes"},
86 "INSERTKEY_AVAILABLE",
89 "Don't create F-Curves when they don't already exist"},
91 "INSERTKEY_CYCLE_AWARE",
94 "When inserting into a curve with cyclic extrapolation, remap the keyframe inside "
95 "the cycle time range, and if changing an end key, also update the other one"},
96 {0,
nullptr, 0,
nullptr,
nullptr},
127 ID *
id =
ptr->owner_id;
136 rna_AnimData_update(bmain, scene,
ptr);
139void rna_generic_action_slot_handle_override_diff(
Main *bmain,
151 if (action_a == action_b) {
162 const bool do_create = rnadiff_ctx.
liboverride !=
nullptr &&
171 bool created =
false;
177 op,
LIBOVERRIDE_OP_REPLACE,
nullptr,
nullptr, {}, {}, -1, -1,
true,
nullptr,
nullptr);
187static void rna_AnimData_slot_handle_override_diff(
Main *bmain,
193 rna_generic_action_slot_handle_override_diff(bmain, rnadiff_ctx, adt_a->
action, adt_b->
action);
196static int rna_AnimData_action_editable(
const PointerRNA *
ptr,
const char ** )
208 ID &animated_id = *
ptr->owner_id;
220 ID &animated_id = *
ptr->owner_id;
230 ID *owner_id =
ptr->owner_id;
240static void rna_AnimData_tweakmode_set(
PointerRNA *
ptr,
const bool value)
242 ID *animated_id =
ptr->owner_id;
266bool rna_AnimData_tweakmode_override_apply(
Main * ,
293 slot_handle_to_assign, animated_id, action_ptr_ref, slot_handle_ref, slot_name);
305 "This slot is not suitable for this data-block type (%c%c)",
307 animated_id.
name[1]);
315static void rna_AnimData_action_slot_handle_set(
318 ID &animated_id = *
ptr->owner_id;
321 rna_generic_action_slot_handle_set(
339 Action &action = dna_action->wrap();
353void rna_generic_action_slot_set(
PointerRNA rna_slot_to_assign,
363 Slot *slot = dna_slot ? &dna_slot->wrap() :
nullptr;
366 slot, animated_id, action_ptr_ref, slot_handle_ref, slot_name);
374 "This slot (%s) does not belong to the assigned Action",
380 "This slot (%s) is not suitable for this data-block type (%c%c)",
383 animated_id.
name[1]);
393 ID *animated_id =
ptr->owner_id;
400 rna_generic_action_slot_set(
408 rna_AnimData_dependency_update(bmain, scene,
ptr);
423 const Slot **slot_ptr_ptr =
static_cast<const Slot **
>(
data);
426 const Slot &slot = **slot_ptr_ptr;
440 if (!assigned_action) {
450 (
void *)slots.
data(),
454 rna_iterator_generic_action_suitable_slots_skip);
460 rna_iterator_generic_action_suitable_slots_begin(iter,
ptr, rna_animdata(
ptr).action);
476 func = &rna_KeyingSetInfo_poll_func;
499 extern FunctionRNA rna_KeyingSetInfo_iterator_func;
505 func = &rna_KeyingSetInfo_iterator_func;
523 extern FunctionRNA rna_KeyingSetInfo_generate_func;
529 func = &rna_KeyingSetInfo_generate_func;
555static bool rna_KeyingSetInfo_unregister(
Main *bmain,
StructRNA *type)
559 if (ksi ==
nullptr) {
577 const char *identifier,
582 const char *error_prefix =
"Registering keying set info class:";
585 bool have_function[3];
593 if (validate(&dummy_ksi_ptr,
data, have_function) != 0) {
597 if (strlen(identifier) >=
sizeof(dummy_ksi.
idname)) {
600 "%s '%s' is too long, maximum length is %d",
603 int(
sizeof(dummy_ksi.
idname)));
612 "%s '%s', bl_idname '%s' has been registered before, unregistering previous",
618 if (!(srna && rna_KeyingSetInfo_unregister(bmain, srna))) {
621 "%s '%s', bl_idname '%s' %s",
625 srna ?
"is built-in" :
"could not be unregistered");
643 ksi->
poll = (have_function[0]) ? RKS_POLL_rna_internal :
nullptr;
644 ksi->
iter = (have_function[1]) ? RKS_ITER_rna_internal :
nullptr;
664static int rna_ksPath_id_editable(
const PointerRNA *
ptr,
const char ** )
670static void rna_ksPath_id_type_set(
PointerRNA *
ptr,
int value)
675 data->idtype = value;
681static void rna_ksPath_RnaPath_get(
PointerRNA *
ptr,
char *value)
686 strcpy(value, ksp->rna_path);
698 return strlen(ksp->rna_path);
705static void rna_ksPath_RnaPath_set(
PointerRNA *
ptr,
const char *value)
717 ksp->rna_path =
nullptr;
723static void rna_KeyingSet_name_set(
PointerRNA *
ptr,
const char *value)
755static int rna_KeyingSet_active_ksPath_editable(
const PointerRNA *
ptr,
const char ** )
779static int rna_KeyingSet_active_ksPath_index_get(
PointerRNA *
ptr)
785static void rna_KeyingSet_active_ksPath_index_set(
PointerRNA *
ptr,
int value)
791static void rna_KeyingSet_active_ksPath_index_range(
815 const char rna_path[],
818 const char group_name[])
843static void rna_KeyingSet_paths_remove(
KeyingSet *keyingset,
850 if ((keyingset && ksp) ==
false) {
890 if (track ==
nullptr) {
907static void rna_NlaTrack_remove(
943 if (
ELEM(
nullptr, src_driver, src_driver->
driver)) {
957static FCurve *rna_Driver_new(
960 if (rna_path[0] ==
'\0') {
990 const char *data_path,
993 if (data_path[0] ==
'\0') {
1002std::optional<std::string> rna_AnimData_path(
const PointerRNA * )
1004 return std::string{
"animation_data"};
1014 const int len_dst = rnaapply_ctx.
len_src;
1015 const int len_src = rnaapply_ctx.
len_src;
1019 BLI_assert(len_dst == len_src && (!ptr_storage || len_dst == len_storage) && len_dst == 0);
1021 "Unsupported RNA override operation on animdata pointer");
1030 if (adt_dst ==
nullptr && adt_src !=
nullptr) {
1036 else if (adt_dst !=
nullptr && adt_src ==
nullptr) {
1042 else if (adt_dst !=
nullptr && adt_src !=
nullptr) {
1088 "Unsupported RNA override operation on constraints collection");
1099 NlaTrack *nla_track_anchor =
nullptr;
1109 nla_track_anchor =
static_cast<NlaTrack *
>(anim_data_dst->nla_tracks.last);
1114 nla_track_src =
static_cast<NlaTrack *
>(
1118 if (nla_track_src ==
nullptr) {
1145 "Override Insert Keyframes Default- Only Needed",
1146 "Override default setting to only insert keyframes where they're "
1147 "needed in the relevant F-Curves");
1156 "Override Insert Keyframes Default - Visual",
1157 "Override default setting to insert keyframes based on 'visual transforms'");
1166 "Insert Keyframes - Only Needed",
1167 "Only insert keyframes where they're needed in the relevant F-Curves");
1175 prop,
"Insert Keyframes - Visual",
"Insert keyframes based on 'visual transforms'");
1184# define KEYINGSET_IDNAME_DOC \
1185 "If this is set, the Keying Set gets a custom ID, otherwise it takes " \
1186 "the name of the class used to define the Keying Set (for example, " \
1187 "if the class name is \"BUILTIN_KSI_location\", and bl_idname is not " \
1188 "set by the script, then bl_idname = \"BUILTIN_KSI_location\")"
1200 srna,
"Keying Set Info",
"Callback function defines for builtin Keying Sets");
1203 srna,
"rna_KeyingSetInfo_register",
"rna_KeyingSetInfo_unregister",
nullptr);
1255 func,
"Call generate() on the structs which have properties to be keyframed");
1265 func,
"Add Paths to the Keying Set to keyframe the properties of the given data");
1292 "ID-Block that keyframes for Keying Set should be added to "
1293 "(for Absolute Keying Sets only)");
1310 prop,
"Group Name",
"Name of Action Group to assign setting(s) for this path to");
1319 prop,
"Grouping Method",
"Method used to define which Group-name to use");
1326 prop,
"rna_ksPath_RnaPath_get",
"rna_ksPath_RnaPath_length",
"rna_ksPath_RnaPath_set");
1343 "When an 'array/vector' type is chosen (Location, Rotation, Color, etc.), "
1344 "entire array is to be used");
1373 func,
"ksp",
"KeyingSetPath",
"New Path",
"Path created and added to the Keying Set");
1377 func,
"target_id",
"ID",
"Target ID",
"ID data-block for the destination");
1382 func,
"data_path",
nullptr, 256,
"Data-Path",
"RNA-Path to destination property");
1391 "The index of the destination property (i.e. axis of Location/Rotation/etc.), "
1392 "or -1 for the entire array",
1401 "Method used to define which Group-name to use");
1408 "Name of Action Group to assign destination to (only if grouping mode is to use this name)");
1429 "rna_KeyingSet_active_ksPath_get",
1430 "rna_KeyingSet_active_ksPath_set",
1434 prop,
"Active Keying Set",
"Active Keying Set used to insert/delete keyframes");
1439 "rna_KeyingSet_active_ksPath_index_get",
1440 "rna_KeyingSet_active_ksPath_index_set",
1441 "rna_KeyingSet_active_ksPath_index_range");
1481 prop,
"Type Info",
"Callback function defines for built-in Keying Sets");
1488 prop,
"Paths",
"Keying Set Paths to define settings that get keyframed together");
1497 "Keying Set defines specific paths/settings to be keyframed "
1498 "(i.e. is not reliant on context info)");
1507# undef KEYINGSET_IDNAME_DOC
1526 RNA_def_pointer(func,
"prev",
"NlaTrack",
"",
"NLA Track to add the new one after");
1528 parm =
RNA_def_pointer(func,
"track",
"NlaTrack",
"",
"New NLA Track");
1535 parm =
RNA_def_pointer(func,
"track",
"NlaTrack",
"",
"NLA Track to remove");
1542 prop,
"rna_NlaTrack_active_get",
"rna_NlaTrack_active_set",
nullptr,
nullptr);
1568 parm =
RNA_def_string(func,
"data_path",
nullptr, 0,
"Data Path",
"F-Curve data path to use");
1570 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Array index", 0, INT_MAX);
1572 parm =
RNA_def_pointer(func,
"driver",
"FCurve",
"",
"Newly Driver F-Curve");
1582 func =
RNA_def_function(srna,
"from_existing",
"rna_Driver_from_existing");
1589 "Existing Driver F-Curve to use as template for a new one");
1591 parm =
RNA_def_pointer(func,
"driver",
"FCurve",
"",
"New Driver F-Curve");
1598 "Find a driver F-Curve. Note that this function performs a linear scan "
1599 "of all driver F-Curves.");
1601 parm =
RNA_def_string(func,
"data_path",
nullptr, 0,
"Data Path",
"F-Curve data path");
1603 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Array index", 0, INT_MAX);
1606 func,
"fcurve",
"FCurve",
"",
"The found F-Curve, or None if it doesn't exist");
1657 "rna_AnimData_action_get",
1661 "rna_AnimData_action_set",
1663 "rna_Action_id_poll");
1674 "Action Extrapolation",
1675 "Action to take for gaps past the Active Action's range (when evaluating with NLA)");
1684 "Method used for combining Active Action's result with result of NLA stack");
1693 "Amount the Active Action contributes to the result of the NLA stack");
1701 prop,
nullptr,
"rna_AnimData_tmpact_set",
nullptr,
"rna_Action_id_poll");
1703 "Tweak Mode Action Storage",
1704 "Storage to temporarily hold the main action while in tweak mode");
1713 "Tweak Mode Action Slot Storage",
1714 "Storage to temporarily hold the main action slot while in tweak mode");
1733 prop,
"NLA Evaluation Enabled",
"NLA stack is evaluated when evaluating this block");
1740 prop,
"Use NLA Tweak Mode",
"Whether to enable or disable tweak mode in NLA");
1757 "Action Slot Handle",
1758 "A number that identifies which sub-set of the Action is considered "
1759 "to be for this data-block");
1762 prop,
"rna_AnimData_slot_handle_override_diff",
nullptr,
nullptr);
1769 "Last Action Slot Identifier",
1770 "The identifier of the most recently assigned action slot. The slot identifies which "
1771 "sub-set of the Action is considered to be for this data-block, and its identifier is used "
1772 "to find the right slot when assigning an Action.");
1781 "The slot identifies which sub-set of the Action is considered to be for this "
1782 "data-block, and its name is used to find the right slot when assigning an Action");
1784 prop,
"rna_AnimData_action_slot_get",
"rna_AnimData_action_slot_set",
nullptr,
nullptr);
1801 "rna_iterator_animdata_action_suitable_slots_begin",
1802 "rna_iterator_array_next",
1803 "rna_iterator_array_end",
1804 "rna_iterator_array_dereference_get",
Functions and classes to work with Actions.
Functions for backward compatibility with the legacy Action API.
Functionality to interact with keying sets.
bool BKE_animdata_action_editable(const AnimData *adt)
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)
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)
IDOverrideLibraryProperty * BKE_lib_override_library_property_get(IDOverrideLibrary *liboverride, const char *rna_path, bool *r_created)
IDOverrideLibraryPropertyOperation * BKE_lib_override_library_property_operation_get(IDOverrideLibraryProperty *liboverride_property, short operation, const char *subitem_refname, const char *subitem_locname, const std::optional< ID * > &subitem_refid, const std::optional< ID * > &subitem_locid, int subitem_refindex, int subitem_locindex, bool strict, bool *r_strict, bool *r_created)
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)
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void BLI_movelisttolist(ListBase *dst, ListBase *src) ATTR_NONNULL(1
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_insertlinkafter(ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
bool BLI_remlink_safe(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const 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
char * STRNCPY(char(&dst)[N], const char *src)
#define UNUSED_VARS_NDEBUG(...)
#define BLT_I18NCONTEXT_ID_ACTION
#define BLT_I18NCONTEXT_ID_ID
void DEG_relations_tag_update(Main *bmain)
@ LIBOVERRIDE_OP_INSERT_AFTER
@ ADT_CURVES_ALWAYS_VISIBLE
Object is a sort of wrapper for general info.
@ DRIVER_FCURVE_KEYFRAMES
@ RNA_OVERRIDE_COMPARE_CREATE
StructRNA * ID_code_to_RNA_type(short idcode)
@ RNA_OVERRIDE_MATCH_RESULT_CREATED
#define RNA_DYN_DESCR_MAX
int(*)(PointerRNA *ptr, void *data, bool *have_function) StructValidateFunc
int(*)(bContext *C, PointerRNA *ptr, FunctionRNA *func, ParameterList *list) StructCallbackFunc
void(*)(void *data) StructFreeFunc
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROPOVERRIDE_LIBRARY_INSERTION
@ PROPOVERRIDE_NO_PROP_NAME
void ANIM_id_update(Main *bmain, ID *id)
BMesh const char void * data
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
static constexpr slot_handle_t unassigned
FCurve * verify_driver_fcurve(ID *id, const char rna_path[], const int array_index, eDriverFCurveCreationMode creation_mode)
#define ID_IS_OVERRIDE_LIBRARY(_id)
DEG_id_tag_update_ex(cb_data->bmain, cb_data->owner_id, ID_RECALC_TAG_FOR_UNDO|ID_RECALC_SYNC_TO_EVAL)
void * MEM_mallocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
Vector< bActionGroup * > channel_groups_for_assigned_slot(AnimData *adt)
KeyingSetInfo * keyingset_info_find_name(const char name[])
ActionSlotAssignmentResult generic_assign_action_slot(Slot *slot_to_assign, ID &animated_id, bAction *&action_ptr_ref, slot_handle_t &slot_handle_ref, char *slot_identifier)
decltype(::ActionSlot::handle) slot_handle_t
void keyingset_info_register(KeyingSetInfo *keyingset_info)
Action * get_action(ID &animated_id)
void keyingset_info_unregister(Main *bmain, KeyingSetInfo *keyingset_info)
bool assign_tmpaction(bAction *action, OwnedAnimData owned_adt)
bool assign_action(bAction *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_identifier)
ActionSlotAssignmentResult
const EnumPropertyItem rna_enum_id_type_items[]
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, void *data, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
const PointerRNA PointerRNA_NULL
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_property_update_main(Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **r_value)
PointerRNA RNA_pointer_create_with_parent(const PointerRNA &parent, StructRNA *type, void *data)
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_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
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_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)
void rna_property_override_diff_default(Main *bmain, RNAPropertyOverrideDiffContext &rnadiff_ctx)
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[]
char last_slot_identifier[66]
char tmp_last_slot_identifier[66]
int subitem_reference_index
cbKeyingSet_Generate generate
cbKeyingSet_Iterator iter
IDOverrideLibraryPropertyOperation * liboverride_operation
eRNAOverrideMatchResult report_flag
IDOverrideLibrary * liboverride
eRNAOverrideMatch liboverride_flags
void WM_global_report(eReportType type, const char *message)
void WM_main_add_notifier(uint type, void *reference)
void WM_global_reportf(eReportType type, const char *format,...)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)