=bmesh= merge from trunk at r36529
[blender.git] / source / blender / makesdna / DNA_mesh_types.h
index f7f1d3b53bd3e4598a8cfbb29c4f4f96a2281bc8..f4d64d1a99f46d5db0097caf71cc9104b8b3a358 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * $Id$ 
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -15,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
 #ifndef DNA_MESH_TYPES_H
 #define DNA_MESH_TYPES_H
 
+/** \file DNA_mesh_types.h
+ *  \ingroup DNA
+ */
+
 #include "DNA_listBase.h"
 #include "DNA_ID.h"
 #include "DNA_customdata_types.h"
@@ -44,61 +48,76 @@ struct MCol;
 struct MSticky;
 struct Mesh;
 struct OcInfo;
+struct MPoly;
+struct MTexPoly;
+struct MLoop;
+struct MLoopUV;
+struct MLoopCol;
 struct Multires;
 struct PartialVisibility;
 struct EditMesh;
+struct AnimData;
 
 typedef struct Mesh {
        ID id;
+       struct AnimData *adt;           /* animation data (must be immediately after id for utilities to use it) */
 
        struct BoundBox *bb;
-
-       ListBase effect;
        
-       struct Ipo *ipo;
+       struct Ipo *ipo;                // XXX depreceated... old animation system
        struct Key *key;
        struct Material **mat;
-
-       struct MFace *mface;    /* array of mesh object mode faces */
-       struct MTFace *mtface;  /* store face UV's and texture here */
+       
+       /*new face structures*/
+       struct MPoly *mpoly;
+       struct MTexPoly *mtpoly;
+       struct MLoop *mloop;
+       struct MLoopUV *mloopuv;
+       struct MLoopCol *mloopcol;
+
+       /*mface stores the tesselation (triangulation) of the mesh,
+         real faces are now stored in nface.*/
+       struct MFace *mface;    /* array of mesh object mode faces for tesselation */
+       struct MTFace *mtface;  /* store tesselation face UV's and texture here */
        struct TFace *tface;    /* depecrated, use mtface */
        struct MVert *mvert;    /* array of verts */
        struct MEdge *medge;    /* array of edges */
        struct MDeformVert *dvert;      /* deformgroup vertices */
-       struct MCol *mcol;              /* array of colors, this must be the number of faces * 4 */
+       
+       /* array of colors for the tesselated faces, must be number of tesselated
+          faces * 4 in length */
+       struct MCol *mcol;              
        struct MSticky *msticky;
        struct Mesh *texcomesh;
        struct MSelect *mselect;
        
-       struct EditMesh *edit_mesh;     /* not saved in file! */
+       struct BMEditMesh *edit_btmesh; /* not saved in file! */
 
-       struct CustomData vdata, edata, fdata;
+       struct CustomData vdata, edata, fdata, pdata, ldata;
 
-       int totvert, totedge, totface, totselect;
+       int totvert, totedge, totface, totpoly, totloop, totselect;
        
        /* the last selected vertex/edge/face are used for the active face however
         * this means the active face must always be selected, this is to keep track
         * of the last selected face and is similar to the old active face flag where
         * the face does not need to be selected, -1 is inactive */
        int act_face; 
-       
-       int texflag;
-       
+
        /* texture space, copied as one block in editobject.c */
        float loc[3];
        float size[3];
        float rot[3];
-       
-       float cubemapsize;
-       
-       int drawflag;
+
+       short texflag, drawflag;
        short smoothresh, flag;
 
        short subdiv, subdivr;
+       char subsurftype;               /* only kept for backwards compat, not used anymore */
+       char editflag;
+
        short totcol;
-       short subsurftype;              /* only kept for backwards compat, not used anymore */
 
-       struct Multires *mr;            /* Multiresolution modeling data */
+       struct Multires *mr;            /* deprecated multiresolution modeling data, only keep for loading old files */
        struct PartialVisibility *pv;
 } Mesh;
 
@@ -116,9 +135,18 @@ typedef struct TFace {
 /* texflag */
 #define AUTOSPACE      1
 
+/* me->editflag */
+#define ME_EDIT_MIRROR_X (1 << 0)
+#define ME_EDIT_MIRROR_Y (1 << 1) // unused so far
+#define ME_EDIT_MIRROR_Z (1 << 2) // unused so far
+
+#define ME_EDIT_PAINT_MASK (1 << 3)
+#define ME_EDIT_MIRROR_TOPO (1 << 4)
+
+
 /* me->flag */
-#define ME_ISDONE              1
-#define ME_NOPUNOFLIP  2
+/* #define ME_ISDONE           1 */
+#define ME_DEPRECATED  2
 #define ME_TWOSIDED            4
 #define ME_UVEFFECT            8
 #define ME_VCOLEFFECT  16
@@ -126,8 +154,9 @@ typedef struct TFace {
 #define ME_SMESH               64
 #define ME_SUBSURF             128
 #define ME_OPT_EDGES   256
+#define ME_DS_EXPAND   512
 
-/* me->drawflag, int */ 
+/* me->drawflag, short */
 #define ME_DRAWEDGES   (1 << 0)
 #define ME_DRAWFACES   (1 << 1)
 #define ME_DRAWNORMALS (1 << 2)
@@ -141,9 +170,11 @@ typedef struct TFace {
 #define ME_DRAWSHARP    (1 << 8)
 #define ME_DRAWBWEIGHTS        (1 << 9)
 
-#define ME_DRAW_EDGELEN  (1 << 10) 
-#define ME_DRAW_FACEAREA (1 << 11)
-#define ME_DRAW_EDGEANG  (1 << 12)
+#define ME_DRAWEXTRA_EDGELEN  (1 << 10)
+#define ME_DRAWEXTRA_FACEAREA (1 << 11)
+#define ME_DRAWEXTRA_FACEANG  (1 << 12)
+
+#define ME_DRAW_PINS (1 << 13)
 
 /* old global flags:
 #define G_DRAWEDGES            (1 << 18)