diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-07-15 15:23:59 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-07-15 15:23:59 +0300 |
commit | 9034351b8def3c3fd3b8d001a559dd91e2f28c14 (patch) | |
tree | d0228d217bd9f1eafbeeba973bd5e61ab782c840 /source/blender/bmesh/operators/bmo_extrude.c | |
parent | b5c67c2ec146c86e362d030781c48066e8502fe8 (diff) | |
parent | 44bb73e765a6f79bc14a46449368f83e572d8bad (diff) |
Merge branch 'master' into tmp-eevee-glsl-cleanuptmp-eevee-glsl-cleanup
Diffstat (limited to 'source/blender/bmesh/operators/bmo_extrude.c')
-rw-r--r-- | source/blender/bmesh/operators/bmo_extrude.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/bmesh/operators/bmo_extrude.c b/source/blender/bmesh/operators/bmo_extrude.c index 3c63f4a60d6..eee31969971 100644 --- a/source/blender/bmesh/operators/bmo_extrude.c +++ b/source/blender/bmesh/operators/bmo_extrude.c @@ -572,6 +572,7 @@ void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op) f = BM_face_create_verts(bm, f_verts, 4, NULL, BM_CREATE_NOP, true); #endif + bm_extrude_copy_face_loop_attributes(bm, f); if (join_face) { BMVert *v1 = e->v1; BMVert *v2 = e->v2; @@ -583,11 +584,11 @@ void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op) BMO_elem_flag_enable(bm, v2, EXT_TAG); dissolve_verts[dissolve_verts_len++] = v2; } + /* Tag the edges that can collapse. */ + BMO_elem_flag_enable(bm, f_edges[0], EXT_TAG); + BMO_elem_flag_enable(bm, f_edges[1], EXT_TAG); bmesh_kernel_join_face_kill_edge(bm, join_face, f, e); } - else { - bm_extrude_copy_face_loop_attributes(bm, f); - } } /* link isolated vert */ @@ -613,7 +614,7 @@ void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op) BMEdge *e_other = BM_DISK_EDGE_NEXT(e, v); if ((e_other == e) || (BM_DISK_EDGE_NEXT(e_other, v) == e)) { /* Lose edge or BMVert is edge pair. */ - BM_edge_collapse(bm, e, v, true, false); + BM_edge_collapse(bm, BMO_elem_flag_test(bm, e, EXT_TAG) ? e : e_other, v, true, false); } else { BLI_assert(!BM_vert_is_edge_pair(v)); |