Commit: a71a947c6af75114ead5f4c1fcc360699f275241
Author: Campbell Barton
Date: Tue Aug 26 13:33:07 2014 +1000
Branches: master
https://developer.blender.org/rBa71a947c6af75114ead5f4c1fcc360699f275241
Fix T41568: Dissolve & Tear Boundary Keeps Verts
===================================================================
M source/blender/bmesh/operators/bmo_dissolve.c
===================================================================
diff --git a/source/blender/bmesh/operators/bmo_dissolve.c
b/source/blender/bmesh/operators/bmo_dissolve.c
index 877cd16..8cd9ee1 100644
--- a/source/blender/bmesh/operators/bmo_dissolve.c
+++ b/source/blender/bmesh/operators/bmo_dissolve.c
@@ -29,6 +29,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_array.h"
+#include "BLI_stack.h"
#include "BLI_math.h"
#include "bmesh.h"
@@ -88,13 +89,18 @@ static bool UNUSED_FUNCTION(check_hole_in_region) (BMesh
*bm, BMFace *f)
static void bm_face_split(BMesh *bm, const short oflag, bool use_edge_delete)
{
+ BLI_Stack *edge_delete_verts;
BMIter iter;
BMVert *v;
- BMIter liter;
+ if (use_edge_delete) {
+ edge_delete_verts = BLI_stack_new(sizeof(BMVert *), __func__);
+ }
+
BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
if (BMO_elem_flag_test(bm, v, oflag)) {
if (BM_vert_is_edge_pair(v) == false) {
+ BMIter liter;
BMLoop *l;
BM_ITER_ELEM (l, &liter, v, BM_LOOPS_OF_VERT) {
if (l->f->len > 3) {
@@ -105,15 +111,24 @@ static void bm_face_split(BMesh *bm, const short oflag,
bool use_edge_delete)
}
}
}
- /* remove surrounding edges & faces */
+
if (use_edge_delete) {
- while (v->e) {
- BM_edge_kill(bm, v->e);
- }
+ BLI_stack_push(edge_delete_verts, &v);
}
}
}
}
+
+ if (use_edge_delete) {
+ while (!BLI_stack_is_empty(edge_delete_verts)) {
+ /* remove surrounding edges & faces */
+ BLI_stack_pop(edge_delete_verts, &v);
+ while (v->e) {
+ BM_edge_kill(bm, v->e);
+ }
+ }
+ BLI_stack_free(edge_delete_verts);
+ }
}
void bmo_dissolve_faces_exec(BMesh *bm, BMOperator *op)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs