[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17547] branches/animsys2/source/blender: AnimSys2: Dopesheet - Now shows Curve/Path IPO's too
Joshua Leung
aligorith at gmail.com
Mon Nov 24 04:26:29 CET 2008
Revision: 17547
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17547
Author: aligorith
Date: 2008-11-24 04:26:26 +0100 (Mon, 24 Nov 2008)
Log Message:
-----------
AnimSys2: Dopesheet - Now shows Curve/Path IPO's too
Modified Paths:
--------------
branches/animsys2/source/blender/include/BIF_editaction.h
branches/animsys2/source/blender/makesdna/DNA_action_types.h
branches/animsys2/source/blender/makesdna/DNA_curve_types.h
branches/animsys2/source/blender/src/drawaction.c
branches/animsys2/source/blender/src/editaction.c
branches/animsys2/source/blender/src/editipo_lib.c
branches/animsys2/source/blender/src/editipo_mods.c
branches/animsys2/source/blender/src/header_action.c
Modified: branches/animsys2/source/blender/include/BIF_editaction.h
===================================================================
--- branches/animsys2/source/blender/include/BIF_editaction.h 2008-11-24 03:06:27 UTC (rev 17546)
+++ branches/animsys2/source/blender/include/BIF_editaction.h 2008-11-24 03:26:26 UTC (rev 17547)
@@ -58,6 +58,7 @@
ACTTYPE_DSMAT,
ACTTYPE_DSLAM,
ACTTYPE_DSCAM,
+ ACTTYPE_DSCUR,
ACTTYPE_DSSKEY,
ACTTYPE_ACHAN,
@@ -82,6 +83,7 @@
#define FILTER_MAT_OBJD(ma) ((ma->flag & MA_DS_EXPAND))
#define FILTER_LAM_OBJD(la) ((la->flag & LA_DS_EXPAND))
#define FILTER_CAM_OBJD(ca) ((ca->flag & CAM_DS_EXPAND))
+#define FILTER_CUR_OBJD(cu) ((cu->flag & CU_DS_EXPAND))
#define SEL_ACTC(actc) ((actc->flag & ACTC_SELECTED))
#define EXPANDED_ACTC(actc) ((actc->flag & ACTC_EXPANDED))
Modified: branches/animsys2/source/blender/makesdna/DNA_action_types.h
===================================================================
--- branches/animsys2/source/blender/makesdna/DNA_action_types.h 2008-11-24 03:06:27 UTC (rev 17546)
+++ branches/animsys2/source/blender/makesdna/DNA_action_types.h 2008-11-24 03:26:26 UTC (rev 17547)
@@ -258,6 +258,7 @@
ADS_FILTER_NOCAM = (1<<10),
ADS_FILTER_NOMAT = (1<<11),
ADS_FILTER_NOLAM = (1<<12),
+ ADS_FILTER_NOCUR = (1<<14),
} DOPESHEET_FILTERFLAG;
/* DopeSheet general flags */
Modified: branches/animsys2/source/blender/makesdna/DNA_curve_types.h
===================================================================
--- branches/animsys2/source/blender/makesdna/DNA_curve_types.h 2008-11-24 03:06:27 UTC (rev 17546)
+++ branches/animsys2/source/blender/makesdna/DNA_curve_types.h 2008-11-24 03:26:26 UTC (rev 17547)
@@ -205,6 +205,7 @@
#define CU_OFFS_PATHDIST 256
#define CU_FAST 512 /* Font: no filling inside editmode */
#define CU_RETOPO 1024
+#define CU_DS_EXPAND 2048
/* spacemode */
#define CU_LEFT 0
Modified: branches/animsys2/source/blender/src/drawaction.c
===================================================================
--- branches/animsys2/source/blender/src/drawaction.c 2008-11-24 03:06:27 UTC (rev 17546)
+++ branches/animsys2/source/blender/src/drawaction.c 2008-11-24 03:26:26 UTC (rev 17547)
@@ -703,6 +703,22 @@
sprintf(name, ca->id.name+2);
}
break;
+ case ACTTYPE_DSCUR: /* curve (dopesheet) expand widget */
+ {
+ Curve *cu = (Curve *)ale->data;
+
+ group = 4;
+ indent = 1;
+ special = ICON_CURVE;
+
+ if (FILTER_CUR_OBJD(cu))
+ expand = ICON_TRIA_DOWN;
+ else
+ expand = ICON_TRIA_RIGHT;
+
+ sprintf(name, cu->id.name+2);
+ }
+ break;
case ACTTYPE_DSSKEY: /* shapekeys (dopesheet) expand widget */
{
Key *key= (Key *)ale->data;
Modified: branches/animsys2/source/blender/src/editaction.c
===================================================================
--- branches/animsys2/source/blender/src/editaction.c 2008-11-24 03:06:27 UTC (rev 17546)
+++ branches/animsys2/source/blender/src/editaction.c 2008-11-24 03:26:26 UTC (rev 17547)
@@ -294,6 +294,16 @@
ale->datatype= ALE_IPO;
}
break;
+ case ACTTYPE_DSCUR:
+ {
+ Curve *cu= (Curve *)data;
+
+ ale->flag= FILTER_CUR_OBJD(cu);
+
+ ale->key_data= cu->ipo;
+ ale->datatype= ALE_IPO;
+ }
+ break;
case ACTTYPE_DSSKEY:
{
Key *key= (Key *)data;
@@ -764,13 +774,13 @@
Camera *ca= (Camera *)ob->data;
IpoCurve *icu;
- /* include ipo-expand widget? */
+ /* include camera-expand widget? */
if (filter_mode & (ACTFILTER_CHANNELS|ACTFILTER_IPOKEYS)) {
ale= make_new_actlistelem(ca, ACTTYPE_DSCAM, base, ACTTYPE_OBJECT);
if (ale) BLI_addtail(act_data, ale);
}
- /* add ipo-curve channels? */
+ /* add camera ipo-curve channels? */
if ( (FILTER_CAM_OBJD(ca) || (filter_mode & ACTFILTER_ONLYICU)) &&
!(filter_mode & ACTFILTER_IPOKEYS) )
{
@@ -796,13 +806,13 @@
Lamp *la= (Lamp *)ob->data;
IpoCurve *icu;
- /* include ipo-expand widget? */
+ /* include lamp-expand widget? */
if (filter_mode & (ACTFILTER_CHANNELS|ACTFILTER_IPOKEYS)) {
ale= make_new_actlistelem(la, ACTTYPE_DSLAM, base, ACTTYPE_OBJECT);
if (ale) BLI_addtail(act_data, ale);
}
- /* add ipo-curve channels? */
+ /* add lamp ipo-curve channels? */
if ( (FILTER_LAM_OBJD(la) || (filter_mode & ACTFILTER_ONLYICU)) &&
!(filter_mode & ACTFILTER_IPOKEYS) )
{
@@ -821,6 +831,38 @@
}
}
+static void actdata_filter_dopesheet_curve (ListBase *act_data, bDopeSheet *ads, Base *base, int filter_mode)
+{
+ bActListElem *ale=NULL;
+ Object *ob= base->object;
+ Curve *cu= (Curve *)ob->data;
+ IpoCurve *icu;
+
+ /* include curve-expand widget? */
+ if (filter_mode & (ACTFILTER_CHANNELS|ACTFILTER_IPOKEYS)) {
+ ale= make_new_actlistelem(cu, ACTTYPE_DSCUR, base, ACTTYPE_OBJECT);
+ if (ale) BLI_addtail(act_data, ale);
+ }
+
+ /* add curve ipo-curve channels? */
+ if ( (FILTER_CUR_OBJD(cu) || (filter_mode & ACTFILTER_ONLYICU)) &&
+ !(filter_mode & ACTFILTER_IPOKEYS) )
+ {
+ /* loop through ipo-curve channels, adding them */
+ for (icu= cu->ipo->curve.first; icu; icu=icu->next) {
+ /* only if selected (if checking for selection) */
+ if ( !(filter_mode & ACTFILTER_SEL) || (SEL_ICU(icu)) ) {
+ ale= make_new_actlistelem(icu, ACTTYPE_ICU, base, ACTTYPE_OBJECT);
+ if (ale) {
+ /* make owner the material not object, so that indent is not just object level */
+ ale->id= (ID *)cu;
+ BLI_addtail(act_data, ale);
+ }
+ }
+ }
+ }
+}
+
static void actdata_filter_dopesheet_ob (ListBase *act_data, bDopeSheet *ads, Base *base, int filter_mode)
{
bActListElem *ale=NULL;
@@ -914,6 +956,13 @@
actdata_filter_dopesheet_lamp(act_data, ads, base, filter_mode);
}
break;
+ case OB_CURVE: /* ------- Curve ---------- */
+ {
+ Curve *cu= (Curve *)ob->data;
+ if ((cu->ipo) && !(ads->filterflag & ADS_FILTER_NOCUR))
+ actdata_filter_dopesheet_curve(act_data, ads, base, filter_mode);
+ }
+ break;
}
/* Constraint Channels? */
@@ -1008,24 +1057,30 @@
}
/* check filters for datatypes */
- ipoOk= (!(ob->ipo) || !(ads->filterflag & ADS_FILTER_NOIPOS));
- actOk= (!(ob->action) || !(ads->filterflag & ADS_FILTER_NOACTS));
- constsOk= (!(ob->constraintChannels.first) || !(ads->filterflag & ADS_FILTER_NOCONSTRAINTS));
- keyOk= (!(key) || !(ads->filterflag & ADS_FILTER_NOSHAPEKEYS));
+ ipoOk= ((ob->ipo) && !(ads->filterflag & ADS_FILTER_NOIPOS));
+ actOk= ((ob->action) && !(ads->filterflag & ADS_FILTER_NOACTS));
+ constsOk= ((ob->constraintChannels.first) && !(ads->filterflag & ADS_FILTER_NOCONSTRAINTS));
+ keyOk= ((key) && !(ads->filterflag & ADS_FILTER_NOSHAPEKEYS));
switch (ob->type) {
case OB_CAMERA: /* ------- Camera ------------ */
{
Camera *ca= (Camera *)ob->data;
- dataOk= (!(ca->ipo) || !(ads->filterflag & ADS_FILTER_NOCAM));
+ dataOk= ((ca->ipo) && !(ads->filterflag & ADS_FILTER_NOCAM));
}
break;
case OB_LAMP: /* ---------- Lamp ----------- */
{
Lamp *la= (Lamp *)ob->data;
- dataOk= (!(la->ipo) || !(ads->filterflag & ADS_FILTER_NOLAM));
+ dataOk= ((la->ipo) && !(ads->filterflag & ADS_FILTER_NOLAM));
}
break;
+ case OB_CURVE: /* -------- Curve ---------- */
+ {
+ Curve *cu= (Curve *)ob->data;
+ dataOk= ((cu->ipo) && !(ads->filterflag & ADS_FILTER_NOCUR));
+ }
+ break;
default: /* --- other --- */
dataOk= 0;
break;
@@ -1055,6 +1110,12 @@
dataOk= (la->ipo != NULL);
}
break;
+ case OB_CURVE: /* -------- Curve ---------- */
+ {
+ Curve *cu= (Curve *)ob->data;
+ dataOk= (cu->ipo != NULL);
+ }
+ break;
default: /* --- other --- */
dataOk= 0;
break;
@@ -2164,7 +2225,10 @@
int filter;
/* ask user what to keyframe */
- mode = pupmenu("Insert Key%t|All Channels%x1|Only Selected Channels%x2|In Active Group%x3");
+ if (datatype == ACTCONT_ACTION)
+ mode = pupmenu("Insert Key%t|All Channels%x1|Only Selected Channels%x2|In Active Group%x3");
+ else
+ mode = pupmenu("Insert Key%t|All Channels%x1|Only Selected Channels%x2");
if (mode <= 0) return;
/* filter data */
@@ -4548,7 +4612,10 @@
case ACTTYPE_DSCAM:
ipo= ((Camera *)act_channel)->ipo;
break;
- case ACTTYPE_DSSKEY: // needed?
+ case ACTTYPE_DSCUR:
+ ipo= ((Curve *)act_channel)->ipo;
+ break;
+ case ACTTYPE_DSSKEY:
ipo= ((Key *)act_channel)->ipo;
break;
case ACTTYPE_FILLACTD:
@@ -4743,6 +4810,12 @@
ca->flag ^= CAM_DS_EXPAND;
}
break;
+ case ACTTYPE_DSCUR:
+ {
+ Curve *cu= (Curve *)act_channel;
+ cu->flag ^= CU_DS_EXPAND;
+ }
+ break;
case ACTTYPE_DSSKEY:
{
Key *key= (Key *)act_channel;
Modified: branches/animsys2/source/blender/src/editipo_lib.c
===================================================================
--- branches/animsys2/source/blender/src/editipo_lib.c 2008-11-24 03:06:27 UTC (rev 17546)
+++ branches/animsys2/source/blender/src/editipo_lib.c 2008-11-24 03:26:26 UTC (rev 17547)
@@ -92,7 +92,7 @@
char *wo_ic_names[WO_TOTNAM] = { "HorR", "HorG", "HorB", "ZenR", "ZenG", "ZenB", "Expos",
"Misi", "MisDi", "MisSta", "MisHi", "StarR", "StarB",
"StarG", "StarDi", "StarSi" };
-char *la_ic_names[LA_TOTNAM] = { "Energ", "R", "G", "B", "Dist", "SpoSi", "SpoBl",
+char *la_ic_names[LA_TOTNAM] = { "Energy", "R", "G", "B", "Dist", "SpoSi", "SpoBl",
"Quad1", "Quad2", "HaInt" };
/* yafray: two curve names added, 'Apert' for aperture, and 'FDist' for focal distance */
char *cam_ic_names[CAM_TOTNAM] = { "Lens", "ClSta", "ClEnd", "Apert", "FDist", "ShiftX", "ShiftY" };
@@ -170,6 +170,8 @@
return getname_la_ei(icu->adrcode);
case ID_CA:
return getname_cam_ei(icu->adrcode);
+ case ID_CU:
+ return getname_cu_ei(icu->adrcode);
default: /* fixme - add all of the other types! */
return NULL;
Modified: branches/animsys2/source/blender/src/editipo_mods.c
===================================================================
--- branches/animsys2/source/blender/src/editipo_mods.c 2008-11-24 03:06:27 UTC (rev 17546)
+++ branches/animsys2/source/blender/src/editipo_mods.c 2008-11-24 03:26:26 UTC (rev 17547)
@@ -809,6 +809,7 @@
if (ISPOIN3(ei, flag & IPO_VISIBLE, flag & (IPO_SELECT|IPO_EDIT), icu))
if(ei->flag & IPO_AUTO_HORIZ) set= 0;
}
+ printf("\tset = %d \n", set);
ei= G.sipo->editipo;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list