Final merge of HEAD (bf-blender) into the orange branch.
[blender.git] / source / blender / blenlib / BLI_editVert.h
index ffc2a3b424ec6e6dd15fe43ce0033454313e9e00..315498bab4c7ea1062b41a8e22f2c4709e8ba731 100644 (file)
@@ -43,10 +43,20 @@ struct DerivedMesh;
 /* note; changing this also might affect the undo copy in editmesh.c */
 typedef struct EditVert
 {
-       struct EditVert *next, *prev, *vn;
+       struct EditVert *next, *prev;
+       union {
+               /* some lean storage for temporary usage 
+                * in editmesh routines
+                */
+               struct EditVert *v;
+               struct EditEdge *e;
+               struct EditFace *f;
+               float           *fp;
+               void            *p;
+               long             l;
+       } tmp;
        float no[3];
        float co[3];
-       float *ssco;  /* subsurfed coordinate, dont use for temporal storage! it points to DispListMesh */
        short xs, ys;
        unsigned char f, h, f1, f2;
        short fast;     /* only 0 or 1, for editmesh_fastmalloc */
@@ -67,7 +77,17 @@ typedef struct HashEdge {
 typedef struct EditEdge
 {
        struct EditEdge *next, *prev;
-       struct EditVert *v1, *v2, *vn;
+       struct EditVert *v1, *v2;
+       union {
+               /* some lean storage for temporary usage 
+                * in editmesh routines
+                */
+               struct EditVert *v;
+               struct EditEdge *e;
+               struct EditFace *f;
+               void            *p;
+               long             l;
+       } tmp;
        short f1, f2;   /* short, f1 is (ab)used in subdiv */
        unsigned char f, h, dir, seam;
        float crease;
@@ -82,11 +102,20 @@ typedef struct EditFace
        struct EditFace *next, *prev;
        struct EditVert *v1, *v2, *v3, *v4;
        struct EditEdge *e1, *e2, *e3, *e4;
+       union {
+               /* some lean storage for temporary usage 
+                * in editmesh routines
+                */
+               struct EditVert *v;
+               struct EditEdge *e;
+               struct EditFace *f;
+               void            *p;
+               long             l;
+       } tmp;
        float n[3], cent[3];
-       short xs, ys;           /* selection */
        struct TFace tf;        /* a copy of original tface. */
        unsigned char mat_nr, flag;
-       unsigned char f, f1, h, puno;
+       unsigned char f, f1, h;
        unsigned char fast;                     /* only 0 or 1, for editmesh_fastmalloc */
        unsigned char fgonf;            /* flag for fgon options */
 } EditFace;
@@ -101,7 +130,10 @@ typedef struct EditMesh
        EditEdge *alledges, *curedge;
        EditFace *allfaces, *curface;
        
-       struct DerivedMesh *derived;
+               /* DerivedMesh caches... note that derived cage can be equivalent
+                * to derived final, care should be taken on release.
+                */
+       struct DerivedMesh *derivedCage, *derivedFinal;
 } EditMesh;
 
 #endif