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'"},
53 {0,
nullptr, 0,
nullptr,
nullptr},
62 "Only insert keyframes where they're needed in the relevant F-Curves"},
67 "Insert keyframes based on 'visual transforms'"},
72 "Only replace existing keyframes"},
74 "INSERTKEY_AVAILABLE",
77 "Don't create F-Curves when they don't already exist"},
79 "INSERTKEY_CYCLE_AWARE",
82 "When inserting into a curve with cyclic extrapolation, remap the keyframe inside "
83 "the cycle time range, and if changing an end key, also update the other one"},
84 {0,
nullptr, 0,
nullptr,
nullptr},
115 ID *
id =
ptr->owner_id;
124 rna_AnimData_update(bmain, scene,
ptr);
127void rna_generic_action_slot_handle_override_diff(
Main *bmain,
139 if (action_a == action_b) {
150 const bool do_create = rnadiff_ctx.
liboverride !=
nullptr &&
159 bool created =
false;
165 op,
LIBOVERRIDE_OP_REPLACE,
nullptr,
nullptr, {}, {}, -1, -1,
true,
nullptr,
nullptr);
175static void rna_AnimData_slot_handle_override_diff(
Main *bmain,
181 rna_generic_action_slot_handle_override_diff(bmain, rnadiff_ctx, adt_a->
action, adt_b->
action);
184static int rna_AnimData_action_editable(
const PointerRNA *
ptr,
const char ** )
196 ID &animated_id = *
ptr->owner_id;
208 ID &animated_id = *
ptr->owner_id;
218 ID *owner_id =
ptr->owner_id;
228static void rna_AnimData_tweakmode_set(
PointerRNA *
ptr,
const bool value)
230 ID *animated_id =
ptr->owner_id;
254bool rna_AnimData_tweakmode_override_apply(
Main * ,
281 slot_handle_to_assign, animated_id, action_ptr_ref, slot_handle_ref, slot_name);
293 "This slot is not suitable for this data-block type (%c%c)",
295 animated_id.
name[1]);
303static void rna_AnimData_action_slot_handle_set(
306 ID &animated_id = *
ptr->owner_id;
309 rna_generic_action_slot_handle_set(
327 Action &action = dna_action->wrap();
341void rna_generic_action_slot_set(
PointerRNA rna_slot_to_assign,
351 Slot *slot = dna_slot ? &dna_slot->wrap() :
nullptr;
354 slot, animated_id, action_ptr_ref, slot_handle_ref, slot_name);
362 "This slot (%s) does not belong to the assigned Action",
368 "This slot (%s) is not suitable for this data-block type (%c%c)",
371 animated_id.
name[1]);
381 ID *animated_id =
ptr->owner_id;
388 rna_generic_action_slot_set(
396 rna_AnimData_dependency_update(bmain, scene,
ptr);
411 const Slot **slot_ptr_ptr =
static_cast<const Slot **
>(
data);
414 const Slot &slot = **slot_ptr_ptr;
428 if (!assigned_action) {
438 (
void *)slots.
data(),
442 rna_iterator_generic_action_suitable_slots_skip);
448 rna_iterator_generic_action_suitable_slots_begin(iter,
ptr, rna_animdata(
ptr).action);
464 func = &rna_KeyingSetInfo_poll_func;
487 extern FunctionRNA rna_KeyingSetInfo_iterator_func;
493 func = &rna_KeyingSetInfo_iterator_func;
511 extern FunctionRNA rna_KeyingSetInfo_generate_func;
517 func = &rna_KeyingSetInfo_generate_func;
543static bool rna_KeyingSetInfo_unregister(
Main *bmain,
StructRNA *type)
547 if (ksi ==
nullptr) {
565 const char *identifier,
570 const char *error_prefix =
"Registering keying set info class:";
573 bool have_function[3];
581 if (validate(&dummy_ksi_ptr,
data, have_function) != 0) {
585 if (strlen(identifier) >=
sizeof(dummy_ksi.
idname)) {
588 "%s '%s' is too long, maximum length is %d",
591 int(
sizeof(dummy_ksi.
idname)));
600 "%s '%s', bl_idname '%s' has been registered before, unregistering previous",
606 if (!(srna && rna_KeyingSetInfo_unregister(bmain, srna))) {
609 "%s '%s', bl_idname '%s' %s",
613 srna ?
"is built-in" :
"could not be unregistered");
631 ksi->
poll = (have_function[0]) ? RKS_POLL_rna_internal :
nullptr;
632 ksi->
iter = (have_function[1]) ? RKS_ITER_rna_internal :
nullptr;
652static int rna_ksPath_id_editable(
const PointerRNA *
ptr,
const char ** )
658static void rna_ksPath_id_type_set(
PointerRNA *
ptr,
int value)
663 data->idtype = value;
669static void rna_ksPath_RnaPath_get(
PointerRNA *
ptr,
char *value)
674 strcpy(value, ksp->rna_path);
686 return strlen(ksp->rna_path);
693static void rna_ksPath_RnaPath_set(
PointerRNA *
ptr,
const char *value)
705 ksp->rna_path =
nullptr;
711static void rna_KeyingSet_name_set(
PointerRNA *
ptr,
const char *value)
743static int rna_KeyingSet_active_ksPath_editable(
const PointerRNA *
ptr,
const char ** )
767static int rna_KeyingSet_active_ksPath_index_get(
PointerRNA *
ptr)
773static void rna_KeyingSet_active_ksPath_index_set(
PointerRNA *
ptr,
int value)
779static void rna_KeyingSet_active_ksPath_index_range(
803 const char rna_path[],
806 const char group_name[])
831static void rna_KeyingSet_paths_remove(
KeyingSet *keyingset,
838 if ((keyingset && ksp) ==
false) {
878 if (track ==
nullptr) {
895static void rna_NlaTrack_remove(
931 if (
ELEM(
nullptr, src_driver, src_driver->
driver)) {
945static FCurve *rna_Driver_new(
948 if (rna_path[0] ==
'\0') {
978 const char *data_path,
981 if (data_path[0] ==
'\0') {
990std::optional<std::string> rna_AnimData_path(
const PointerRNA * )
992 return std::string{
"animation_data"};
1002 const int len_dst = rnaapply_ctx.
len_src;
1003 const int len_src = rnaapply_ctx.
len_src;
1007 BLI_assert(len_dst == len_src && (!ptr_storage || len_dst == len_storage) && len_dst == 0);
1009 "Unsupported RNA override operation on animdata pointer");
1018 if (adt_dst ==
nullptr && adt_src !=
nullptr) {
1024 else if (adt_dst !=
nullptr && adt_src ==
nullptr) {
1030 else if (adt_dst !=
nullptr && adt_src !=
nullptr) {
1076 "Unsupported RNA override operation on constraints collection");
1087 NlaTrack *nla_track_anchor =
nullptr;
1097 nla_track_anchor =
static_cast<NlaTrack *
>(anim_data_dst->nla_tracks.last);
1102 nla_track_src =
static_cast<NlaTrack *
>(
1106 if (nla_track_src ==
nullptr) {
1133 "Override Insert Keyframes Default- Only Needed",
1134 "Override default setting to only insert keyframes where they're "
1135 "needed in the relevant F-Curves");
1144 "Override Insert Keyframes Default - Visual",
1145 "Override default setting to insert keyframes based on 'visual transforms'");
1154 "Insert Keyframes - Only Needed",
1155 "Only insert keyframes where they're needed in the relevant F-Curves");
1163 prop,
"Insert Keyframes - Visual",
"Insert keyframes based on 'visual transforms'");
1172# define KEYINGSET_IDNAME_DOC \
1173 "If this is set, the Keying Set gets a custom ID, otherwise it takes " \
1174 "the name of the class used to define the Keying Set (for example, " \
1175 "if the class name is \"BUILTIN_KSI_location\", and bl_idname is not " \
1176 "set by the script, then bl_idname = \"BUILTIN_KSI_location\")"
1188 srna,
"Keying Set Info",
"Callback function defines for builtin Keying Sets");
1191 srna,
"rna_KeyingSetInfo_register",
"rna_KeyingSetInfo_unregister",
nullptr);
1243 func,
"Call generate() on the structs which have properties to be keyframed");
1253 func,
"Add Paths to the Keying Set to keyframe the properties of the given data");
1280 "ID-Block that keyframes for Keying Set should be added to "
1281 "(for Absolute Keying Sets only)");
1298 prop,
"Group Name",
"Name of Action Group to assign setting(s) for this path to");
1307 prop,
"Grouping Method",
"Method used to define which Group-name to use");
1314 prop,
"rna_ksPath_RnaPath_get",
"rna_ksPath_RnaPath_length",
"rna_ksPath_RnaPath_set");
1331 "When an 'array/vector' type is chosen (Location, Rotation, Color, etc.), "
1332 "entire array is to be used");
1361 func,
"ksp",
"KeyingSetPath",
"New Path",
"Path created and added to the Keying Set");
1365 func,
"target_id",
"ID",
"Target ID",
"ID data-block for the destination");
1370 func,
"data_path",
nullptr, 256,
"Data-Path",
"RNA-Path to destination property");
1379 "The index of the destination property (i.e. axis of Location/Rotation/etc.), "
1380 "or -1 for the entire array",
1389 "Method used to define which Group-name to use");
1396 "Name of Action Group to assign destination to (only if grouping mode is to use this name)");
1417 "rna_KeyingSet_active_ksPath_get",
1418 "rna_KeyingSet_active_ksPath_set",
1422 prop,
"Active Keying Set",
"Active Keying Set used to insert/delete keyframes");
1427 "rna_KeyingSet_active_ksPath_index_get",
1428 "rna_KeyingSet_active_ksPath_index_set",
1429 "rna_KeyingSet_active_ksPath_index_range");
1469 prop,
"Type Info",
"Callback function defines for built-in Keying Sets");
1476 prop,
"Paths",
"Keying Set Paths to define settings that get keyframed together");
1485 "Keying Set defines specific paths/settings to be keyframed "
1486 "(i.e. is not reliant on context info)");
1495# undef KEYINGSET_IDNAME_DOC
1514 RNA_def_pointer(func,
"prev",
"NlaTrack",
"",
"NLA Track to add the new one after");
1516 parm =
RNA_def_pointer(func,
"track",
"NlaTrack",
"",
"New NLA Track");
1523 parm =
RNA_def_pointer(func,
"track",
"NlaTrack",
"",
"NLA Track to remove");
1530 prop,
"rna_NlaTrack_active_get",
"rna_NlaTrack_active_set",
nullptr,
nullptr);
1556 parm =
RNA_def_string(func,
"data_path",
nullptr, 0,
"Data Path",
"F-Curve data path to use");
1558 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Array index", 0, INT_MAX);
1560 parm =
RNA_def_pointer(func,
"driver",
"FCurve",
"",
"Newly Driver F-Curve");
1570 func =
RNA_def_function(srna,
"from_existing",
"rna_Driver_from_existing");
1577 "Existing Driver F-Curve to use as template for a new one");
1579 parm =
RNA_def_pointer(func,
"driver",
"FCurve",
"",
"New Driver F-Curve");
1586 "Find a driver F-Curve. Note that this function performs a linear scan "
1587 "of all driver F-Curves.");
1589 parm =
RNA_def_string(func,
"data_path",
nullptr, 0,
"Data Path",
"F-Curve data path");
1591 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Array index", 0, INT_MAX);
1594 func,
"fcurve",
"FCurve",
"",
"The found F-Curve, or None if it doesn't exist");
1645 "rna_AnimData_action_get",
1649 "rna_AnimData_action_set",
1651 "rna_Action_id_poll");
1662 "Action Extrapolation",
1663 "Action to take for gaps past the Active Action's range (when evaluating with NLA)");
1672 "Method used for combining Active Action's result with result of NLA stack");
1681 "Amount the Active Action contributes to the result of the NLA stack");
1689 prop,
nullptr,
"rna_AnimData_tmpact_set",
nullptr,
"rna_Action_id_poll");
1691 "Tweak Mode Action Storage",
1692 "Storage to temporarily hold the main action while in tweak mode");
1701 "Tweak Mode Action Slot Storage",
1702 "Storage to temporarily hold the main action slot while in tweak mode");
1721 prop,
"NLA Evaluation Enabled",
"NLA stack is evaluated when evaluating this block");
1728 prop,
"Use NLA Tweak Mode",
"Whether to enable or disable tweak mode in NLA");
1745 "Action Slot Handle",
1746 "A number that identifies which sub-set of the Action is considered "
1747 "to be for this data-block");
1750 prop,
"rna_AnimData_slot_handle_override_diff",
nullptr,
nullptr);
1757 "Last Action Slot Identifier",
1758 "The identifier of the most recently assigned action slot. The slot identifies which "
1759 "sub-set of the Action is considered to be for this data-block, and its identifier is used "
1760 "to find the right slot when assigning an Action.");
1769 "The slot identifies which sub-set of the Action is considered to be for this "
1770 "data-block, and its name is used to find the right slot when assigning an Action");
1772 prop,
"rna_AnimData_action_slot_get",
"rna_AnimData_action_slot_set",
nullptr,
nullptr);
1789 "rna_iterator_animdata_action_suitable_slots_begin",
1790 "rna_iterator_array_next",
1791 "rna_iterator_array_end",
1792 "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 STRNCPY_UTF8(dst, 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
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ 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)
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)
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)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, void *data, size_t itemsize, int64_t length, bool free_ptr, IteratorSkipFunc skip)
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 tmp_last_slot_identifier[258]
char last_slot_identifier[258]
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)