diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-10-13 07:59:06 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-10-13 07:59:06 +0400 |
commit | f81b06cfa5a3510ae7a16d14e2b3a9b7569a9b5a (patch) | |
tree | 23d023da99775a9edd4b14909a1907ce8eda603c | |
parent | da155c2dcbff2cf020dd817e8dca9b941accb4fb (diff) |
improve edge rip when the edge has only 2 other connected edges.
common case ripping an edge of the default cube, it didn't run the edge size check.
-rw-r--r-- | source/blender/editors/mesh/editmesh_rip.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index 215522bf74e..c7f3c1c75ca 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -745,7 +745,10 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) /* single edge, extend */ if (i == 1 && e2->l) { - if ((totedge_manifold == 4) || (all_manifold == FALSE)) { + /* note: if the case of 3 edges has one change in loop stepping, + * if this becomes more involved we may be better off splitting + * the 3 edge case into its own else-if branch */ + if ((totedge_manifold == 4 || totedge_manifold == 3) || (all_manifold == FALSE)) { BMLoop *l_a = e2->l; BMLoop *l_b = l_a->radial_next; @@ -759,7 +762,9 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) * not crashing but adds duplicate edge. */ if (BM_edge_is_manifold(l->e)) { l = l->radial_next; - l = BM_face_other_edge_loop(l->f, l->e, v); + + if (totedge_manifold != 3) + l = BM_face_other_edge_loop(l->f, l->e, v); if (l) { BM_elem_flag_enable(l->e, BM_ELEM_TAG); |