From 7b558a20a9f779a405475c218e3392a1018f9218 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Sun, 12 Jul 2020 20:53:22 -0300 Subject: Fix Extrude Manifold losing original UV --- source/blender/bmesh/operators/bmo_extrude.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'source/blender/bmesh') 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)); -- cgit v1.2.3