From d655a8f16867d2d2a0bdc652128261e75ad894e9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 2 Feb 2015 09:09:36 +1100 Subject: BMesh: BM_face_triangulate take edge array To access edges created between the tris. --- source/blender/bmesh/intern/bmesh_polygon.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'source/blender') diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c index e4aa4bb0c0e..bc06ba2c9b1 100644 --- a/source/blender/bmesh/intern/bmesh_polygon.c +++ b/source/blender/bmesh/intern/bmesh_polygon.c @@ -743,7 +743,9 @@ bool BM_face_point_inside_test(BMFace *f, const float co[3]) void BM_face_triangulate( BMesh *bm, BMFace *f, BMFace **r_faces_new, - int *r_faces_new_tot, + int *r_faces_new_tot, + BMEdge **r_edges_new, + int *r_edges_new_tot, const int quad_method, const int ngon_method, const bool use_tag, @@ -755,6 +757,7 @@ void BM_face_triangulate( BMLoop *l_iter, *l_first, *l_new; BMFace *f_new; int nf_i = 0; + int ne_i = 0; bool use_beauty = (ngon_method == MOD_TRIANGULATE_NGON_BEAUTY); BLI_assert(BM_face_is_normal_valid(f)); @@ -835,6 +838,9 @@ void BM_face_triangulate( if (r_faces_new) { r_faces_new[nf_i++] = f_new; } + if (r_edges_new) { + r_edges_new[ne_i++] = l_new->e; + } } else if (f->len > 4) { @@ -895,8 +901,7 @@ void BM_face_triangulate( } } - /* we know any edge that we create and _isnt_ */ - if (use_tag) { + if (use_tag || r_edges_new) { /* new faces loops */ l_iter = l_first = l_new; do { @@ -906,7 +911,12 @@ void BM_face_triangulate( bool is_new_edge = (l_iter == l_iter->radial_next); if (is_new_edge) { - BM_elem_flag_enable(e, BM_ELEM_TAG); + if (use_tag) { + BM_elem_flag_enable(e, BM_ELEM_TAG); + } + if (r_edges_new) { + r_edges_new[ne_i++] = e; + } } /* note, never disable tag's */ } while ((l_iter = l_iter->next) != l_first); @@ -925,6 +935,10 @@ void BM_face_triangulate( if (r_faces_new_tot) { *r_faces_new_tot = nf_i; } + + if (r_edges_new_tot) { + *r_edges_new_tot = ne_i; + } } /** -- cgit v1.2.3