merge with trunk at r27259 and commit of a patch by anthony jones to fix msvc (though...
[blender-staging.git] / source / blender / makesdna / DNA_meshdata_types.h
index ca5093ec09da6fb4b7457693db945d500ae7e6af..1cfbd9d8d513fae6661ac8b20be93b3d7586cd53 100644 (file)
@@ -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.
@@ -35,6 +35,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;
@@ -65,13 +66,29 @@ typedef struct MVert {
        char flag, bweight, pad[2];
 } MVert;
 
-/* at the moment alpha is abused for vertex painting
+/* tesselation vertex color data.
+ * at the moment alpha is abused for vertex painting
  * and not used for transperency, 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, totloop;
+       short mat_nr;
+       short flag;
+} MPoly;
+
+/*the e here is because we want to move away from
+  relying on edge hashes.*/
+typedef struct MLoop {
+       int v; /*vertex index*/
+       int e; /*edge index*/
+} MLoop;
+
 typedef struct MTexPoly{
        struct Image *tpage;
        char flag, transp;
@@ -80,12 +97,19 @@ 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 transperency, note that red and blue are swapped */
 typedef struct MLoopCol{
        char a, r, g, b;
-       int pad;  /*waste!*/
-}MLoopCol;
+} MLoopCol;
 
 typedef struct MSticky {
        float co[2];
@@ -96,6 +120,7 @@ typedef struct MSelect {
        int type;
 } MSelect;
 
+/*tesselation uv face data*/
 typedef struct MTFace {
        float uv[4][2];
        struct Image *tpage;
@@ -185,6 +210,7 @@ typedef struct PartialVisibility {
 #define ME_SPHERETEST          2
 #define ME_VERT_TMP_TAG                4
 #define ME_HIDE                                16
+#define ME_PIN                 64
 #define ME_VERT_MERGED         (1<<6)
 #define ME_VERT_PBVH_UPDATE    (1<<7)
 
@@ -218,7 +244,9 @@ typedef struct PartialVisibility {
 /* 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_DRAW_ACT                    4
+
 /* mselect->type */
 #define ME_VSEl        0
 #define ME_ESEl 1