Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2011-06-21 05:41:39 +0400
committerJoshua Leung <aligorith@gmail.com>2011-06-21 05:41:39 +0400
commit3cad2a72b5d7e0dc18c56222a77fdf2d747f460c (patch)
tree3c2407aae4fa60583d70b12d16b401bc3f381d04 /source
parent207911bdb3e5ba3e110cc7107186af988d2d10e8 (diff)
Animation Channel Filtering Refactor - Part 1
* Removed list-expanders for Materials, Textures, and Particles. So instead of: Object Materials Material 1 ... material 1 anim data ... we now have Object Material 1 ... material 1 anim data ... This makes it faster+easier to get to these items. If you don't want to see all of these, you can still use the data-block filters from the header to hide these. * Internal cleanup - removed "owner" and "ownertype" settings from bAnimListElem. The purpose of these was muddled, and more of a hassle to maintain than doing anything useful - it was only really used for the stuff above. * Removed need for "sa->spacedata.first" casts all over the show for animation editor tools which needed access to editor data. This can now be retrieved directly.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/animation/anim_channels_defines.c328
-rw-r--r--source/blender/editors/animation/anim_filter.c389
-rw-r--r--source/blender/editors/include/ED_anim_api.h17
-rw-r--r--source/blender/editors/space_action/action_draw.c2
-rw-r--r--source/blender/editors/space_action/action_select.c2
-rw-r--r--source/blender/editors/space_graph/graph_edit.c10
-rw-r--r--source/blender/editors/space_graph/graph_select.c10
-rw-r--r--source/blender/editors/space_nla/nla_draw.c8
-rw-r--r--source/blender/editors/transform/transform_generics.c6
9 files changed, 171 insertions, 601 deletions
diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c
index 51fde09b074..c71ffe9cd5e 100644
--- a/source/blender/editors/animation/anim_channels_defines.c
+++ b/source/blender/editors/animation/anim_channels_defines.c
@@ -159,8 +159,8 @@ static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, floa
short indent= (acf->get_indent_level) ? acf->get_indent_level(ac, ale) : 0;
/* get context info needed... */
- if ((ac->sa) && (ac->sa->spacetype == SPACE_ACTION))
- saction= (SpaceAction *)ac->sa->spacedata.first;
+ if ((ac->sl) && (ac->spacetype == SPACE_ACTION))
+ saction= (SpaceAction *)ac->sl;
if (ale->type == ANIMTYPE_FCURVE) {
FCurve *fcu= (FCurve *)ale->data;
@@ -235,13 +235,6 @@ static short acf_generic_indention_flexible(bAnimContext *UNUSED(ac), bAnimListE
{
short indent= 0;
- if (ale->id) {
- /* special exception for materials, textures, and particles */
- // xxx should tex use indention 2?
- if (ELEM3(GS(ale->id->name),ID_MA,ID_PA,ID_TE))
- indent++;
- }
-
/* grouped F-Curves need extra level of indention */
if (ale->type == ANIMTYPE_FCURVE) {
FCurve *fcu= (FCurve *)ale->data;
@@ -274,24 +267,11 @@ static short acf_generic_group_offset(bAnimContext *ac, bAnimListElem *ale)
if (ale->id) {
/* special exception for textures */
if (GS(ale->id->name) == ID_TE) {
- /* minimum offset */
offset += 21;
-
- /* special offset from owner type */
- switch (ale->ownertype) {
- case ANIMTYPE_DSMAT:
- offset += 21;
- break;
-
- case ANIMTYPE_DSLAM:
- case ANIMTYPE_DSWOR:
- offset += 14;
- break;
- }
}
/* special exception for materials and particles */
else if (ELEM(GS(ale->id->name),ID_MA,ID_PA))
- offset += 21;
+ offset += 14;
/* if not in Action Editor mode, groupings must carry some offset too... */
else if (ac->datatype != ANIMCONT_ACTION)
@@ -324,46 +304,6 @@ static short acf_generic_none_setting_valid(bAnimContext *ac, bAnimListElem *ale
}
#endif
-/* check if some setting exists for this object-based data-expander (category only) */
-static short acf_generic_dsexpand_setting_valid(bAnimContext *ac, bAnimListElem *ale, int setting)
-{
- switch (setting) {
- /* only expand supported everywhere */
- case ACHANNEL_SETTING_EXPAND:
- return 1;
-
- /* visible
- * - only available in Graph Editor
- * - NOT available for 'filler' channels
- */
- case ACHANNEL_SETTING_VISIBLE:
- if (ELEM3(ale->type, ANIMTYPE_FILLMATD, ANIMTYPE_FILLPARTD, ANIMTYPE_FILLTEXD))
- return 0;
- else
- return ((ac) && (ac->spacetype == SPACE_IPO));
-
- default:
- return 0;
- }
-}
-
-/* get pointer to the setting (category only) */
-static void *acf_generic_dsexpand_setting_ptr(bAnimListElem *ale, int setting, short *type)
-{
- Object *ob= (Object *)ale->data;
-
- /* clear extra return data first */
- *type= 0;
-
- switch (setting) {
- case ACHANNEL_SETTING_EXPAND: /* expanded */
- GET_ACF_FLAG_PTR(ob->nlaflag); // XXX
-
- default: /* unsupported */
- return NULL;
- }
-}
-
/* check if some setting exists for this object-based data-expander (datablock only) */
static short acf_generic_dataexpand_setting_valid(bAnimContext *ac, bAnimListElem *UNUSED(ale), int setting)
{
@@ -459,8 +399,8 @@ static void *acf_summary_setting_ptr(bAnimListElem *ale, int setting, short *typ
/* if data is valid, return pointer to active dopesheet's relevant flag
* - this is restricted to DopeSheet/Action Editor only
*/
- if ((ac->sa) && (ac->spacetype == SPACE_ACTION) && (setting == ACHANNEL_SETTING_EXPAND)) {
- SpaceAction *saction= (SpaceAction *)ac->sa->spacedata.first;
+ if ((ac->sl) && (ac->spacetype == SPACE_ACTION) && (setting == ACHANNEL_SETTING_EXPAND)) {
+ SpaceAction *saction= (SpaceAction *)ac->sl;
bDopeSheet *ads= &saction->ads;
/* return pointer to DopeSheet's flag */
@@ -782,7 +722,7 @@ static short acf_group_setting_valid(bAnimContext *ac, bAnimListElem *UNUSED(ale
/* for now, all settings are supported, though some are only conditionally */
switch (setting) {
case ACHANNEL_SETTING_VISIBLE: /* Only available in Graph Editor */
- return ((ac->sa) && (ac->sa->spacetype==SPACE_IPO));
+ return (ac->spacetype==SPACE_IPO);
default: /* always supported */
return 1;
@@ -879,7 +819,7 @@ static short acf_fcurve_setting_valid(bAnimContext *ac, bAnimListElem *ale, int
return 0; // NOTE: in this special case, we need to draw ICON_ZOOMOUT
case ACHANNEL_SETTING_VISIBLE: /* Only available in Graph Editor */
- return ((ac->sa) && (ac->sa->spacetype==SPACE_IPO));
+ return (ac->spacetype==SPACE_IPO);
/* always available */
default:
@@ -1101,203 +1041,6 @@ static bAnimChannelType ACF_FILLDRIVERS =
acf_filldrivers_setting_ptr /* pointer for setting */
};
-/* Materials Expander ------------------------------------------- */
-
-// TODO: just get this from RNA?
-static int acf_fillmatd_icon(bAnimListElem *UNUSED(ale))
-{
- return ICON_MATERIAL_DATA;
-}
-
-static void acf_fillmatd_name(bAnimListElem *UNUSED(ale), char *name)
-{
- BLI_strncpy(name, "Materials", ANIM_CHAN_NAME_SIZE);
-}
-
-/* get the appropriate flag(s) for the setting when it is valid */
-static int acf_fillmatd_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
-{
- /* clear extra return data first */
- *neg= 0;
-
- switch (setting) {
- case ACHANNEL_SETTING_EXPAND: /* expanded */
- return OB_ADS_SHOWMATS;
-
- default: /* unsupported */
- return 0;
- }
-}
-
-/* materials expander type define */
-static bAnimChannelType ACF_FILLMATD=
-{
- "Materials Filler", /* type name */
-
- acf_generic_dataexpand_color, /* backdrop color */
- acf_generic_dataexpand_backdrop,/* backdrop */
- acf_generic_indention_1, /* indent level */
- acf_generic_basic_offset, /* offset */
-
- acf_fillmatd_name, /* name */
- acf_fillmatd_icon, /* icon */
-
- acf_generic_dsexpand_setting_valid, /* has setting */
- acf_fillmatd_setting_flag, /* flag for setting */
- acf_generic_dsexpand_setting_ptr /* pointer for setting */
-};
-
-/* Particles Expander ------------------------------------------- */
-
-// TODO: just get this from RNA?
-static int acf_fillpartd_icon(bAnimListElem *UNUSED(ale))
-{
- return ICON_PARTICLE_DATA;
-}
-
-static void acf_fillpartd_name(bAnimListElem *UNUSED(ale), char *name)
-{
- BLI_strncpy(name, "Particles", ANIM_CHAN_NAME_SIZE);
-}
-
-/* get the appropriate flag(s) for the setting when it is valid */
-static int acf_fillpartd_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
-{
- /* clear extra return data first */
- *neg= 0;
-
- switch (setting) {
- case ACHANNEL_SETTING_EXPAND: /* expanded */
- return OB_ADS_SHOWPARTS;
-
- default: /* unsupported */
- return 0;
- }
-}
-
-/* particles expander type define */
-static bAnimChannelType ACF_FILLPARTD=
-{
- "Particles Filler", /* type name */
-
- acf_generic_dataexpand_color, /* backdrop color */
- acf_generic_dataexpand_backdrop,/* backdrop */
- acf_generic_indention_1, /* indent level */
- acf_generic_basic_offset, /* offset */
-
- acf_fillpartd_name, /* name */
- acf_fillpartd_icon, /* icon */
-
- acf_generic_dsexpand_setting_valid, /* has setting */
- acf_fillpartd_setting_flag, /* flag for setting */
- acf_generic_dsexpand_setting_ptr /* pointer for setting */
-};
-
-/* Textures Expander ------------------------------------------- */
-
-/* offset for groups + grouped entities */
-static short acf_filltexd_offset(bAnimContext *ac, bAnimListElem *ale)
-{
- short offset= acf_generic_basic_offset(ac, ale);
-
- if (ale->id) {
- /* materials */
- switch (GS(ale->id->name)) {
- case ID_MA:
- offset += 21;
- break;
-
- case ID_LA:
- case ID_WO:
- offset += 14;
- break;
- }
- }
-
- return offset;
-}
-
-// TODO: just get this from RNA?
-static int acf_filltexd_icon(bAnimListElem *UNUSED(ale))
-{
- return ICON_TEXTURE_DATA;
-}
-
-static void acf_filltexd_name(bAnimListElem *UNUSED(ale), char *name)
-{
- BLI_strncpy(name, "Textures", ANIM_CHAN_NAME_SIZE);
-}
-
-/* get pointer to the setting (category only) */
-static void *acf_filltexd_setting_ptr(bAnimListElem *ale, int setting, short *type)
-{
- ID *id= (ID *)ale->data;
-
- /* clear extra return data first */
- *type= 0;
-
- switch (setting) {
- case ACHANNEL_SETTING_EXPAND: /* expanded */
- {
- switch (GS(id->name)) {
- case ID_MA:
- {
- Material *ma= (Material *)id;
- GET_ACF_FLAG_PTR(ma->flag);
- }
-
- case ID_LA:
- {
- Lamp *la= (Lamp *)id;
- GET_ACF_FLAG_PTR(la->flag);
- }
-
- case ID_WO:
- {
- World *wo= (World *)id;
- GET_ACF_FLAG_PTR(wo->flag);
- }
- }
- }
-
- default: /* unsupported */
- return NULL;
- }
-}
-
-/* get the appropriate flag(s) for the setting when it is valid */
-static int acf_filltexd_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
-{
- /* clear extra return data first */
- *neg= 0;
-
- switch (setting) {
- case ACHANNEL_SETTING_EXPAND: /* expanded */
- /* NOTE: the exact same flag must be used for other texture stack types too! */
- return MA_DS_SHOW_TEXS;
-
- default: /* unsupported */
- return 0;
- }
-}
-
-/* particles expander type define */
-static bAnimChannelType ACF_FILLTEXD=
-{
- "Textures Filler", /* type name */
-
- acf_generic_dataexpand_color, /* backdrop color */
- acf_generic_dataexpand_backdrop,/* backdrop */
- acf_generic_indention_flexible, /* indent level */
- acf_filltexd_offset, /* offset */
-
- acf_filltexd_name, /* name */
- acf_filltexd_icon, /* icon */
-
- acf_generic_dsexpand_setting_valid, /* has setting */
- acf_filltexd_setting_flag, /* flag for setting */
- acf_filltexd_setting_ptr /* pointer for setting */
-};
/* Material Expander ------------------------------------------- */
@@ -1307,12 +1050,6 @@ static int acf_dsmat_icon(bAnimListElem *UNUSED(ale))
return ICON_MATERIAL_DATA;
}
-/* offset for material expanders */
-static short acf_dsmat_offset(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale))
-{
- return 21;
-}
-
/* get the appropriate flag(s) for the setting when it is valid */
static int acf_dsmat_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
{
@@ -1368,10 +1105,10 @@ static bAnimChannelType ACF_DSMAT=
{
"Material Data Expander", /* type name */
- acf_generic_channel_color, /* backdrop color */
- acf_generic_channel_backdrop, /* backdrop */
- acf_generic_indention_0, /* indent level */
- acf_dsmat_offset, /* offset */
+ acf_generic_dataexpand_color, /* backdrop color */
+ acf_generic_dataexpand_backdrop,/* backdrop */
+ acf_generic_indention_1, /* indent level */
+ acf_generic_basic_offset, /* offset */
acf_generic_idblock_name, /* name */
acf_dsmat_icon, /* icon */
@@ -1466,22 +1203,10 @@ static int acf_dstex_icon(bAnimListElem *UNUSED(ale))
}
/* offset for texture expanders */
+// FIXME: soon to be obsolete?
static short acf_dstex_offset(bAnimContext *UNUSED(ac), bAnimListElem *ale)
{
- short offset = 21;
-
- /* special offset from owner type */
- // FIXME: too much now!
- switch (ale->ownertype) {
- case ANIMTYPE_DSMAT:
- offset += 14;
-
- case ANIMTYPE_DSLAM:
- case ANIMTYPE_DSWOR:
- offset += 7;
- }
-
- return offset;
+ return 14; // XXX: simply include this in indention instead?
}
/* get the appropriate flag(s) for the setting when it is valid */
@@ -1534,14 +1259,14 @@ static void *acf_dstex_setting_ptr(bAnimListElem *ale, int setting, short *type)
}
}
-/* material expander type define */
+/* texture expander type define */
static bAnimChannelType ACF_DSTEX=
{
"Texture Data Expander", /* type name */
- acf_generic_channel_color, /* backdrop color */
- acf_generic_channel_backdrop, /* backdrop */
- acf_generic_indention_0, /* indent level */
+ acf_generic_dataexpand_color, /* backdrop color */
+ acf_generic_dataexpand_backdrop,/* backdrop */
+ acf_generic_indention_1, /* indent level */
acf_dstex_offset, /* offset */
acf_generic_idblock_name, /* name */
@@ -2590,9 +2315,6 @@ static void ANIM_init_channel_typeinfo_data (void)
animchannelTypeInfo[type++]= &ACF_FILLACTD; /* Object Action Expander */
animchannelTypeInfo[type++]= &ACF_FILLDRIVERS; /* Drivers Expander */
- animchannelTypeInfo[type++]= &ACF_FILLMATD; /* Materials Expander */
- animchannelTypeInfo[type++]= &ACF_FILLPARTD; /* Particles Expander */
- animchannelTypeInfo[type++]= &ACF_FILLTEXD; /* Textures Expander */
animchannelTypeInfo[type++]= &ACF_DSMAT; /* Material Channel */
animchannelTypeInfo[type++]= &ACF_DSLAM; /* Lamp Channel */
@@ -2860,7 +2582,7 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float
* - in Graph Editor, checkboxes for visibility in curves area
* - in NLA Editor, glowing dots for solo/not solo...
*/
- if (ac->sa) {
+ if (ac->sl) {
if ((ac->spacetype == SPACE_IPO) && acf->has_setting(ac, ale, ACHANNEL_SETTING_VISIBLE)) {
/* for F-Curves, draw color-preview of curve behind checkbox */
if (ale->type == ANIMTYPE_FCURVE) {
@@ -2930,17 +2652,17 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float
glColor3fv(color);
/* check if we need to show the sliders */
- if ((ac->sa) && ELEM(ac->spacetype, SPACE_ACTION, SPACE_IPO)) {
+ if ((ac->sl) && ELEM(ac->spacetype, SPACE_ACTION, SPACE_IPO)) {
switch (ac->spacetype) {
case SPACE_ACTION:
{
- SpaceAction *saction= (SpaceAction *)ac->sa->spacedata.first;
+ SpaceAction *saction= (SpaceAction *)ac->sl;
draw_sliders= (saction->flag & SACTION_SLIDERS);
}
break;
case SPACE_IPO:
{
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
draw_sliders= (sipo->flag & SIPO_SLIDERS);
}
break;
@@ -3264,7 +2986,7 @@ void ANIM_channel_draw_widgets (bAnimContext *ac, bAnimListElem *ale, uiBlock *b
* - in Graph Editor, checkboxes for visibility in curves area
* - in NLA Editor, glowing dots for solo/not solo...
*/
- if (ac->sa) {
+ if (ac->sl) {
if ((ac->spacetype == SPACE_IPO) && acf->has_setting(ac, ale, ACHANNEL_SETTING_VISIBLE)) {
/* visibility toggle */
draw_setting_widget(ac, ale, acf, block, offset, ymid, ACHANNEL_SETTING_VISIBLE);
@@ -3291,17 +3013,17 @@ void ANIM_channel_draw_widgets (bAnimContext *ac, bAnimListElem *ale, uiBlock *b
short draw_sliders = 0;
/* check if we need to show the sliders */
- if ((ac->sa) && ELEM(ac->spacetype, SPACE_ACTION, SPACE_IPO)) {
+ if ((ac->sl) && ELEM(ac->spacetype, SPACE_ACTION, SPACE_IPO)) {
switch (ac->spacetype) {
case SPACE_ACTION:
{
- SpaceAction *saction= (SpaceAction *)ac->sa->spacedata.first;
+ SpaceAction *saction= (SpaceAction *)ac->sl;
draw_sliders= (saction->flag & SACTION_SLIDERS);
}
break;
case SPACE_IPO:
{
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
draw_sliders= (sipo->flag & SIPO_SLIDERS);
}
break;
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index 967002131c2..b42fc47b14c 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -258,29 +258,29 @@ static short nlaedit_get_context (bAnimContext *ac, SpaceNla *snla)
*/
short ANIM_animdata_context_getdata (bAnimContext *ac)
{
- ScrArea *sa= ac->sa;
+ SpaceLink *sl = ac->sl;
short ok= 0;
/* context depends on editor we are currently in */
- if (sa) {
- switch (sa->spacetype) {
+ if (sl) {
+ switch (ac->spacetype) {
case SPACE_ACTION:
{
- SpaceAction *saction= (SpaceAction *)sa->spacedata.first;
+ SpaceAction *saction= (SpaceAction *)sl;
ok= actedit_get_context(ac, saction);
}
break;
case SPACE_IPO:
{
- SpaceIpo *sipo= (SpaceIpo *)sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)sl;
ok= graphedit_get_context(ac, sipo);
}
break;
case SPACE_NLA:
{
- SpaceNla *snla= (SpaceNla *)sa->spacedata.first;
+ SpaceNla *snla= (SpaceNla *)sl;
ok= nlaedit_get_context(ac, snla);
}
break;
@@ -303,6 +303,7 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
{
ScrArea *sa= CTX_wm_area(C);
ARegion *ar= CTX_wm_region(C);
+ SpaceLink *sl= CTX_wm_space_data(C);
Scene *scene= CTX_data_scene(C);
/* clear old context info */
@@ -317,6 +318,7 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
}
ac->sa= sa;
ac->ar= ar;
+ ac->sl= sl;
ac->spacetype= (sa) ? sa->spacetype : 0;
ac->regiontype= (ar) ? ar->regiontype : 0;
@@ -397,7 +399,7 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
/* quick macro to add a pointer to an AnimData block as a channel */
#define ANIMDATA_ADD_ANIMDATA(id) \
{\
- ale= make_new_animlistelem((id)->adt, ANIMTYPE_ANIMDATA, NULL, ANIMTYPE_NONE, (ID *)id);\
+ ale= make_new_animlistelem((id)->adt, ANIMTYPE_ANIMDATA, (ID *)id);\
if (ale) {\
BLI_addtail(anim_data, ale);\
items++;\
@@ -432,7 +434,7 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
/* this function allocates memory for a new bAnimListElem struct for the
* provided animation channel-data.
*/
-static bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, short ownertype, ID *owner_id)
+static bAnimListElem *make_new_animlistelem (void *data, short datatype, ID *owner_id)
{
bAnimListElem *ale= NULL;
@@ -443,10 +445,6 @@ static bAnimListElem *make_new_animlistelem (void *data, short datatype, void *o
ale->data= data;
ale->type= datatype;
- // XXX what is the point of the owner data?
- // xxx try and use this to simplify the problem of finding whether parent channels are working...
- ale->owner= owner;
- ale->ownertype= ownertype;
ale->id= owner_id;
ale->adt= BKE_animdata_from_id(owner_id);
@@ -509,55 +507,6 @@ static bAnimListElem *make_new_animlistelem (void *data, short datatype, void *o
ale->datatype= ALE_NONE;
}
break;
- case ANIMTYPE_FILLMATD:
- {
- Object *ob= (Object *)data;
-
- ale->flag= FILTER_MAT_OBJC(ob);
-
- ale->key_data= NULL;
- ale->datatype= ALE_NONE;
- }
- break;
- case ANIMTYPE_FILLPARTD:
- {
- Object *ob= (Object *)data;
-
- ale->flag= FILTER_PART_OBJC(ob);
-
- ale->key_data= NULL;
- ale->datatype= ALE_NONE;
- }
- break;
- case ANIMTYPE_FILLTEXD:
- {
- ID *id= (ID *)data;
-
- switch (GS(id->name)) {
- case ID_MA:
- {
- Material *ma= (Material *)id;
- ale->flag= FILTER_TEX_MATC(ma);
- }
- break;
- case ID_LA:
- {
- Lamp *la= (Lamp *)id;
- ale->flag= FILTER_TEX_LAMC(la);
- }
- break;
- case ID_WO:
- {
- World *wo= (World *)id;
- ale->flag= FILTER_TEX_WORC(wo);
- }
- break;
- }
-
- ale->key_data= NULL;
- ale->datatype= ALE_NONE;
- }
- break;
case ANIMTYPE_DSMAT:
{
@@ -957,7 +906,7 @@ static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bAct
return NULL;
}
-static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id)
+static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, int filter_mode, ID *owner_id)
{
FCurve *fcu;
int items = 0;
@@ -973,7 +922,7 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve
*/
for (fcu=first; ( (fcu = animdata_filter_fcurve_next(ads, fcu, grp, filter_mode, owner_id)) ); fcu=fcu->next)
{
- bAnimListElem *ale = make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id);
+ bAnimListElem *ale = make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner_id);
if (ale) {
BLI_addtail(anim_data, ale);
@@ -985,7 +934,7 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve
return items;
}
-static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, bAction *act, int filter_mode, void *owner, short ownertype, ID *owner_id)
+static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, bAction *act, int filter_mode, ID *owner_id)
{
bAnimListElem *ale=NULL;
bActionGroup *agrp;
@@ -1057,7 +1006,7 @@ static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeS
if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) {
/* filter selection of channel specially here again, since may be open and not subject to previous test */
if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) {
- ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id);
+ ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, owner_id);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1086,7 +1035,7 @@ static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeS
{
if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) {
/* NOTE: filter_gmode is used here, not standard filter_mode, since there may be some flags that shouldn't apply */
- items += animdata_filter_fcurves(anim_data, ads, first_fcu, agrp, owner, ownertype, filter_gmode, owner_id);
+ items += animdata_filter_fcurves(anim_data, ads, first_fcu, agrp, filter_gmode, owner_id);
}
}
}
@@ -1097,7 +1046,7 @@ static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeS
/* loop over un-grouped F-Curves (only if we're not only considering those channels in the animive group) */
if (!(filter_mode & ANIMFILTER_ACTGROUPED)) {
// XXX the 'owner' info here needs review...
- items += animdata_filter_fcurves(anim_data, ads, (lastchan)?(lastchan->next):(act->curves.first), NULL, owner, ownertype, filter_mode, owner_id);
+ items += animdata_filter_fcurves(anim_data, ads, (lastchan)?(lastchan->next):(act->curves.first), NULL, filter_mode, owner_id);
}
/* return the number of items added to the list */
@@ -1112,7 +1061,7 @@ static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeS
* - for normal filtering (i.e. for editing), we only need the NLA-tracks but they can be in 'normal' evaluation
* order, i.e. first to last. Otherwise, some tools may get screwed up.
*/
-static int animdata_filter_nla (bAnimContext *UNUSED(ac), ListBase *anim_data, bDopeSheet *UNUSED(ads), AnimData *adt, int filter_mode, void *owner, short ownertype, ID *owner_id)
+static int animdata_filter_nla (bAnimContext *UNUSED(ac), ListBase *anim_data, bDopeSheet *UNUSED(ads), AnimData *adt, int filter_mode, ID *owner_id)
{
bAnimListElem *ale;
NlaTrack *nlt;
@@ -1128,7 +1077,7 @@ static int animdata_filter_nla (bAnimContext *UNUSED(ac), ListBase *anim_data, b
* - as AnimData may not have an action, we pass a dummy pointer just to get the list elem created, then
* overwrite this with the real value - REVIEW THIS...
*/
- ale= make_new_animlistelem((void *)(&adt->action), ANIMTYPE_NLAACTION, owner, ownertype, owner_id);
+ ale= make_new_animlistelem((void *)(&adt->action), ANIMTYPE_NLAACTION, owner_id);
ale->data= (adt->action) ? adt->action : NULL;
if (ale) {
@@ -1166,7 +1115,7 @@ static int animdata_filter_nla (bAnimContext *UNUSED(ac), ListBase *anim_data, b
if ( ANIMCHANNEL_SELOK(SEL_NLT(nlt)) ) {
/* only include if this track is active */
if (!(filter_mode & ANIMFILTER_ACTIVE) || (nlt->flag & NLATRACK_ACTIVE)) {
- ale= make_new_animlistelem(nlt, ANIMTYPE_NLATRACK, owner, ownertype, owner_id);
+ ale= make_new_animlistelem(nlt, ANIMTYPE_NLATRACK, owner_id);
if (ale) {
BLI_addtail(anim_data, ale);
@@ -1204,7 +1153,7 @@ static int animdata_filter_shapekey (bAnimContext *ac, ListBase *anim_data, Key
// TODO: consider 'active' too?
/* owner-id here must be key so that the F-Curve can be resolved... */
- ale= make_new_animlistelem(kb, ANIMTYPE_SHAPEKEY, NULL, ANIMTYPE_NONE, (ID *)key);
+ ale= make_new_animlistelem(kb, ANIMTYPE_SHAPEKEY, (ID *)key);
if (ale) {
BLI_addtail(anim_data, ale);
@@ -1221,7 +1170,7 @@ static int animdata_filter_shapekey (bAnimContext *ac, ListBase *anim_data, Key
if (filter_mode & ANIMFILTER_ANIMDATA)
ANIMDATA_ADD_ANIMDATA(key)
else if (key->adt->action)
- items= animdata_filter_action(ac, anim_data, NULL, key->adt->action, filter_mode, NULL, ANIMTYPE_NONE, (ID *)key);
+ items= animdata_filter_action(ac, anim_data, NULL, key->adt->action, filter_mode, (ID *)key);
}
}
@@ -1250,7 +1199,7 @@ static int animdata_filter_gpencil (ListBase *anim_data, void *UNUSED(data), int
/* add gpd as channel too (if for drawing, and it has layers) */
if ((filter_mode & ANIMFILTER_CHANNELS) && (gpd->layers.first)) {
/* add to list */
- ale= make_new_animlistelem(gpd, ANIMTYPE_GPDATABLOCK, NULL, ANIMTYPE_NONE, NULL);
+ ale= make_new_animlistelem(gpd, ANIMTYPE_GPDATABLOCK, NULL);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1266,7 +1215,7 @@ static int animdata_filter_gpencil (ListBase *anim_data, void *UNUSED(data), int
/* only if editable */
if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_GPL(gpl)) {
/* add to list */
- ale= make_new_animlistelem(gpl, ANIMTYPE_GPLAYER, gpd, ANIMTYPE_GPDATABLOCK, (ID*)gpd);
+ ale= make_new_animlistelem(gpl, ANIMTYPE_GPLAYER, (ID*)gpd);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1285,11 +1234,7 @@ static int animdata_filter_gpencil (ListBase *anim_data, void *UNUSED(data), int
/* NOTE: owner_id is either material, lamp, or world block, which is the direct owner of the texture stack in question */
static int animdata_filter_dopesheet_texs (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, ID *owner_id, int filter_mode)
{
- ListBase texs = {NULL, NULL};
- LinkData *ld;
MTex **mtex = NULL;
- short expanded=0;
- int ownertype = ANIMTYPE_NONE;
bAnimListElem *ale=NULL;
int items=0, a=0;
@@ -1304,8 +1249,6 @@ static int animdata_filter_dopesheet_texs (bAnimContext *ac, ListBase *anim_data
Material *ma= (Material *)owner_id;
mtex= (MTex**)(&ma->mtex);
- expanded= FILTER_TEX_MATC(ma);
- ownertype= ANIMTYPE_DSMAT;
}
break;
case ID_LA:
@@ -1313,8 +1256,6 @@ static int animdata_filter_dopesheet_texs (bAnimContext *ac, ListBase *anim_data
Lamp *la= (Lamp *)owner_id;
mtex= (MTex**)(&la->mtex);
- expanded= FILTER_TEX_LAMC(la);
- ownertype= ANIMTYPE_DSLAM;
}
break;
case ID_WO:
@@ -1322,8 +1263,6 @@ static int animdata_filter_dopesheet_texs (bAnimContext *ac, ListBase *anim_data
World *wo= (World *)owner_id;
mtex= (MTex**)(&wo->mtex);
- expanded= FILTER_TEX_WORC(wo);
- ownertype= ANIMTYPE_DSWOR;
}
break;
default:
@@ -1352,69 +1291,34 @@ static int animdata_filter_dopesheet_texs (bAnimContext *ac, ListBase *anim_data
ok=1;)
if (ok == 0) continue;
- /* make a temp list elem for this */
- ld= MEM_callocN(sizeof(LinkData), "DopeSheet-TextureCache");
- ld->data= tex;
- BLI_addtail(&texs, ld);
- }
-
- /* if there were no channels found, no need to carry on */
- if (texs.first == NULL)
- return 0;
-
- /* include textures-expand widget? */
- if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(owner_id, ANIMTYPE_FILLTEXD, owner_id, ownertype, owner_id);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
- }
-
- /* add textures */
- if ((expanded) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- /* for each texture in cache, add channels */
- for (ld= texs.first; ld; ld= ld->next) {
- Tex *tex= (Tex *)ld->data;
-
- /* include texture-expand widget? */
- if (filter_mode & ANIMFILTER_CHANNELS) {
- /* check if filtering by active status */
- if ANIMCHANNEL_ACTIVEOK(tex) {
- ale= make_new_animlistelem(tex, ANIMTYPE_DSTEX, owner_id, ownertype, owner_id);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
+ /* include texture-expand widget? */
+ if (filter_mode & ANIMFILTER_CHANNELS) {
+ /* check if filtering by active status */
+ if ANIMCHANNEL_ACTIVEOK(tex) {
+ ale= make_new_animlistelem(tex, ANIMTYPE_DSTEX, owner_id);
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
}
}
-
- /* add texture's animation data
- * NOTE: for these, we make the owner/ownertype the material/lamp/etc. not the texture, otherwise the
- * drawing code cannot resolve the indention easily
- */
- if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_TEX_DATA(tex) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- ANIMDATA_FILTER_CASES(tex,
- { /* AnimData blocks - do nothing... */ },
- items += animdata_filter_nla(ac, anim_data, ads, tex->adt, filter_mode, owner_id, ownertype, (ID *)tex);,
- items += animdata_filter_fcurves(anim_data, ads, tex->adt->drivers.first, NULL, owner_id, ownertype, filter_mode, (ID *)tex);,
- items += animdata_filter_action(ac, anim_data, ads, tex->adt->action, filter_mode, owner_id, ownertype, (ID *)tex);)
- }
+ }
+
+ /* add texture's animation data */
+ if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_TEX_DATA(tex) || (filter_mode & ANIMFILTER_CURVESONLY)) {
+ ANIMDATA_FILTER_CASES(tex,
+ { /* AnimData blocks - do nothing... */ },
+ items += animdata_filter_nla(ac, anim_data, ads, tex->adt, filter_mode, (ID *)tex);,
+ items += animdata_filter_fcurves(anim_data, ads, tex->adt->drivers.first, NULL, filter_mode, (ID *)tex);,
+ items += animdata_filter_action(ac, anim_data, ads, tex->adt->action, filter_mode, (ID *)tex);)
}
}
- /* free cache */
- BLI_freelistN(&texs);
-
/* return the number of items added to the list */
return items;
}
static int animdata_filter_dopesheet_mats (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode)
{
- ListBase mats = {NULL, NULL};
- LinkData *ld;
-
bAnimListElem *ale=NULL;
Object *ob= base->object;
int items=0, a=0;
@@ -1426,93 +1330,64 @@ static int animdata_filter_dopesheet_mats (bAnimContext *ac, ListBase *anim_data
/* for now, if no material returned, skip (this shouldn't confuse the user I hope) */
if (ma == NULL) continue;
-
+
/* check if ok */
ANIMDATA_FILTER_CASES(ma,
{ /* AnimData blocks - do nothing... */ },
ok=1;,
ok=1;,
ok=1;)
-
+
/* need to check textures */
if (ok == 0 && !(ads->filterflag & ADS_FILTER_NOTEX)) {
int mtInd;
-
+
for (mtInd=0; mtInd < MAX_MTEX; mtInd++) {
MTex *mtex = ma->mtex[mtInd];
-
- if(mtex && mtex->tex) {
+
+ if (mtex && mtex->tex) {
ANIMDATA_FILTER_CASES(mtex->tex,
{ /* AnimData blocks - do nothing... */ },
ok=1;,
ok=1;,
ok=1;)
}
-
- if(ok)
+
+ if (ok)
break;
}
}
if (ok == 0) continue;
- /* make a temp list elem for this */
- ld= MEM_callocN(sizeof(LinkData), "DopeSheet-MaterialCache");
- ld->data= ma;
- BLI_addtail(&mats, ld);
- }
-
- /* if there were no channels found, no need to carry on */
- if (mats.first == NULL)
- return 0;
-
- /* include materials-expand widget? */
- if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(ob, ANIMTYPE_FILLMATD, base, ANIMTYPE_OBJECT, (ID *)ob);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
- }
-
- /* add materials? */
- if (FILTER_MAT_OBJC(ob) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- /* for each material in cache, add channels */
- for (ld= mats.first; ld; ld= ld->next) {
- Material *ma= (Material *)ld->data;
-
- /* include material-expand widget? */
- // hmm... do we need to store the index of this material in the array anywhere?
- if (filter_mode & ANIMFILTER_CHANNELS) {
- /* check if filtering by active status */
- if ANIMCHANNEL_ACTIVEOK(ma) {
- ale= make_new_animlistelem(ma, ANIMTYPE_DSMAT, base, ANIMTYPE_OBJECT, (ID *)ma);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
+ /* include material-expand widget? */
+ // hmm... do we need to store the index of this material in the array anywhere?
+ if (filter_mode & ANIMFILTER_CHANNELS) {
+ /* check if filtering by active status */
+ if ANIMCHANNEL_ACTIVEOK(ma) {
+ ale= make_new_animlistelem(ma, ANIMTYPE_DSMAT, (ID *)ma);
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
}
}
-
- /* add material's animation data */
- if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_MAT_OBJD(ma) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- /* material's animation data */
- ANIMDATA_FILTER_CASES(ma,
- { /* AnimData blocks - do nothing... */ },
- items += animdata_filter_nla(ac, anim_data, ads, ma->adt, filter_mode, ma, ANIMTYPE_DSMAT, (ID *)ma);,
- items += animdata_filter_fcurves(anim_data, ads, ma->adt->drivers.first, NULL, ma, ANIMTYPE_DSMAT, filter_mode, (ID *)ma);,
- items += animdata_filter_action(ac, anim_data, ads, ma->adt->action, filter_mode, ma, ANIMTYPE_DSMAT, (ID *)ma);)
-
- /* textures */
- if (!(ads->filterflag & ADS_FILTER_NOTEX))
- items += animdata_filter_dopesheet_texs(ac, anim_data, ads, (ID *)ma, filter_mode);
- }
+ }
+
+ /* add material's animation data */
+ if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_MAT_OBJD(ma) || (filter_mode & ANIMFILTER_CURVESONLY)) {
+ /* material's animation data */
+ ANIMDATA_FILTER_CASES(ma,
+ { /* AnimData blocks - do nothing... */ },
+ items += animdata_filter_nla(ac, anim_data, ads, ma->adt, filter_mode, (ID *)ma);,
+ items += animdata_filter_fcurves(anim_data, ads, ma->adt->drivers.first, NULL, filter_mode, (ID *)ma);,
+ items += animdata_filter_action(ac, anim_data, ads, ma->adt->action, filter_mode, (ID *)ma);)
+
+ /* textures */
+ if (!(ads->filterflag & ADS_FILTER_NOTEX))
+ items += animdata_filter_dopesheet_texs(ac, anim_data, ads, (ID *)ma, filter_mode);
}
}
- /* free cache */
- BLI_freelistN(&mats);
-
/* return the number of items added to the list */
return items;
}
@@ -1522,51 +1397,39 @@ static int animdata_filter_dopesheet_particles (bAnimContext *ac, ListBase *anim
bAnimListElem *ale=NULL;
Object *ob= base->object;
ParticleSystem *psys = ob->particlesystem.first;
- int items= 0, first = 1;
+ int items= 0;
for(; psys; psys=psys->next) {
short ok = 0;
-
+
if(ELEM(NULL, psys->part, psys->part->adt))
continue;
-
+
ANIMDATA_FILTER_CASES(psys->part,
{ /* AnimData blocks - do nothing... */ },
ok=1;,
ok=1;,
ok=1;)
if (ok == 0) continue;
-
- /* include particles-expand widget? */
- if (first && (filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(ob, ANIMTYPE_FILLPARTD, base, ANIMTYPE_OBJECT, (ID *)ob);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
- first = 0;
- }
/* add particle settings? */
- if (FILTER_PART_OBJC(ob) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- if ((filter_mode & ANIMFILTER_CHANNELS)) {
- /* check if filtering by active status */
- if ANIMCHANNEL_ACTIVEOK(psys->part) {
- ale = make_new_animlistelem(psys->part, ANIMTYPE_DSPART, base, ANIMTYPE_OBJECT, (ID *)psys->part);
- if (ale) {
- BLI_addtail(anim_data, ale);
- items++;
- }
+ if ((filter_mode & ANIMFILTER_CHANNELS)) {
+ /* check if filtering by active status */
+ if ANIMCHANNEL_ACTIVEOK(psys->part) {
+ ale = make_new_animlistelem(psys->part, ANIMTYPE_DSPART, (ID *)psys->part);
+ if (ale) {
+ BLI_addtail(anim_data, ale);
+ items++;
}
}
-
- if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_PART_OBJD(psys->part) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- ANIMDATA_FILTER_CASES(psys->part,
- { /* AnimData blocks - do nothing... */ },
- items += animdata_filter_nla(ac, anim_data, ads, psys->part->adt, filter_mode, psys->part, ANIMTYPE_DSPART, (ID *)psys->part);,
- items += animdata_filter_fcurves(anim_data, ads, psys->part->adt->drivers.first, NULL, psys->part, ANIMTYPE_DSPART, filter_mode, (ID *)psys->part);,
- items += animdata_filter_action(ac, anim_data, ads, psys->part->adt->action, filter_mode, psys->part, ANIMTYPE_DSPART, (ID *)psys->part);)
- }
+ }
+
+ if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_PART_OBJD(psys->part) || (filter_mode & ANIMFILTER_CURVESONLY)) {
+ ANIMDATA_FILTER_CASES(psys->part,
+ { /* AnimData blocks - do nothing... */ },
+ items += animdata_filter_nla(ac, anim_data, ads, psys->part->adt, filter_mode, (ID *)psys->part);,
+ items += animdata_filter_fcurves(anim_data, ads, psys->part->adt->drivers.first, NULL, filter_mode, (ID *)psys->part);,
+ items += animdata_filter_action(ac, anim_data, ads, psys->part->adt->action, filter_mode, (ID *)psys->part);)
}
}
@@ -1649,7 +1512,7 @@ static int animdata_filter_dopesheet_obdata (bAnimContext *ac, ListBase *anim_da
if ((filter_mode & ANIMFILTER_CURVESONLY) == 0) {
/* check if filtering by active status */
if ANIMCHANNEL_ACTIVEOK(iat) {
- ale= make_new_animlistelem(iat, type, base, ANIMTYPE_OBJECT, (ID *)iat);
+ ale= make_new_animlistelem(iat, type, (ID *)iat);
if (ale) BLI_addtail(anim_data, ale);
}
}
@@ -1659,9 +1522,9 @@ static int animdata_filter_dopesheet_obdata (bAnimContext *ac, ListBase *anim_da
/* filtering for channels - nla, drivers, keyframes */
ANIMDATA_FILTER_CASES(iat,
{ /* AnimData blocks - do nothing... */ },
- items+= animdata_filter_nla(ac, anim_data, ads, iat->adt, filter_mode, iat, type, (ID *)iat);,
- items+= animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, iat, type, filter_mode, (ID *)iat);,
- items+= animdata_filter_action(ac, anim_data, ads, iat->adt->action, filter_mode, iat, type, (ID *)iat);)
+ items+= animdata_filter_nla(ac, anim_data, ads, iat->adt, filter_mode, (ID *)iat);,
+ items+= animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, (ID *)iat);,
+ items+= animdata_filter_action(ac, anim_data, ads, iat->adt->action, filter_mode, (ID *)iat);)
/* sub-data filtering... */
switch (ob->type) {
@@ -1694,7 +1557,7 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
if ANIMCHANNEL_SELOK((base->flag & SELECT)) {
/* check if filtering by active status */
if ANIMCHANNEL_ACTIVEOK(ob) {
- ale= make_new_animlistelem(base, ANIMTYPE_OBJECT, NULL, ANIMTYPE_NONE, (ID *)ob);
+ ale= make_new_animlistelem(base, ANIMTYPE_OBJECT, (ID *)ob);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1715,12 +1578,12 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
{ /* AnimData blocks - do nothing... */ },
{ /* nla */
/* add NLA tracks */
- items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob);
+ items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, (ID *)ob);
},
{ /* drivers */
/* include drivers-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLDRIVERS, base, ANIMTYPE_OBJECT, (ID *)ob);
+ ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLDRIVERS, (ID *)ob);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1729,14 +1592,13 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
/* add F-Curve channels (drivers are F-Curves) */
if (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_DRVD(adt) || !(filter_mode & ANIMFILTER_CHANNELS)) {
- // need to make the ownertype normal object here... (maybe type should be a separate one for clarity?)
- items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, ob, ANIMTYPE_OBJECT, filter_mode, (ID *)ob);
+ items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, (ID *)ob);
}
},
{ /* action (keyframes) */
/* include action-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLACTD, base, ANIMTYPE_OBJECT, (ID *)ob);
+ ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLACTD, (ID *)ob);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1745,8 +1607,7 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
/* add F-Curve channels? */
if (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_ACTC(adt->action) || !(filter_mode & ANIMFILTER_CHANNELS)) {
- // need to make the ownertype normal object here... (maybe type should be a separate one for clarity?)
- items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob);
+ items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, (ID *)ob);
}
}
);
@@ -1763,7 +1624,7 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
/* check if filtering by active status */
if ANIMCHANNEL_ACTIVEOK(key) {
- ale= make_new_animlistelem(key, ANIMTYPE_DSSKEY, base, ANIMTYPE_OBJECT, (ID *)ob);
+ ale= make_new_animlistelem(key, ANIMTYPE_DSSKEY, (ID *)ob);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1773,12 +1634,12 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
/* add NLA tracks - only if expanded or so */
if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_SKE_OBJD(key) || (filter_mode & ANIMFILTER_CURVESONLY))
- items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)key);
+ items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, (ID *)key);
},
{ /* drivers */
/* include shapekey-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(key, ANIMTYPE_DSSKEY, base, ANIMTYPE_OBJECT, (ID *)ob);
+ ale= make_new_animlistelem(key, ANIMTYPE_DSSKEY, (ID *)ob);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1787,7 +1648,7 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
/* add channels */
if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_SKE_OBJD(key) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, key, ANIMTYPE_DSSKEY, filter_mode, (ID *)key);
+ items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, (ID *)key);
}
},
{ /* action (keyframes) */
@@ -1795,7 +1656,7 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
/* check if filtering by active status */
if ANIMCHANNEL_ACTIVEOK(key) {
- ale= make_new_animlistelem(key, ANIMTYPE_DSSKEY, base, ANIMTYPE_OBJECT, (ID *)ob);
+ ale= make_new_animlistelem(key, ANIMTYPE_DSSKEY, (ID *)ob);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1805,7 +1666,7 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data,
/* add channels */
if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_SKE_OBJD(key) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, key, ANIMTYPE_DSSKEY, (ID *)key);
+ items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, (ID *)key);
}
}
);
@@ -1934,7 +1795,7 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
if ((filter_mode & (ANIMFILTER_CURVESONLY|ANIMFILTER_NLATRACKS)) == 0) {
/* check if filtering by selection */
if (ANIMCHANNEL_SELOK( (sce->flag & SCE_DS_SELECTED) )) {
- ale= make_new_animlistelem(sce, ANIMTYPE_SCENE, NULL, ANIMTYPE_NONE, NULL);
+ ale= make_new_animlistelem(sce, ANIMTYPE_SCENE, NULL);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1953,12 +1814,12 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
{ /* AnimData blocks - do nothing... */ },
{ /* nla */
/* add NLA tracks */
- items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, sce, ANIMTYPE_SCENE, (ID *)sce);
+ items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, (ID *)sce);
},
{ /* drivers */
/* include drivers-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLDRIVERS, sce, ANIMTYPE_SCENE, (ID *)sce);
+ ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLDRIVERS, (ID *)sce);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1967,13 +1828,13 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
/* add F-Curve channels (drivers are F-Curves) */
if (EXPANDED_DRVD(adt) || !(filter_mode & ANIMFILTER_CHANNELS)) {
- items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, sce, ANIMTYPE_SCENE, filter_mode, (ID *)sce);
+ items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, (ID *)sce);
}
},
{ /* action */
/* include action-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLACTD, sce, ANIMTYPE_SCENE, (ID *)sce);
+ ale= make_new_animlistelem(adt->action, ANIMTYPE_FILLACTD, (ID *)sce);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -1982,7 +1843,7 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
/* add F-Curve channels? */
if (EXPANDED_ACTC(adt->action) || !(filter_mode & ANIMFILTER_CHANNELS)) {
- items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, sce, ANIMTYPE_SCENE, (ID *)sce);
+ items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, (ID *)sce);
}
}
)
@@ -1996,12 +1857,12 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
{ /* AnimData blocks - do nothing... */ },
{ /* nla */
/* add NLA tracks */
- items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, wo, ANIMTYPE_DSWOR, (ID *)wo);
+ items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, (ID *)wo);
},
{ /* drivers */
/* include world-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(wo, ANIMTYPE_DSWOR, sce, ANIMTYPE_SCENE, (ID *)wo);
+ ale= make_new_animlistelem(wo, ANIMTYPE_DSWOR, (ID *)wo);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -2011,13 +1872,13 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
/* add F-Curve channels (drivers are F-Curves) */
if (FILTER_WOR_SCED(wo)/*EXPANDED_DRVD(adt)*/ || !(filter_mode & ANIMFILTER_CHANNELS)) {
// XXX owner info is messed up now...
- items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, wo, ANIMTYPE_DSWOR, filter_mode, (ID *)wo);
+ items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, (ID *)wo);
}
},
{ /* action */
/* include world-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(wo, ANIMTYPE_DSWOR, sce, ANIMTYPE_SCENE, (ID *)sce);
+ ale= make_new_animlistelem(wo, ANIMTYPE_DSWOR, (ID *)sce);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -2026,7 +1887,7 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
/* add channels */
if (FILTER_WOR_SCED(wo) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, wo, ANIMTYPE_DSWOR, (ID *)wo);
+ items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, (ID *)wo);
}
}
)
@@ -2046,12 +1907,12 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
{ /* AnimData blocks - do nothing... */ },
{ /* nla */
/* add NLA tracks */
- items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree);
+ items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, (ID *)ntree);
},
{ /* drivers */
/* include nodetree-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(ntree, ANIMTYPE_DSNTREE, sce, ANIMTYPE_SCENE, (ID *)ntree);
+ ale= make_new_animlistelem(ntree, ANIMTYPE_DSNTREE, (ID *)ntree);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -2061,13 +1922,13 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
/* add F-Curve channels (drivers are F-Curves) */
if (FILTER_NTREE_SCED(ntree)/*EXPANDED_DRVD(adt)*/ || !(filter_mode & ANIMFILTER_CHANNELS)) {
// XXX owner info is messed up now...
- items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, ntree, ANIMTYPE_DSNTREE, filter_mode, (ID *)ntree);
+ items += animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, (ID *)ntree);
}
},
{ /* action */
/* include nodetree-expand widget? */
if ((filter_mode & ANIMFILTER_CHANNELS) && !(filter_mode & ANIMFILTER_CURVESONLY)) {
- ale= make_new_animlistelem(ntree, ANIMTYPE_DSNTREE, sce, ANIMTYPE_SCENE, (ID *)sce);
+ ale= make_new_animlistelem(ntree, ANIMTYPE_DSNTREE, (ID *)sce);
if (ale) {
BLI_addtail(anim_data, ale);
items++;
@@ -2076,7 +1937,7 @@ static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_dat
/* add channels */
if (FILTER_NTREE_SCED(ntree) || (filter_mode & ANIMFILTER_CURVESONLY)) {
- items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree);
+ items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, (ID *)ntree);
}
}
)
@@ -2496,8 +2357,8 @@ static short animdata_filter_dopesheet_summary (bAnimContext *ac, ListBase *anim
* since all the other Animation Editors won't have this concept
* being applicable.
*/
- if ((ac && ac->sa) && (ac->sa->spacetype == SPACE_ACTION)) {
- SpaceAction *saction= (SpaceAction *)ac->sa->spacedata.first;
+ if ((ac && ac->sl) && (ac->spacetype == SPACE_ACTION)) {
+ SpaceAction *saction= (SpaceAction *)ac->sl;
ads= &saction->ads;
}
else {
@@ -2511,7 +2372,7 @@ static short animdata_filter_dopesheet_summary (bAnimContext *ac, ListBase *anim
*/
// TODO: we should really check if some other prohibited filters are also active, but that can be for later
if ((filter_mode & ANIMFILTER_CHANNELS) && (ads->filterflag & ADS_FILTER_SUMMARY)) {
- bAnimListElem *ale= make_new_animlistelem(ac, ANIMTYPE_SUMMARY, NULL, ANIMTYPE_NONE, NULL);
+ bAnimListElem *ale= make_new_animlistelem(ac, ANIMTYPE_SUMMARY, NULL);
if (ale) {
BLI_addtail(anim_data, ale);
(*items)++;
@@ -2608,12 +2469,12 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode
switch (datatype) {
case ANIMCONT_ACTION: /* 'Action Editor' */
{
- SpaceAction *saction = (SpaceAction *)ac->sa->spacedata.first;
+ SpaceAction *saction = (SpaceAction *)ac->sl;
bDopeSheet *ads = (saction)? &saction->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, ads, data, filter_mode, NULL, ANIMTYPE_NONE, (ID *)obact);
+ items += animdata_filter_action(ac, anim_data, ads, data, filter_mode, (ID *)obact);
}
break;
diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h
index 5ecbaeb1c87..a8836458fad 100644
--- a/source/blender/editors/include/ED_anim_api.h
+++ b/source/blender/editors/include/ED_anim_api.h
@@ -41,6 +41,7 @@ struct bContext;
struct wmKeyConfig;
struct ReportList;
struct ScrArea;
+struct SpaceLink;
struct ARegion;
struct View2D;
@@ -72,7 +73,8 @@ typedef struct bAnimContext {
short mode; /* editor->mode */
short spacetype; /* sa->spacetype */
short regiontype; /* active region -> type (channels or main) */
- struct ScrArea *sa; /* editor */
+ struct ScrArea *sa; /* editor host */
+ struct SpaceLink *sl; /* editor data */
struct ARegion *ar; /* region within editor */
struct Scene *scene; /* active scene */
@@ -108,8 +110,6 @@ typedef struct bAnimListElem {
int flag; /* copy of elem's flags for quick access */
int index; /* for un-named data, the index of the data in it's collection */
- short elemFlag; /* flags for the list elem instance (not the data it represents) */
-
short datatype; /* type of motion data to expect */
void *key_data; /* motion data - mostly F-Curves, but can be other types too */
@@ -126,7 +126,6 @@ typedef struct bAnimListElem {
* NOTE: need to keep the order of these synchronised with the channels define code
* which is used for drawing and handling channel lists for
*/
-// XXX was ACTTYPE_*
typedef enum eAnim_ChannelType {
ANIMTYPE_NONE= 0,
ANIMTYPE_ANIMDATA,
@@ -141,9 +140,6 @@ typedef enum eAnim_ChannelType {
ANIMTYPE_FILLACTD,
ANIMTYPE_FILLDRIVERS,
- ANIMTYPE_FILLMATD,
- ANIMTYPE_FILLPARTD,
- ANIMTYPE_FILLTEXD,
ANIMTYPE_DSMAT,
ANIMTYPE_DSLAM,
@@ -188,7 +184,6 @@ typedef enum eAnim_KeyType {
/* ----------------- Filtering -------------------- */
/* filtering flags - under what circumstances should a channel be added */
-// XXX was ACTFILTER_*
typedef enum eAnimFilter_Flags {
ANIMFILTER_VISIBLE = (1<<0), /* should channels be visible (in terms of hierarchy only) */
ANIMFILTER_SEL = (1<<1), /* should channels be selected */
@@ -222,9 +217,6 @@ typedef enum eAnimFilter_Flags {
/* 'Object' channels */
#define SEL_OBJC(base) ((base->flag & SELECT))
#define EXPANDED_OBJC(ob) ((ob->nlaflag & OB_ADS_COLLAPSED)==0)
- /* 'Sub-object' channels (flags stored in Object block) */
-#define FILTER_MAT_OBJC(ob) ((ob->nlaflag & OB_ADS_SHOWMATS))
-#define FILTER_PART_OBJC(ob) ((ob->nlaflag & OB_ADS_SHOWPARTS))
/* 'Sub-object' channels (flags stored in Data block) */
#define FILTER_SKE_OBJD(key) ((key->flag & KEY_DS_EXPAND))
#define FILTER_MAT_OBJD(ma) ((ma->flag & MA_DS_EXPAND))
@@ -243,9 +235,6 @@ typedef enum eAnimFilter_Flags {
/* 'Sub-AnimData' channels */
#define EXPANDED_DRVD(adt) ((adt->flag & ADT_DRIVERS_COLLAPSED)==0)
/* Texture expanders */
-#define FILTER_TEX_MATC(ma) ((ma->flag & MA_DS_SHOW_TEXS))
-#define FILTER_TEX_LAMC(la) ((la->flag & LA_DS_SHOW_TEXS))
-#define FILTER_TEX_WORC(wa) ((wo->flag & WO_DS_SHOW_TEXS))
#define FILTER_TEX_DATA(tex) ((tex->flag & TEX_DS_EXPAND))
/* Actions (also used for Dopesheet) */
diff --git a/source/blender/editors/space_action/action_draw.c b/source/blender/editors/space_action/action_draw.c
index f0f34645ebf..1b8a1778707 100644
--- a/source/blender/editors/space_action/action_draw.c
+++ b/source/blender/editors/space_action/action_draw.c
@@ -248,8 +248,6 @@ void draw_channel_strips(bAnimContext *ac, SpaceAction *saction, ARegion *ar)
break;
case ANIMTYPE_FILLACTD:
- case ANIMTYPE_FILLMATD:
- case ANIMTYPE_FILLPARTD:
case ANIMTYPE_DSSKEY:
case ANIMTYPE_DSWOR:
{
diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c
index 4d0043913ab..95f618ad360 100644
--- a/source/blender/editors/space_action/action_select.c
+++ b/source/blender/editors/space_action/action_select.c
@@ -780,7 +780,7 @@ static void actkeys_select_leftright (bAnimContext *ac, short leftright, short s
/* Sync marker support */
if (select_mode==SELECT_ADD) {
- SpaceAction *saction= ac->sa->spacedata.first;
+ SpaceAction *saction= (SpaceAction *)ac->sl;
if ((saction) && (saction->flag & SACTION_MARKERS_MOVE)) {
ListBase *markers = ED_animcontext_get_markers(ac);
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index 0da03832d15..71c937b87cb 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -279,7 +279,7 @@ void GRAPH_OT_view_selected (wmOperatorType *ot)
/* Bake each F-Curve into a set of samples, and store as a ghost curve */
static void create_ghost_curves (bAnimContext *ac, int start, int end)
{
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
ListBase anim_data = {NULL, NULL};
bAnimListElem *ale;
int filter;
@@ -399,7 +399,7 @@ static int graphkeys_clear_ghostcurves_exec(bContext *C, wmOperator *UNUSED(op))
/* get editor data */
if (ANIM_animdata_get_context(C, &ac) == 0)
return OPERATOR_CANCELLED;
- sipo= (SpaceIpo *)ac.sa->spacedata.first;
+ sipo= (SpaceIpo *)ac.sl;
/* if no ghost curves, don't do anything */
if (sipo->ghostCurves.first == NULL)
@@ -1725,7 +1725,7 @@ static int graphkeys_framejump_exec(bContext *C, wmOperator *UNUSED(op))
/* set the new current frame and cursor values, based on the average time and value */
if (ked.i1) {
- SpaceIpo *sipo= ac.sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac.sl;
Scene *scene= ac.scene;
/* take the average values, rounding to the nearest int for the current frame */
@@ -1792,7 +1792,7 @@ static void snap_graph_keys(bAnimContext *ac, short mode)
ked.list.last= (ac->markers) ? ac->markers->last : NULL;
}
else if (mode == GRAPHKEYS_SNAP_VALUE) {
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
ked.f1= (sipo) ? sipo->cursorVal : 0.0f;
}
@@ -1906,7 +1906,7 @@ static void mirror_graph_keys(bAnimContext *ac, short mode)
return;
}
else if (mode == GRAPHKEYS_MIRROR_VALUE) {
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
ked.f1= (sipo) ? sipo->cursorVal : 0.0f;
}
diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c
index cb799b85d3a..507ee43c6aa 100644
--- a/source/blender/editors/space_graph/graph_select.c
+++ b/source/blender/editors/space_graph/graph_select.c
@@ -90,7 +90,7 @@ static void deselect_graph_keys (bAnimContext *ac, short test, short sel)
bAnimListElem *ale;
int filter;
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
KeyframeEditData ked= {{NULL}};
KeyframeEditFunc test_cb, sel_cb;
@@ -201,7 +201,7 @@ static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, sho
bAnimListElem *ale;
int filter;
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
KeyframeEditData ked;
KeyframeEditFunc ok_cb, select_cb;
View2D *v2d= &ac->ar->v2d;
@@ -958,7 +958,7 @@ static void get_nearest_fcurve_verts_list (bAnimContext *ac, const int mval[2],
bAnimListElem *ale;
int filter;
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
View2D *v2d= &ac->ar->v2d;
/* get curves to search through
@@ -1091,7 +1091,7 @@ static tNearestVertInfo *find_nearest_fcurve_vert (bAnimContext *ac, const int m
/* option 1) select keyframe directly under mouse */
static void mouse_graph_keys (bAnimContext *ac, const int mval[2], short select_mode, short curves_only)
{
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
tNearestVertInfo *nvi;
BezTriple *bezt= NULL;
@@ -1218,7 +1218,7 @@ static void graphkeys_mselect_column (bAnimContext *ac, const int mval[2], short
bAnimListElem *ale;
int filter;
- SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first;
+ SpaceIpo *sipo= (SpaceIpo *)ac->sl;
KeyframeEditFunc select_cb, ok_cb;
KeyframeEditData ked;
tNearestVertInfo *nvi;
diff --git a/source/blender/editors/space_nla/nla_draw.c b/source/blender/editors/space_nla/nla_draw.c
index e830a421a59..c4a3a2324b4 100644
--- a/source/blender/editors/space_nla/nla_draw.c
+++ b/source/blender/editors/space_nla/nla_draw.c
@@ -605,8 +605,8 @@ static void draw_nla_channel_list_gl (bAnimContext *ac, ListBase *anim_data, Vie
indent= 0;
if (ale->id) {
- /* special exception for materials and particles */
- if (ELEM(GS(ale->id->name),ID_MA,ID_PA)) {
+ /* special exception for textures */
+ if (GS(ale->id->name) == ID_TE) {
offset= 21;
indent= 1;
}
@@ -653,8 +653,8 @@ static void draw_nla_channel_list_gl (bAnimContext *ac, ListBase *anim_data, Vie
group = 5;
if (ale->id) {
- /* special exception for materials and particles */
- if (ELEM(GS(ale->id->name),ID_MA,ID_PA)) {
+ /* special exception for textures */
+ if (GS(ale->id->name) == ID_TE) {
offset= 21;
indent= 1;
}
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 20a26d8c58d..82f3ad87785 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -349,6 +349,7 @@ void recalcData(TransInfo *t)
ac.obact= OBACT;
ac.sa= t->sa;
ac.ar= t->ar;
+ ac.sl= (t->sa)? t->sa->spacedata.first : NULL;
ac.spacetype= (t->sa)? t->sa->spacetype : 0;
ac.regiontype= (t->ar)? t->ar->regiontype : 0;
@@ -383,7 +384,7 @@ void recalcData(TransInfo *t)
SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first;
ListBase anim_data = {NULL, NULL};
- bAnimContext ac;
+ bAnimContext ac= {NULL};
int filter;
bAnimListElem *ale;
@@ -392,12 +393,11 @@ void recalcData(TransInfo *t)
/* initialise relevant anim-context 'context' data from TransInfo data */
/* NOTE: sync this with the code in ANIM_animdata_get_context() */
- memset(&ac, 0, sizeof(bAnimContext));
-
scene= ac.scene= t->scene;
ac.obact= OBACT;
ac.sa= t->sa;
ac.ar= t->ar;
+ ac.sl= (t->sa)? t->sa->spacedata.first : NULL;
ac.spacetype= (t->sa)? t->sa->spacetype : 0;
ac.regiontype= (t->ar)? t->ar->regiontype : 0;