diff options
author | Joshua Leung <aligorith@gmail.com> | 2011-02-02 01:21:43 +0300 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2011-02-02 01:21:43 +0300 |
commit | b8d9d10a65f79373cc742bc95c3784950686b7a5 (patch) | |
tree | 43126e51f16cb7b3645c263d5e50b3eaa11dedd3 | |
parent | bc36e39c233d61b3dbefedb7fa4f98228d225a94 (diff) |
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.
-rw-r--r-- | release/scripts/ui/space_dopesheet.py | 13 | ||||
-rw-r--r-- | source/blender/editors/animation/anim_filter.c | 6 |
2 files changed, 14 insertions, 5 deletions
diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py index bf25c7d9595..718ce0b66d9 100644 --- a/release/scripts/ui/space_dopesheet.py +++ b/release/scripts/ui/space_dopesheet.py @@ -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 diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index c917797b942..2963062cdd6 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -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; |