forked from bartvdbraak/blender
Action Editor UI Tweaks:
While animating, I realised that actually the 'only selected' and 'include hidden' DopeSheet filtering options are also useful in the Action Editor, especially while tweaking the animation for some characters, where you'd like to focus only on some of the character's control (i.e. eyelid tweaks, hand tweaks, etc.). The other DopeSheet filtering options aren't so relevant here, so I've excluded them from this.
This commit is contained in:
parent
bc36e39c23
commit
b8d9d10a65
@ -25,14 +25,17 @@ import bpy
|
||||
# DopeSheet Filtering
|
||||
|
||||
# used for DopeSheet, NLA, and Graph Editors
|
||||
def dopesheet_filter(layout, context):
|
||||
def dopesheet_filter(layout, context, genericFiltersOnly=False):
|
||||
dopesheet = context.space_data.dopesheet
|
||||
is_nla = context.area.type == 'NLA_EDITOR'
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(dopesheet, "show_only_selected", text="")
|
||||
row.prop(dopesheet, "show_hidden", text="")
|
||||
|
||||
|
||||
if genericFiltersOnly:
|
||||
return
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(dopesheet, "show_transforms", text="")
|
||||
|
||||
@ -110,8 +113,12 @@ class DOPESHEET_HT_header(bpy.types.Header):
|
||||
|
||||
if st.mode == 'DOPESHEET':
|
||||
dopesheet_filter(layout, context)
|
||||
elif st.mode == 'ACTION':
|
||||
# 'genericFiltersOnly' limits the options to only the relevant 'generic' subset of
|
||||
# filters which will work here and are useful (especially for character animation)
|
||||
dopesheet_filter(layout, context, genericFiltersOnly=True)
|
||||
|
||||
elif st.mode in ('ACTION', 'SHAPEKEY'):
|
||||
if st.mode in ('ACTION', 'SHAPEKEY'):
|
||||
layout.template_ID(st, "action", new="action.new")
|
||||
|
||||
# Grease Pencil mode doesn't need snapping, as it's frame-aligned only
|
||||
|
@ -800,7 +800,7 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s
|
||||
/* ----------------------------------------- */
|
||||
|
||||
/* NOTE: when this function returns true, the F-Curve is to be skipped */
|
||||
static int skip_fcurve_selected_data(bDopeSheet *ads, FCurve *fcu, ID *owner_id, int filter_mode)
|
||||
static int skip_fcurve_selected_data (bDopeSheet *ads, FCurve *fcu, ID *owner_id, int filter_mode)
|
||||
{
|
||||
if (GS(owner_id->name) == ID_OB) {
|
||||
Object *ob= (Object *)owner_id;
|
||||
@ -2568,9 +2568,11 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode
|
||||
switch (datatype) {
|
||||
case ANIMCONT_ACTION: /* 'Action Editor' */
|
||||
{
|
||||
bDopeSheet *ads = ((ac->sa) && (ac->sa->spacetype==SPACE_ACTION)) ? &((SpaceAction*)ac->sa->spacedata.first)->ads : NULL;
|
||||
|
||||
/* the check for the DopeSheet summary is included here since the summary works here too */
|
||||
if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items))
|
||||
items += animdata_filter_action(ac, anim_data, NULL, data, filter_mode, NULL, ANIMTYPE_NONE, (ID *)obact);
|
||||
items += animdata_filter_action(ac, anim_data, ads, data, filter_mode, NULL, ANIMTYPE_NONE, (ID *)obact);
|
||||
}
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user