Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-10-13 07:59:06 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-10-13 07:59:06 +0400
commitf81b06cfa5a3510ae7a16d14e2b3a9b7569a9b5a (patch)
tree23d023da99775a9edd4b14909a1907ce8eda603c /source/blender/editors/mesh/editmesh_rip.c
parentda155c2dcbff2cf020dd817e8dca9b941accb4fb (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.
Diffstat (limited to 'source/blender/editors/mesh/editmesh_rip.c')
-rw-r--r--source/blender/editors/mesh/editmesh_rip.c9
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);