95 float cfra = anim_eval_context->
eval_time;
118 anim_eval_context, cfra);
126 uiBut *but_iter =
nullptr;
138 if (but_iter != but &&
145 }
while (
i != start);
160 printf(
"Could not find button with matching property to decorate (%s.%s)\n",
169 but->
icon = ICON_DECORATE_DRIVER;
173 but->
icon = ICON_DECORATE_KEYFRAME;
177 but->
icon = ICON_DECORATE_ANIMATE;
181 but->
icon = ICON_DECORATE_OVERRIDE;
185 but->
icon = ICON_DECORATE;
190 but->
flag = (but->
flag & ~flag_copy) | (
flag & flag_copy);
197 bool driven, special;
219 bool driven, special;
260 printf(
"ERROR: create expression failed - button has no RNA info attached\n");
268 printf(
"ERROR: create expression failed - cannot create expression for entire array\n");
280 printf(
"ERROR: create expression failed - invalid data-block for adding drivers (%p)\n",
id);
326 "ANIM_OT_copy_driver_button",
336 "ANIM_OT_paste_driver_button",
Functions to modify FCurves.
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, eNlaTime_ConvertModes mode)
#define LISTBASE_FOREACH(type, var, list)
char * BLI_strncpy_utf8(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
@ UI_BUT_ANIMATED_CHANGED
#define UI_but_is_decorator(but)
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 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 fcurve_frame_has_keyframe(const FCurve *fcu, float frame)
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)
blender::Vector< std::unique_ptr< uiBut > > buttons
int but_index(const uiBut *but) const
PointerRNA decorated_rnapoin
bool toggle_keyframe_on_click
PropertyRNA * decorated_rnaprop
wmOperatorStatus WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, blender::wm::OpCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
wmOperatorStatus WM_operator_name_call(bContext *C, const char *opstring, blender::wm::OpCallContext 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)