diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-08-17 10:11:00 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-08-17 10:11:49 +0300 |
commit | 4443831c6bc264f6017a309b6217beb72943abee (patch) | |
tree | c488354442d925c0c21f02097c5a9ac1bbfe43ee /source | |
parent | 6baa62245f2bc18cc6d12cfcd16575823028bcab (diff) |
Edit Mesh: skip normals to vector with unselected meshes for "Delete"
Meshes with unselected elements are skipped but still called
BM_custom_loop_normals_to_vector_layer.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/mesh/editmesh_tools.c | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index b62eee67600..101c997fd1c 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -467,40 +467,50 @@ static int edbm_delete_exec(bContext *C, wmOperator *op) BMEditMesh *em = BKE_editmesh_from_object(obedit); const int type = RNA_enum_get(op->ptr, "type"); - BM_custom_loop_normals_to_vector_layer(em->bm); - switch (type) { case MESH_DELETE_VERT: /* Erase Vertices */ - if (!(em->bm->totvertsel && - EDBM_op_callf(em, op, "delete geom=%hv context=%i", BM_ELEM_SELECT, DEL_VERTS))) { + if (em->bm->totvertsel == 0) { + continue; + } + BM_custom_loop_normals_to_vector_layer(em->bm); + if (!EDBM_op_callf(em, op, "delete geom=%hv context=%i", BM_ELEM_SELECT, DEL_VERTS)) { continue; } break; case MESH_DELETE_EDGE: /* Erase Edges */ - if (!(em->bm->totedgesel && - EDBM_op_callf(em, op, "delete geom=%he context=%i", BM_ELEM_SELECT, DEL_EDGES))) { + if (em->bm->totedgesel == 0) { + continue; + } + BM_custom_loop_normals_to_vector_layer(em->bm); + if (!EDBM_op_callf(em, op, "delete geom=%he context=%i", BM_ELEM_SELECT, DEL_EDGES)) { continue; } break; case MESH_DELETE_FACE: /* Erase Faces */ - if (!(em->bm->totfacesel && - EDBM_op_callf(em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_FACES))) { + if (em->bm->totfacesel == 0) { + continue; + } + BM_custom_loop_normals_to_vector_layer(em->bm); + if (!EDBM_op_callf(em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_FACES)) { continue; } break; - case MESH_DELETE_EDGE_FACE: - /* Edges and Faces */ - if (!((em->bm->totedgesel || em->bm->totfacesel) && - EDBM_op_callf( - em, op, "delete geom=%hef context=%i", BM_ELEM_SELECT, DEL_EDGESFACES))) { + case MESH_DELETE_EDGE_FACE: /* Edges and Faces */ + if ((em->bm->totedgesel == 0) && (em->bm->totfacesel == 0)) { + continue; + } + BM_custom_loop_normals_to_vector_layer(em->bm); + if (!EDBM_op_callf( + em, op, "delete geom=%hef context=%i", BM_ELEM_SELECT, DEL_EDGESFACES)) { continue; } break; - case MESH_DELETE_ONLY_FACE: - /* Only faces. */ - if (!(em->bm->totfacesel && - EDBM_op_callf( - em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_ONLYFACES))) { + case MESH_DELETE_ONLY_FACE: /* Only faces. */ + if (em->bm->totfacesel == 0) { + continue; + } + BM_custom_loop_normals_to_vector_layer(em->bm); + if (!EDBM_op_callf(em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_ONLYFACES)) { continue; } break; |