diff options
Diffstat (limited to 'source/blender/blenkernel/BKE_tessmesh.h')
-rw-r--r-- | source/blender/blenkernel/BKE_tessmesh.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_tessmesh.h b/source/blender/blenkernel/BKE_tessmesh.h new file mode 100644 index 00000000000..601d95de268 --- /dev/null +++ b/source/blender/blenkernel/BKE_tessmesh.h @@ -0,0 +1,71 @@ +#ifndef _BKE_TESSMESH_H +#define _BKE_TESSMESH_H + +#include "bmesh.h" + +struct BMesh; +struct BMLoop; +struct BMFace; +struct Mesh; +struct DerivedMesh; + +/* +ok: the EDBM module is for editmode bmesh stuff. in contrast, the + BMEdit module is for code shared with blenkernel that concerns + the BMEditMesh structure. +*/ + +/*this structure replaces EditMesh. + + through this, you get access to both the edit bmesh, + it's tesselation, and various stuff that doesn't belong in the BMesh + struct itself. + + the entire derivedmesh and modifier system works with this structure, + and not BMesh. Mesh->edit_bmesh stores a pointer to this structure.*/ +typedef struct BMEditMesh { + struct BMesh *bm; + + /*this is for undoing failed operations*/ + struct BMEditMesh *emcopy; + int emcopyusers; + + /*we store tesselations as triplets of three loops, + which each define a triangle.*/ + struct BMLoop *(*looptris)[3]; + int tottri; + + /*derivedmesh stuff*/ + struct DerivedMesh *derivedFinal, *derivedCage; + int lastDataMask; + + /*retopo data pointer*/ + struct RetopoPaintData *retopo_paint_data; + + /*index tables, to map indices to elements via + EDBM_init_index_arrays and associated functions. don't + touch this or read it directly.*/ + struct BMVert **vert_index; + struct BMEdge **edge_index; + struct BMFace **face_index; + + /*selection mode*/ + short selectmode; + short mat_nr; + + /*Mesh structure this editmesh came from, if it came from one*/ + struct Mesh *me; + struct Object *ob; + + /*temp variables for x-mirror editing*/ + int mirror_cdlayer; + int mirr_free_arrays; +} BMEditMesh; + +void BMEdit_RecalcTesselation(BMEditMesh *tm); +BMEditMesh *BMEdit_Create(BMesh *bm); +BMEditMesh *BMEdit_Copy(BMEditMesh *tm); +void BMEdit_Free(BMEditMesh *em); +void BMEdit_UpdateLinkedCustomData(BMEditMesh *em); + +#endif /* _BKE_TESSMESH_H */ |