[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