diff --git a/source/blender/bmesh/intern/bmesh_walkers.c b/source/blender/bmesh/intern/bmesh_walkers.c index 9d5953f03fe..639d2783d83 100644 --- a/source/blender/bmesh/intern/bmesh_walkers.c +++ b/source/blender/bmesh/intern/bmesh_walkers.c @@ -777,10 +777,10 @@ static void edgeringWalker_begin(BMWalker *walker, void *data) edgeringWalker *lwalk, owalk; BMEdge *e = data; - BMW_pushstate(walker); - if (!e->loop) return; + BMW_pushstate(walker); + lwalk = walker->currentstate; lwalk->l = e->loop; BLI_ghash_insert(walker->visithash, lwalk->l->e, NULL); @@ -857,6 +857,8 @@ static void *uvedgeWalker_yield(BMWalker *walker) uvedgeWalker *lwalk = walker->currentstate; if (!lwalk) return NULL; + + return lwalk->l; } static void *uvedgeWalker_step(BMWalker *walker) diff --git a/source/blender/bmesh/operators/dissolveops.c b/source/blender/bmesh/operators/dissolveops.c index c04f6a3e638..76ea9fb8bcd 100644 --- a/source/blender/bmesh/operators/dissolveops.c +++ b/source/blender/bmesh/operators/dissolveops.c @@ -318,6 +318,14 @@ void dissolveverts_exec(BMesh *bm, BMOperator *op) for (v=BMIter_New(&iter, bm, BM_VERTS_OF_MESH, NULL); v; v=BMIter_Step(&iter)) { if (BMO_TestFlag(bm, v, VERT_MARK)) { + /*check if it's a two-valence vert*/ + if (BM_Vert_EdgeCount(v) == 2) { + + /*collapse the vert*/ + BM_Collapse_Vert(bm, v->edge, v, 0.5f); + continue; + } + f=BMIter_New(&fiter, bm, BM_FACES_OF_VERT, v); for (; f; f=BMIter_Step(&fiter)) { BMO_SetFlag(bm, f, FACE_ORIG); diff --git a/source/blender/editors/mesh/bmeshutils.c b/source/blender/editors/mesh/bmeshutils.c index e5048c538bb..b9580ab983a 100644 --- a/source/blender/editors/mesh/bmeshutils.c +++ b/source/blender/editors/mesh/bmeshutils.c @@ -65,6 +65,7 @@ #include "BKE_depsgraph.h" #include "BKE_global.h" #include "BKE_library.h" +#include "BKE_key.h" #include "BKE_mesh.h" #include "BKE_object.h" #include "BKE_utildefines.h" @@ -163,6 +164,8 @@ int EDBM_InitOpf(BMEditMesh *em, BMOperator *bmop, wmOperator *op, char *fmt, .. em->emcopyusers++; va_end(list); + + return 1; } @@ -568,7 +571,7 @@ static void *editbtMesh_to_undoMesh(void *emv, void *obdata) BMEdit_RecalcTesselation throughout the code.*/ BMEdit_RecalcTesselation(em); - BMO_CallOpf(em->bm, "bmesh_to_mesh meshptr=%p notesselation=%i", me, 1); + BMO_CallOpf(em->bm, "bmesh_to_mesh mesh=%p notesselation=%i", me, 1); me->selectmode = em->selectmode; return me; diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index f975c9eebc4..8e1e53ad2a7 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -300,7 +300,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) /* use KM_RELEASE because same key is used for tweaks * TEMPORARY REMAP TO ALT+CTRL TO AVOID CONFLICT * */ - WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_RELEASE, KM_CTRL|KM_ALT, 0); + WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_delete", DELKEY, KM_PRESS, 0, 0); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index f2648503003..4c4d733a206 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -1112,8 +1112,8 @@ static void rna_def_modifier_edgesplit(BlenderRNA *brna) RNA_def_struct_ui_icon(srna, ICON_MOD_EDGESPLIT); prop= RNA_def_property(srna, "split_angle", PROP_FLOAT, PROP_NONE); - RNA_def_property_range(prop, 0, 180); - RNA_def_property_ui_range(prop, 0, 180, 100, 2); + RNA_def_property_range(prop, 0, 90); + RNA_def_property_ui_range(prop, 0, 90, 100, 2); RNA_def_property_ui_text(prop, "Split Angle", "Angle above which to split edges."); RNA_def_property_update(prop, 0, "rna_Modifier_update");