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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to