67 int notifierFlags = 0;
80 printf(
"Error: animation channel (index = %d) not found in mouse_anim_channels()\n",
134 if (
b->object->adt) {
271 printf(
"Error: Invalid channel type in mouse_nla_channels()\n");
281 return notifierFlags;
294 int notifierFlags = 0;
341 ot->
name =
"Mouse Click on NLA Channels";
342 ot->
idname =
"NLA_OT_channels_click";
375 if (channel_index == -1) {
382 "No active AnimData block to use "
383 "(select a data-block expander first or set the appropriate flags on an AnimData "
412 "Animation channel at index %d is not a NLA 'Active Action' channel",
434 "Cannot push down actions while tweaking a strip's action, exit tweak mode first");
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 channel to perform pushdown operation on",
535 ot->
name =
"Unlink Action";
536 ot->
idname =
"NLA_OT_action_unlink";
537 ot->
description =
"Unlink this action from the active action slot (and/or exit Tweak Mode)";
549 "Clear Fake User and remove copy stashed in this data-block's NLA stack");
570 for (ale = anim_data.
first; ale; ale = ale->
next) {
586 else if ((lastAdt ==
NULL) || (adt != lastAdt)) {
617 for (ale = anim_data.
first; ale; ale = ale->
next) {
645 bool op_done =
false;
669 op->
reports,
RPT_WARNING,
"Select an existing NLA Track or an empty action line first");
680 ot->
description =
"Add NLA-Tracks above/after the selected tracks";
694 "Add a new NLA Track above every existing selected one");
719 for (ale = anim_data.
first; ale; ale = ale->
next) {
758 ot->
name =
"Delete Tracks";
759 ot->
idname =
"NLA_OT_tracks_delete";
760 ot->
description =
"Delete selected NLA-Tracks and the strips they contain";
793 if (snla && snla->
ads) {
814 ot->
name =
"Include Selected Objects";
815 ot->
idname =
"NLA_OT_selected_objects_add";
816 ot->
description =
"Make selected objects appear in NLA Editor by adding Animation Data";
struct AnimData * BKE_animdata_ensure_id(struct ID *id)
struct AnimData * BKE_animdata_from_id(const struct ID *id)
#define CTX_DATA_BEGIN(C, Type, instance, member)
struct Main * CTX_data_main(const bContext *C)
bool BKE_nlatrack_is_nonlocal_in_liboverride(const struct ID *id, const struct NlaTrack *nlt)
void BKE_nla_action_pushdown(struct AnimData *adt, bool is_liboverride)
struct NlaTrack * BKE_nlatrack_add(struct AnimData *adt, struct NlaTrack *prev, bool is_liboverride)
void BKE_nlatrack_free(ListBase *tracks, struct 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(struct Main *bmain, struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
#define ID_IS_OVERRIDE_LIBRARY(_id)
Object is a sort of wrapper for general info.
void ED_animedit_unlink_action(struct bContext *C, struct ID *id, struct AnimData *adt, struct bAction *act, struct ReportList *reports, bool force_delete)
#define NLACHANNEL_STEP(snla)
#define NLACHANNEL_NAMEWIDTH
#define NLACHANNEL_FIRST_TOP(ac)
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
void ED_object_base_activate_with_mode_exit_if_needed(struct bContext *C, struct Base *base)
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode)
bool ED_operator_nla_active(struct bContext *C)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
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 struct 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, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static int nlachannels_mouseclick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int nla_action_unlink_exec(bContext *C, wmOperator *op)
void NLA_OT_selected_objects_add(wmOperatorType *ot)
void NLA_OT_tracks_delete(wmOperatorType *ot)
void NLA_OT_tracks_add(wmOperatorType *ot)
static int mouse_nla_channels(bContext *C, bAnimContext *ac, int channel_index, short selectmode)
static int nlaedit_delete_tracks_exec(bContext *C, wmOperator *UNUSED(op))
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)
void NLA_OT_channels_click(wmOperatorType *ot)
void NLA_OT_action_pushdown(wmOperatorType *ot)
static int nlachannels_pushdown_exec(bContext *C, wmOperator *op)
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_objects_add_exec(bContext *C, wmOperator *UNUSED(op))
bool nlaedit_disable_tweakmode(bAnimContext *ac, bool do_solo)
bool nlaedit_is_tweakmode_on(bAnimContext *ac)
bool nlaop_poll_tweakmode_off(bContext *C)
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, 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, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
struct ViewLayer * view_layer
struct bAnimListElem * next
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void WM_event_add_notifier(const bContext *C, uint type, void *reference)