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:
authorJoseph Eagar <joeedh@gmail.com>2009-03-02 05:21:18 +0300
committerJoseph Eagar <joeedh@gmail.com>2009-03-02 05:21:18 +0300
commit3faf2b6db7cbe42c3439cad09b7035a25fa5c6c2 (patch)
treea76411d92e16566899f711263504b6b572f2c16f /source/blender/editors/mesh/editmesh_tools.c
parent68341862ddf05e30ffbb9f2e7dd3a05e8cc81e77 (diff)
more tweaks to triangulator. also added a bmeshutils.c file in editors/mesh for ui-related bmesh functions. and made delete only faces use the bmesh del operator, so it can handle ngons.
Diffstat (limited to 'source/blender/editors/mesh/editmesh_tools.c')
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index e026bb8ea88..c339c0b72a4 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -1147,16 +1147,7 @@ static int delete_mesh_exec(bContext *C, wmOperator *op)
BMO_Finish_Op(bm, &bmop);
- if (BMO_GetError(bm, &errmsg, NULL)) {
- BKE_report(op->reports, RPT_ERROR, errmsg);
- BMO_ClearStack(bm);
- return OPERATOR_CANCELLED;
- }
-
- em2 = bmesh_to_editmesh(bm);
- set_editMesh(em, em2);
- MEM_freeN(em2);
- BM_Free_Mesh(bm);
+ if (!EDBM_Finish(bm, em, op, C)) return OPERATOR_CANCELLED;
}
else if(event==6) {
if(!EdgeLoopDelete(em, op))
@@ -1263,16 +1254,24 @@ static int delete_mesh_exec(bContext *C, wmOperator *op)
if(em->selected.first) BLI_freelistN(&(em->selected));
}
else if(event==5) {
+ BMesh *bm = editmesh_to_bmesh(em);
+ BMOperator bmop;
+ EditMesh *em2;
+ char *errmsg;
+
str= "Erase Only Faces";
- efa= em->faces.first;
- while(efa) {
- nextvl= efa->next;
- if(efa->f & SELECT) {
- BLI_remlink(&em->faces, efa);
- free_editface(em, efa);
- }
- efa= nextvl;
- }
+
+ BMO_Init_Op(&bmop, BMOP_DEL);
+ BMO_HeaderFlag_To_Slot(bm, &bmop, BMOP_DEL_MULTIN,
+ BM_SELECT, BM_FACE);
+ BMO_Set_Int(&bmop, BMOP_DEL_CONTEXT, DEL_ONLYFACES);
+
+ BMO_Exec_Op(bm, &bmop);
+
+ BMO_Finish_Op(bm, &bmop);
+
+ if (!EDBM_Finish(bm, em, op, C)) return OPERATOR_CANCELLED;
+
}
EM_fgon_flags(em); // redo flags and indices for fgons