1 #include "MEM_guardedalloc.h"
3 #include "BKE_utildefines.h"
6 #include "bmesh_private.h"
7 #include "BLI_arithb.h"
16 void triangulate_exec(BMesh *bmesh, BMOperator *op)
20 float (*projectverts)[3] = NULL;
21 V_DECLARE(projectverts);
23 int i, lastlen=0, count = 0;
25 finput = BMO_GetSlot(op, BMOP_ESUBDIVIDE_EDGES);
27 for (i=0; i<finput->len; i++) {
28 face = ((BMFace**)finput->data.p)[i];
30 if (lastlen < face->len) {
31 V_RESET(projectverts);
32 for (lastlen=0; lastlen<face->len; lastlen++) {
39 BM_Triangulate_Face(bmesh, face, projectverts, EDGE_NEW, FACE_NEW);
41 if (projverts != projectverts) MEM_freeN(projverts);
44 BMO_Flag_To_Slot(bmesh, op, BMOP_TRIANG_NEW_EDGES, EDGE_NEW, BM_EDGE);
45 BMO_Flag_To_Slot(bmesh, op, BMOP_TRIANG_NEW_FACES, FACE_NEW, BM_FACE);