Commit: d655a8f16867d2d2a0bdc652128261e75ad894e9
Author: Campbell Barton
Date:   Mon Feb 2 09:09:36 2015 +1100
Branches: master
https://developer.blender.org/rBd655a8f16867d2d2a0bdc652128261e75ad894e9

BMesh: BM_face_triangulate take edge array

To access edges created between the tris.

===================================================================

M       source/blender/bmesh/intern/bmesh_polygon.c

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_polygon.c 
b/source/blender/bmesh/intern/bmesh_polygon.c
index e4aa4bb..bc06ba2 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;
+       }
 }
 
 /**

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to