Animation Editors: Visibility Toggles for Datablocks now work
This commit is contained in:
@@ -1903,10 +1903,6 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float
|
||||
else
|
||||
selected= 0;
|
||||
|
||||
/* enable correct blending mode for icons to work... */
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
/* step 1) draw backdrop ........................................... */
|
||||
if (acf->draw_backdrop)
|
||||
acf->draw_backdrop(ac, ale, yminc, ymaxc);
|
||||
@@ -1954,8 +1950,6 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float
|
||||
}
|
||||
}
|
||||
|
||||
glDisable(GL_BLEND); /* End of blending with background (text now gets drawn) */
|
||||
|
||||
/* step 5) draw name ............................................... */
|
||||
if (acf->name) {
|
||||
char name[256]; /* hopefully this will be enough! */
|
||||
@@ -1981,10 +1975,6 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float
|
||||
// TODO: when drawing sliders, make those draw instead of these toggles if not enough space
|
||||
|
||||
if (v2d) {
|
||||
/* set blending again, as text drawing may clear it */
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
/* protect... */
|
||||
if (acf->has_setting(ac, ale, ACHANNEL_SETTING_PROTECT)) {
|
||||
/* just skip - drawn as widget now */
|
||||
@@ -1995,8 +1985,6 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float
|
||||
/* just skip - drawn as widget now */
|
||||
offset += ICON_WIDTH;
|
||||
}
|
||||
|
||||
glDisable(GL_BLEND); /* End of blending with background */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2058,7 +2046,11 @@ static void draw_setting_widget (bAnimContext *ac, bAnimListElem *ale, bAnimChan
|
||||
case ACHANNEL_SETTING_MUTE: /* muted eye */
|
||||
//icon= ((enabled)? ICON_MUTE_IPO_ON : ICON_MUTE_IPO_OFF);
|
||||
icon= ICON_MUTE_IPO_OFF;
|
||||
tooltip= "Do channel(s) contribute to result."; // XXX
|
||||
|
||||
if (ale->type == ALE_FCURVE)
|
||||
tooltip= "Does F-Curve contribute to result.";
|
||||
else
|
||||
tooltip= "Do channels contribute to result.";
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -374,27 +374,29 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
|
||||
*/
|
||||
#define ANIMDATA_FILTER_CASES(id, adtOk, nlaOk, driversOk, keysOk) \
|
||||
{\
|
||||
if (filter_mode & ANIMFILTER_ANIMDATA) {\
|
||||
if ((id)->adt) {\
|
||||
adtOk\
|
||||
}\
|
||||
}\
|
||||
else if (ads->filterflag & ADS_FILTER_ONLYNLA) {\
|
||||
if (ANIMDATA_HAS_NLA(id)) {\
|
||||
nlaOk\
|
||||
}\
|
||||
else if (!(ads->filterflag & ADS_FILTER_NLA_NOACT) && ANIMDATA_HAS_KEYS(id)) {\
|
||||
nlaOk\
|
||||
}\
|
||||
}\
|
||||
else if (ads->filterflag & ADS_FILTER_ONLYDRIVERS) {\
|
||||
if (ANIMDATA_HAS_DRIVERS(id)) {\
|
||||
driversOk\
|
||||
}\
|
||||
}\
|
||||
else {\
|
||||
if (ANIMDATA_HAS_KEYS(id)) {\
|
||||
keysOk\
|
||||
if ((id)->adt) {\
|
||||
if (!(filter_mode & ANIMFILTER_CURVEVISIBLE) || !((id)->adt->flag & ADT_CURVES_NOT_VISIBLE)) {\
|
||||
if (filter_mode & ANIMFILTER_ANIMDATA) {\
|
||||
adtOk\
|
||||
}\
|
||||
else if (ads->filterflag & ADS_FILTER_ONLYNLA) {\
|
||||
if (ANIMDATA_HAS_NLA(id)) {\
|
||||
nlaOk\
|
||||
}\
|
||||
else if (!(ads->filterflag & ADS_FILTER_NLA_NOACT) && ANIMDATA_HAS_KEYS(id)) {\
|
||||
nlaOk\
|
||||
}\
|
||||
}\
|
||||
else if (ads->filterflag & ADS_FILTER_ONLYDRIVERS) {\
|
||||
if (ANIMDATA_HAS_DRIVERS(id)) {\
|
||||
driversOk\
|
||||
}\
|
||||
}\
|
||||
else {\
|
||||
if (ANIMDATA_HAS_KEYS(id)) {\
|
||||
keysOk\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
}
|
||||
@@ -1465,6 +1467,14 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
|
||||
worOk= !(ads->filterflag & ADS_FILTER_NOWOR);)
|
||||
}
|
||||
|
||||
/* if only F-Curves with visible flags set can be shown, check that
|
||||
* datablocks haven't been set to invisible
|
||||
*/
|
||||
if (filter_mode & ANIMFILTER_CURVEVISIBLE) {
|
||||
if ((sce->adt) && (sce->adt->flag & ADT_CURVES_NOT_VISIBLE))
|
||||
sceOk= worOk= 0;
|
||||
}
|
||||
|
||||
/* check if not all bad (i.e. so there is something to show) */
|
||||
if ( !(!sceOk && !worOk) ) {
|
||||
/* add scene data to the list of filtered channels */
|
||||
@@ -1481,7 +1491,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
|
||||
Key *key= ob_get_key(ob);
|
||||
short actOk=1, keyOk=1, dataOk=1, matOk=1, partOk=1;
|
||||
|
||||
/* firstly, check if object can be included, by the following fanimors:
|
||||
/* firstly, check if object can be included, by the following factors:
|
||||
* - if only visible, must check for layer and also viewport visibility
|
||||
* - if only selected, must check if object is selected
|
||||
* - there must be animation data to edit
|
||||
@@ -1495,6 +1505,14 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
|
||||
if (ob->restrictflag & OB_RESTRICT_VIEW) continue;
|
||||
}
|
||||
|
||||
/* if only F-Curves with visible flags set can be shown, check that
|
||||
* datablock hasn't been set to invisible
|
||||
*/
|
||||
if (filter_mode & ANIMFILTER_CURVEVISIBLE) {
|
||||
if ((ob->adt) && (ob->adt->flag & ADT_CURVES_NOT_VISIBLE))
|
||||
continue;
|
||||
}
|
||||
|
||||
/* additionally, dopesheet filtering also affects what objects to consider */
|
||||
if (ads->filterflag) {
|
||||
/* check selection and object type filters */
|
||||
|
||||
Reference in New Issue
Block a user