diff options
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_mods.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_mods.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c index 19aa37ca22b..dff05df5e66 100644 --- a/source/blender/bmesh/intern/bmesh_mods.c +++ b/source/blender/bmesh/intern/bmesh_mods.c @@ -82,8 +82,15 @@ int BM_vert_dissolve(BMesh *bm, BMVert *v) if (!BM_vert_is_manifold(bm, v)) { if (!v->e) BM_vert_kill(bm, v); else if (!v->e->l) { - BM_edge_kill(bm, v->e); - BM_vert_kill(bm, v); + if (len == 2) { + BM_vert_collapse_edge(bm, v->e, v); + } + else { + /* this may be too harsh, we could do nothing here instead. + * To test, connect 3 edges to a vert and dissolve the vert. It will be removed */ + BM_edge_kill(bm, v->e); + BM_vert_kill(bm, v); + } } else { return FALSE; |