67 but->
drawflag &= ~UI_BUT_ANIMATED_CHANGED;
98 float cfra = anim_eval_context->
eval_time;
110 anim_eval_context, cfra);
119 uiBut *but_iter =
nullptr;
125 if (but_iter != but &&
147 printf(
"Could not find button with matching property to decorate (%s.%s)\n",
156 but->
icon = ICON_DECORATE_DRIVER;
159 but->
icon = ICON_DECORATE_KEYFRAME;
162 but->
icon = ICON_DECORATE_ANIMATE;
165 but->
icon = ICON_DECORATE_OVERRIDE;
168 but->
icon = ICON_DECORATE;
172 but->
flag = (but->
flag & ~flag_copy) | (
flag & flag_copy);
179 bool driven, special;
201 bool driven, special;
217 driver->
flag &= ~DRIVER_FLAG_INVALID;
218 fcu->
flag &= ~FCURVE_DISABLED;
242 printf(
"ERROR: create expression failed - button has no RNA info attached\n");
250 printf(
"ERROR: create expression failed - can't create expression for entire array\n");
260 if ((
id ==
nullptr) || (
GS(id->name) ==
ID_MA) || (
GS(id->name) ==
ID_TE)) {
262 printf(
"ERROR: create expression failed - invalid data-block for adding drivers (%p)\n",
id);
Functions to insert, delete or modify keyframes.
AnimationEvalContext BKE_animsys_eval_context_construct_at(const AnimationEvalContext *anim_eval_context, float eval_time) ATTR_WARN_UNUSED_RESULT
Main * CTX_data_main(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
FCurve * BKE_fcurve_find_by_rna_context_ui(bContext *C, const PointerRNA *ptr, PropertyRNA *prop, int rnaindex, AnimData **r_animdata, bAction **r_action, bool *r_driven, bool *r_special)
bool BKE_fcurve_is_empty(const FCurve *fcu)
void BKE_driver_invalidate_expression(struct ChannelDriver *driver, bool expr_changed, bool varname_changed)
float BKE_nla_tweakedit_remap(AnimData *adt, float cframe, short mode)
#define LISTBASE_CIRCULAR_BACKWARD_END(type, lb, lb_iter, lb_init)
#define LISTBASE_CIRCULAR_BACKWARD_BEGIN(type, lb, lb_iter, lb_init)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
void DEG_relations_tag_update(Main *bmain)
@ DRIVER_FCURVE_KEYFRAMES
Read Guarded memory(de)allocation.
#define UI_but_is_decorator(but)
@ UI_BUT_ANIMATED_CHANGED
FCurve * verify_driver_fcurve(ID *id, const char rna_path[], const int array_index, eDriverFCurveCreationMode creation_mode)
bool fcurve_is_changed(PointerRNA ptr, PropertyRNA *prop, FCurve *fcu, const AnimationEvalContext *anim_eval_context)
Lesser Keyframe Checking API call.
bool fcurve_frame_has_keyframe(const FCurve *fcu, float frame)
Lesser Keyframe Checking API call.
bool ui_but_rna_equals_ex(const uiBut *but, const PointerRNA *ptr, const PropertyRNA *prop, int index)
static FCurve * ui_but_get_fcurve(uiBut *but, AnimData **adt, bAction **action, bool *r_driven, bool *r_special)
void ui_but_anim_decorate_cb(bContext *C, void *arg_but, void *)
bool ui_but_anim_expression_create(uiBut *but, const char *str)
void ui_but_anim_decorate_update_from_flag(uiButDecorator *but)
void ui_but_anim_flag(uiBut *but, const AnimationEvalContext *anim_eval_context)
void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra)
bool ui_but_anim_expression_get(uiBut *but, char *str, size_t str_maxncpy)
static uiBut * ui_but_anim_decorate_find_attached_button(uiButDecorator *but)
void ui_but_anim_copy_driver(bContext *C)
void ui_but_anim_paste_driver(bContext *C)
bool ui_but_anim_expression_set(uiBut *but, const char *str)
bool autokeyframe_property(bContext *C, Scene *scene, PointerRNA *ptr, PropertyRNA *prop, int rnaindex, float cfra, bool only_if_property_keyed)
bool RNA_property_array_check(PropertyRNA *prop)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
const char * RNA_struct_identifier(const StructRNA *type)
const char * RNA_property_identifier(const PropertyRNA *prop)
std::optional< std::string > RNA_path_from_ID_to_property(const PointerRNA *ptr, PropertyRNA *prop)
PointerRNA decorated_rnapoin
PropertyRNA * decorated_rnaprop
uiHandleButtonData * active
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_operator_name_call(bContext *C, const char *opstring, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)