Fix T63247: edbm_rip_invoke__edge rips unselected verts on mesh borders

Ripping edges would in some cases rip verts on unselected edges. This is now fixed so that we only rip verts from the actually selected edges.

Reviewed By: Brecht

Differential Revision: http://developer.blender.org/D4646
This commit is contained in:
Sebastian Parborg 2019-04-17 12:30:00 +02:00
parent 43e84e3326
commit c3a11a5671
2 changed files with 9 additions and 5 deletions

View File

@ -78,11 +78,12 @@ void BM_mesh_edgesplit(BMesh *bm,
}
}
}
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
if (BM_elem_flag_test(e, BM_ELEM_TAG)) {
BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
else {
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
if (BM_elem_flag_test(e, BM_ELEM_TAG)) {
BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
}
}
}

View File

@ -904,6 +904,9 @@ static int edbm_rip_invoke__edge(bContext *C, const wmEvent *event, Object *obed
if (BM_elem_flag_test(e, BM_ELEM_SELECT)) {
e_best = e;
i++;
/* Tag the edge verts so we know which verts to rip */
BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
}
totedge_manifold++;
}