Revision: 53915
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53915
Author:   nicholasbishop
Date:     2013-01-20 00:46:33 +0000 (Sun, 20 Jan 2013)
Log Message:
-----------
Delete loose edges left behind by sculpting with collapse-short-edges

After deleting a face, check for unused edges and delete them.

Fixes bug [#33891]
projects.blender.org/tracker/?func=detail&aid=33891&group_id=9&atid=498

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c

Modified: trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c 2013-01-20 
00:19:57 UTC (rev 53914)
+++ trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c 2013-01-20 
00:46:33 UTC (rev 53915)
@@ -817,10 +817,13 @@
        for (i = 0; i < deleted_faces->count; i++) {
                BMFace *f_del = BLI_buffer_at(deleted_faces, BMFace *, i);
                BMVert *v_tri[3];
+               BMEdge *e_tri[3];
                int j;
 
-               // BM_iter_as_array(NULL, BM_VERTS_OF_FACE, f_del, (void 
**)v_tri, 3);
+               /* Get vertices and edges of face */
                BM_face_as_array_vert_tri(f_del, v_tri);
+               for (j = 0; j < 3; j++)
+                       e_tri[j] = BM_edge_exists(v_tri[j], v_tri[j == 2 ? 0 : 
j + 1]);
 
                /* Check if any of the face's vertices are now unused, if so
                 * remove them from the PBVH */
@@ -838,6 +841,13 @@
                pbvh_bmesh_face_remove(bvh, f_del);
                BM_face_kill(bvh->bm, f_del);
 
+               /* Check if any of the face's edges are now unused by any
+                * face, if so delete them */
+               for (j = 0; j < 3; j++) {
+                       if (BM_edge_face_count(e_tri[j]) == 0)
+                               BM_edge_kill(bvh->bm, e_tri[j]);
+               }
+
                /* Delete unused vertices */
                for (j = 0; j < 3; j++) {
                        if (v_tri[j]) {

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

Reply via email to