svn merge ^/trunk/blender -r42918:42920
[blender-staging.git] / source / blender / makesdna / DNA_meshdata_types.h
index 52a9a6017f77284683fd0323fc758b0a07c3d6e1..c4e25b85ab44060d0c5fd26c56369aa58fe4032e 100644 (file)
@@ -37,6 +37,7 @@
 struct Bone;
 struct Image;
 
+/*tesselation face, see MLoop/MPoly for the real face data*/
 typedef struct MFace {
        unsigned int v1, v2, v3, v4;
        short mat_nr;
@@ -66,13 +67,30 @@ typedef struct MVert {
        char flag, bweight;
 } MVert;
 
-/* at the moment alpha is abused for vertex painting
- * and not used for transperency, note that red and blue are swapped */
+/* tesselation vertex color data.
+ * at the moment alpha is abused for vertex painting
+ * and not used for transparency, note that red and blue are swapped */
 typedef struct MCol {
        char a, r, g, b;        
 } MCol;
 
-/*bmesh custom data stuff*/
+/*new face structure, replaces MFace, which is now
+  only used for storing tesselations.*/
+typedef struct MPoly {
+       /* offset into loop array and number of loops in the face */
+       int loopstart;
+       int totloop; /* keep signed since we need to subtract when getting the previous loop */
+       short mat_nr;
+       char flag, pad;
+} MPoly;
+
+/*the e here is because we want to move away from
+  relying on edge hashes.*/
+typedef struct MLoop {
+       unsigned int v; /*vertex index*/
+       unsigned int e; /*edge index*/
+} MLoop;
+
 typedef struct MTexPoly {
        struct Image *tpage;
        char flag, transp;
@@ -81,8 +99,16 @@ typedef struct MTexPoly {
 
 typedef struct MLoopUV {
        float uv[2];
+       int flag;
 } MLoopUV;
 
+/*mloopuv->flag*/
+#define MLOOPUV_EDGESEL        1
+#define MLOOPUV_VERTSEL        2
+#define MLOOPUV_PINNED 4
+
+/* at the moment alpha is abused for vertex painting
+ * and not used for transparency, note that red and blue are swapped */
 typedef struct MLoopCol {
        char a, r, g, b;
 } MLoopCol;
@@ -96,6 +122,7 @@ typedef struct MSelect {
        int type; /* EDITVERT/EDITEDGE/EDITFACE */
 } MSelect;
 
+/*tesselation uv face data*/
 typedef struct MTFace {
        float uv[4][2];
        struct Image *tpage;
@@ -209,7 +236,19 @@ typedef struct MRecast {
 /* flag (mface) */
 #define ME_SMOOTH                      1
 #define ME_FACE_SEL                    2
-                                               /* flag ME_HIDE==16 is used here too */ 
+/* flag ME_HIDE==16 is used here too */ 
+
+#define ME_POLY_LOOP_PREV(mloop, mp, i)  (&(mloop)[(mp)->loopstart + (((i) + (mp)->totloop - 1) % (mp)->totloop)])
+#define ME_POLY_LOOP_NEXT(mloop, mp, i)  (&(mloop)[(mp)->loopstart + (((i) + 1) % (mp)->totloop)])
+
+/* mselect->type */
+#define ME_VSEL        0
+#define ME_ESEL 1
+#define ME_FSEL 2
+
+/* mloop->v */
+#define ME_LOOP_INVALID_INDEX ((unsigned int) -1)
+
 /* mtface->flag */
 #define TF_SELECT      1 /* use MFace hide flag (after 2.43), should be able to reuse after 2.44 */
 #define TF_ACTIVE      2 /* deprecated! */