[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53915] trunk/blender/source/blender/ blenkernel/intern/pbvh_bmesh.c: Delete loose edges left behind by sculpting with collapse-short-edges
Nicholas Bishop
nicholasbishop at gmail.com
Sun Jan 20 01:46:36 CET 2013
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]) {
More information about the Bf-blender-cvs
mailing list