62 ListBase anim_data = {
nullptr,
nullptr};
64 int notifierFlags = 0;
77 printf(
"Error: animation track (index = %d) not found in mouse_nla_tracks()\n", track_index);
131 if (
b->object->adt) {
272 printf(
"Error: Invalid track type in mouse_nla_tracks()\n");
282 return notifierFlags;
294 int notifierFlags = 0;
341 ot->
name =
"Mouse Click on NLA Tracks";
342 ot->
idname =
"NLA_OT_channels_click";
375 if (track_index == -1) {
382 "No active AnimData block to use "
383 "(select a data-block expander first or set the appropriate flags on an AnimData "
393 ListBase anim_data = {
nullptr,
nullptr};
402 if (ale ==
nullptr) {
410 "Animation track at index %d is not a NLA 'Active Action' track",
425 if (adt ==
nullptr) {
432 "Cannot push down actions while tweaking a strip's action, exit tweak mode first");
437 if (!action_to_push_down) {
460 ot->
name =
"Push Down Action";
461 ot->
idname =
"NLA_OT_action_pushdown";
462 ot->
description =
"Push action down onto the top of the NLA stack as a new strip";
478 "Index of NLA action track to perform pushdown operation on",
508 if (adt ==
nullptr) {
534 ot->
name =
"Unlink Action";
535 ot->
idname =
"NLA_OT_action_unlink";
536 ot->
description =
"Unlink this action from the active action slot (and/or exit Tweak Mode)";
548 "Clear Fake User and remove copy stashed in this data-block's NLA stack");
557 ListBase anim_data = {
nullptr,
nullptr};
585 else if ((lastAdt ==
nullptr) || (adt != lastAdt)) {
606 ListBase anim_data = {
nullptr,
nullptr};
647 bool op_done =
false;
671 op->
reports,
RPT_WARNING,
"Select an existing NLA Track or an empty action line first");
682 ot->
description =
"Add NLA-Tracks above/after the selected tracks";
696 "Add a new NLA Track above every existing selected one");
706 ListBase anim_data = {
nullptr,
nullptr};
733 adt->
flag &= ~ADT_NLA_SOLO_TRACK;
758 ot->
name =
"Delete Tracks";
759 ot->
idname =
"NLA_OT_tracks_delete";
760 ot->
description =
"Delete selected NLA-Tracks and the strips they contain";
792 if (snla && snla->
ads) {
813 ot->
name =
"Include Selected Objects";
814 ot->
idname =
"NLA_OT_selected_objects_add";
815 ot->
description =
"Make selected objects appear in NLA Editor by adding Animation Data";
Functions and classes to work with Actions.
AnimData * BKE_animdata_ensure_id(ID *id)
AnimData * BKE_animdata_from_id(const ID *id)
#define CTX_DATA_BEGIN(C, Type, instance, member)
Main * CTX_data_main(const bContext *C)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
ListBase * BKE_view_layer_object_bases_get(ViewLayer *view_layer)
void BKE_nla_action_pushdown(OwnedAnimData owned_adt, bool is_liboverride)
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_nlatrack_is_nonlocal_in_liboverride(const ID *id, const NlaTrack *nlt)
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)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void DEG_id_tag_update_ex(Main *bmain, ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
#define ID_IS_OVERRIDE_LIBRARY(_id)
Object is a sort of wrapper for general info.
#define BASE_SELECTABLE(v3d, base)
@ ANIMTYPE_FILLACT_LAYERED
#define NLATRACK_FIRST_TOP(ac)
#define NLATRACK_STEP(snla)
void ED_animedit_unlink_action(bContext *C, ID *id, AnimData *adt, bAction *act, ReportList *reports, bool force_delete)
#define NLATRACK_NAMEWIDTH
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
bool ED_operator_nla_active(bContext *C)
void UI_view2d_listview_view_to_cell(float columnwidth, float rowheight, float startx, float starty, float viewx, float viewy, int *r_column, int *r_row)
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void ANIM_anim_channels_select_set(bAnimContext *ac, eAnimChannels_SetFlag sel)
void ANIM_set_active_channel(bAnimContext *ac, void *data, eAnimCont_Types datatype, eAnimFilter_Flags filter, void *channel_data, eAnim_ChannelType channel_type)
void ANIM_animdata_freelist(ListBase *anim_data)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, const eAnimFilter_Flags filter_mode, void *data, const eAnimCont_Types datatype)
local_group_size(16, 16) .push_constant(Type b
void base_select(Base *base, eObjectSelect_Mode mode)
void base_activate_with_mode_exit_if_needed(bContext *C, Base *base)
bool nlaedit_disable_tweakmode(bAnimContext *ac, bool do_solo)
bool nlaedit_is_tweakmode_on(bAnimContext *ac)
bool nlaop_poll_tweakmode_off(bContext *C)
static int nla_action_unlink_exec(bContext *C, wmOperator *op)
static int mouse_nla_tracks(bContext *C, bAnimContext *ac, int track_index, short selectmode)
void NLA_OT_selected_objects_add(wmOperatorType *ot)
void NLA_OT_tracks_delete(wmOperatorType *ot)
void NLA_OT_tracks_add(wmOperatorType *ot)
static bool nla_action_unlink_poll(bContext *C)
static int nla_action_unlink_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void NLA_OT_action_unlink(wmOperatorType *ot)
static int nlatracks_pushdown_exec(bContext *C, wmOperator *op)
void NLA_OT_channels_click(wmOperatorType *ot)
void NLA_OT_action_pushdown(wmOperatorType *ot)
static int nlaedit_objects_add_exec(bContext *C, wmOperator *)
static int nlatracks_mouseclick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool nlaedit_add_tracks_existing(bAnimContext *ac, bool above_sel)
bool nlaedit_add_tracks_empty(bAnimContext *ac)
static int nlaedit_add_tracks_exec(bContext *C, wmOperator *op)
static int nlaedit_delete_tracks_exec(bContext *C, wmOperator *)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
int RNA_int_get(PointerRNA *ptr, const char *name)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
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)
eAnim_Update_Flags update
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void WM_event_add_notifier(const bContext *C, uint type, void *reference)