[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21963] branches/blender2.5/blender/source /blender: 2.5 - Anim Editor cleanups + Graph Editor Clutter Reduction
Joshua Leung
aligorith at gmail.com
Tue Jul 28 08:50:30 CEST 2009
Revision: 21963
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21963
Author: aligorith
Date: 2009-07-28 08:50:30 +0200 (Tue, 28 Jul 2009)
Log Message:
-----------
2.5 - Anim Editor cleanups + Graph Editor Clutter Reduction
* Cleaned up some parts of the code that were unused/could be done a bit nicer
* Added a new option for only showing the keyframes of the selected F-Curves in the Graph Editor, as another way of reducing the clutter.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/editors/animation/anim_channels.c
branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c
branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c
branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h
branches/blender2.5/blender/source/blender/editors/space_graph/graph_draw.c
branches/blender2.5/blender/source/blender/editors/space_graph/graph_edit.c
branches/blender2.5/blender/source/blender/editors/space_graph/graph_header.c
branches/blender2.5/blender/source/blender/editors/space_graph/graph_select.c
branches/blender2.5/blender/source/blender/editors/space_nla/nla_channels.c
branches/blender2.5/blender/source/blender/editors/space_nla/nla_draw.c
branches/blender2.5/blender/source/blender/editors/space_nla/nla_edit.c
branches/blender2.5/blender/source/blender/makesdna/DNA_action_types.h
branches/blender2.5/blender/source/blender/makesdna/DNA_space_types.h
branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.c
Modified: branches/blender2.5/blender/source/blender/editors/animation/anim_channels.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_channels.c 2009-07-28 06:26:10 UTC (rev 21962)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_channels.c 2009-07-28 06:50:30 UTC (rev 21963)
@@ -722,7 +722,7 @@
/* only groups - don't check other types yet, since they may no-longer exist */
if (ale->type == ANIMTYPE_GROUP) {
bActionGroup *agrp= (bActionGroup *)ale->data;
- AnimData *adt= BKE_animdata_from_id(ale->id);
+ AnimData *adt= ale->adt;
FCurve *fcu, *fcn;
/* skip this group if no AnimData available, as we can't safely remove the F-Curves */
@@ -760,7 +760,7 @@
for (ale= anim_data.first; ale; ale= ale->next) {
/* only F-Curves, and only if we can identify its parent */
if (ale->type == ANIMTYPE_FCURVE) {
- AnimData *adt= BKE_animdata_from_id(ale->id);
+ AnimData *adt= ale->adt;
FCurve *fcu= (FCurve *)ale->data;
/* if no AnimData, we've got nowhere to remove the F-Curve from */
Modified: branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c 2009-07-28 06:26:10 UTC (rev 21962)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c 2009-07-28 06:50:30 UTC (rev 21963)
@@ -242,42 +242,12 @@
return NULL;
/* handling depends on the type of animation-context we've got */
- if (ale && ale->id)
- return BKE_animdata_from_id(ale->id);
-
- /* no appropriate object found */
- return NULL;
+ if (ale)
+ return ale->adt;
+ else
+ return NULL;
}
-/* Set/clear temporary mapping of coordinates from 'local-action' time to 'global-nla-scaled' time
- * - the old mapping is stored in a static var, but that shouldn't be too bad as UI drawing
- * (where this is called) is single-threaded anyway
- */
-// XXX was called: map_active_strip()
-// TODO: should this be depreceated?
-void ANIM_nla_mapping_draw(gla2DDrawInfo *di, AnimData *adt, short restore)
-{
- static rctf stored;
-
- if (restore) {
- /* restore un-mapped coordinates */
- gla2DSetMap(di, &stored);
- }
- else {
- /* set mapped coordinates */
- rctf map;
-
- gla2DGetMap(di, &stored);
- map= stored;
-
- map.xmin= BKE_nla_tweakedit_remap(adt, map.xmin, NLATIME_CONVERT_MAP);
- map.xmax= BKE_nla_tweakedit_remap(adt, map.xmax, NLATIME_CONVERT_MAP);
-
- if (map.xmin == map.xmax) map.xmax += 1.0f;
- gla2DSetMap(di, &map);
- }
-}
-
/* ------------------- */
/* helper function for ANIM_nla_mapping_apply_fcurve() -> "restore", i.e. mapping points back to action-time */
Modified: branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c 2009-07-28 06:26:10 UTC (rev 21962)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c 2009-07-28 06:50:30 UTC (rev 21963)
@@ -17,11 +17,11 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * The Original Code is Copyright (C) 2008 Blender Foundation, Joshua Leung
* All rights reserved.
*
*
- * Contributor(s): Joshua Leung
+ * Contributor(s): Joshua Leung (original author)
*
* ***** END GPL LICENSE BLOCK *****
*/
@@ -33,15 +33,16 @@
* for cases to ignore.
*
* While this is primarily used for the Action/Dopesheet Editor (and its accessory modes),
- * the IPO Editor also uses this for it's channel list and for determining which curves
- * are being edited.
+ * the Graph Editor also uses this for its channel list and for determining which curves
+ * are being edited. Likewise, the NLA Editor also uses this for its channel list and in
+ * its operators.
*
* Note: much of the original system this was based on was built before the creation of the RNA
* system. In future, it would be interesting to replace some parts of this code with RNA queries,
* however, RNA does not eliminate some of the boiler-plate reduction benefits presented by this
* system, so if any such work does occur, it should only be used for the internals used here...
*
- * -- Joshua Leung, Dec 2008
+ * -- Joshua Leung, Dec 2008 (Last revision July 2009)
*/
#include <string.h>
@@ -73,6 +74,7 @@
#include "BLI_blenlib.h"
+#include "BKE_animsys.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_key.h"
@@ -205,6 +207,12 @@
if (sipo->ads == NULL)
sipo->ads= MEM_callocN(sizeof(bDopeSheet), "GraphEdit DopeSheet");
+ /* set settings for Graph Editor - "Selected = Editable" */
+ if (sipo->flag & SIPO_SELCUVERTSONLY)
+ sipo->ads->filterflag |= ADS_FILTER_SELEDIT;
+ else
+ sipo->ads->filterflag &= ~ADS_FILTER_SELEDIT;
+
/* sync settings with current view status, then return appropriate data */
switch (sipo->mode) {
case SIPO_MODE_ANIMATION: /* Animation F-Curve Editor */
@@ -403,11 +411,20 @@
-/* quick macro to test if a anim-channel (F-Curve, Group, etc.) is selected in an acceptable way */
+/* quick macro to test if an anim-channel (F-Curve, Group, etc.) is selected in an acceptable way */
#define ANIMCHANNEL_SELOK(test_func) \
( !(filter_mode & (ANIMFILTER_SEL|ANIMFILTER_UNSEL)) || \
((filter_mode & ANIMFILTER_SEL) && test_func) || \
((filter_mode & ANIMFILTER_UNSEL) && test_func==0) )
+
+/* quick macro to test if an anim-channel (F-Curve) is selected ok for editing purposes
+ * - _SELEDIT means that only selected curves will have visible+editable keyframes
+ */
+// FIXME: this doesn't work cleanly yet...
+#define ANIMCHANNEL_SELEDITOK(test_func) \
+ ( !(filter_mode & ANIMFILTER_SELEDIT) || \
+ (filter_mode & ANIMFILTER_CHANNELS) || \
+ (test_func) )
/* ----------- 'Private' Stuff --------------- */
@@ -430,6 +447,7 @@
ale->ownertype= ownertype;
ale->id= owner_id;
+ ale->adt= BKE_animdata_from_id(owner_id);
/* do specifics */
switch (datatype) {
@@ -649,7 +667,7 @@
/* only work with this channel and its subchannels if it is editable */
if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_FCU(fcu)) {
/* only include this curve if selected in a way consistent with the filtering requirements */
- if ( ANIMCHANNEL_SELOK(SEL_FCU(fcu)) ) {
+ if ( ANIMCHANNEL_SELOK(SEL_FCU(fcu)) && ANIMCHANNEL_SELEDITOK(SEL_FCU(fcu)) ) {
/* only include if this curve is active */
if (!(filter_mode & ANIMFILTER_ACTIVE) || (fcu->flag & FCURVE_ACTIVE)) {
ale= make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id);
@@ -1628,10 +1646,10 @@
dataOk= 0;
break;
}
-
+
/* particles */
partOk = 0;
- if(!(ads->filterflag & ADS_FILTER_NOPART) && ob->particlesystem.first) {
+ if (!(ads->filterflag & ADS_FILTER_NOPART) && ob->particlesystem.first) {
ParticleSystem *psys = ob->particlesystem.first;
for(; psys; psys=psys->next) {
if (psys->part) {
@@ -1653,7 +1671,6 @@
break;
}
}
-
/* check if all bad (i.e. nothing to show) */
if (!actOk && !keyOk && !dataOk && !matOk && !partOk)
@@ -1705,17 +1722,16 @@
dataOk= 0;
break;
}
-
+
/* particles */
partOk = 0;
- if(ob->particlesystem.first) {
+ if (ob->particlesystem.first) {
ParticleSystem *psys = ob->particlesystem.first;
for(; psys; psys=psys->next) {
if(psys->part && ANIMDATA_HAS_KEYS(psys->part)) {
partOk = 1;
break;
}
-
}
}
Modified: branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h 2009-07-28 06:26:10 UTC (rev 21962)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h 2009-07-28 06:50:30 UTC (rev 21963)
@@ -30,15 +30,18 @@
#define ED_ANIM_API_H
struct ID;
-struct Scene;
struct ListBase;
+struct AnimData;
+
struct bContext;
struct wmWindowManager;
struct ScrArea;
struct ARegion;
struct View2D;
-struct gla2DDrawInfo;
+
+struct Scene;
struct Object;
+
struct bActionGroup;
struct FCurve;
struct FModifier;
@@ -88,18 +91,19 @@
typedef struct bAnimListElem {
struct bAnimListElem *next, *prev;
- void *data; /* source data this elem represents */
- int type; /* one of the ANIMTYPE_* values */
- int flag; /* copy of elem's flags for quick access */
- int index; /* copy of adrcode where applicable */
+ void *data; /* source data this elem represents */
+ int type; /* one of the ANIMTYPE_* values */
+ int flag; /* copy of elem's flags for quick access */
+ int index; /* copy of adrcode where applicable */
- void *key_data; /* motion data - mostly F-Curves, but can be other types too */
- short datatype; /* type of motion data to expect */
+ void *key_data; /* motion data - mostly F-Curves, but can be other types too */
+ short datatype; /* type of motion data to expect */
- struct ID *id; /* ID block that channel is attached to (may be used */
+ struct ID *id; /* ID block that channel is attached to */
+ struct AnimData *adt; /* source of the animation data attached to ID block (for convenience) */
- void *owner; /* group or channel which acts as this channel's owner */
- short ownertype; /* type of owner */
+ void *owner; /* group or channel which acts as this channel's owner */
+ short ownertype; /* type of owner */
} bAnimListElem;
@@ -166,6 +170,7 @@
ANIMFILTER_ACTIVE = (1<<8), /* channel should be 'active' */
ANIMFILTER_ANIMDATA = (1<<9), /* only return the underlying AnimData blocks (not the tracks, etc.) data comes from */
ANIMFILTER_NLATRACKS = (1<<10), /* only include NLA-tracks */
+ ANIMFILTER_SELEDIT = (1<<11), /* link editability with selected status */
} eAnimFilter_Flags;
@@ -341,9 +346,6 @@
/* Obtain the AnimData block providing NLA-scaling for the given channel if applicable */
struct AnimData *ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list