Merge branch 'blender2.8' into soc-2018-bevel
[blender.git] / source / blender / bmesh / bmesh_class.h
index 10e2892c5a5d3b9e51cae1064452bb34a56527a7..5ff1d2c970f5d375b7f739688558c935609dcb2d 100644 (file)
@@ -38,6 +38,8 @@ struct BMEdge;
 struct BMLoop;
 struct BMFace;
 
+struct MLoopNorSpaceArray;
+
 struct BLI_mempool;
 
 /* note: it is very important for BMHeader to start with two
@@ -236,6 +238,9 @@ typedef struct BMesh {
        struct BLI_mempool *looplistpool;
 #endif
 
+       struct MLoopNorSpaceArray *lnor_spacearr;  /* Stores MLoopNorSpaceArray for this BMesh */
+       char spacearr_dirty;
+
        /* should be copy of scene select mode */
        /* stored in BMEditMesh too, this is a bit confusing,
         * make sure they're in sync!
@@ -263,9 +268,33 @@ enum {
        BM_FACE = 8
 };
 
+typedef struct BMLoopNorEditData {
+       int loop_index;
+       BMLoop *loop;
+       float niloc[3];
+       float nloc[3];
+       float *loc;
+       short *clnors_data;
+} BMLoopNorEditData;
+
+typedef struct BMLoopNorEditDataArray {
+       BMLoopNorEditData *lnor_editdata;
+       /* This one has full amount of loops, used to map loop index to actual BMLoopNorEditData struct. */
+       BMLoopNorEditData **lidx_to_lnor_editdata;
+
+       int cd_custom_normal_offset;
+       int totloop;
+} BMLoopNorEditDataArray;
+
 #define BM_ALL (BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
 #define BM_ALL_NOLOOP (BM_VERT | BM_EDGE | BM_FACE)
 
+enum {
+       BM_SPACEARR_DIRTY = 1 << 0,
+       BM_SPACEARR_DIRTY_ALL = 1 << 1,
+       BM_SPACEARR_BMO_SET = 1 << 2,
+};
+
 /* args for _Generic */
 #define _BM_GENERIC_TYPE_ELEM_NONCONST \
        void *, BMVert *, BMEdge *, BMLoop *, BMFace *, \