diff options
author | Joseph Eagar <joeedh@gmail.com> | 2009-03-16 14:38:42 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2009-03-16 14:38:42 +0300 |
commit | aa4915fdcffce958b20e61ea446ff4d5013cb70d (patch) | |
tree | f258bb71becda501d28995d8c7fb83c2fe35b790 /source/blender/editors/mesh/editmesh_lib.c | |
parent | ba4d6babbb782c582cbe5e6edab97fa063597079 (diff) |
extrude region op now does wire vert extrudes too
Diffstat (limited to 'source/blender/editors/mesh/editmesh_lib.c')
-rw-r--r-- | source/blender/editors/mesh/editmesh_lib.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 6e745744c18..ca495893d92 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -1165,7 +1165,7 @@ short BM_extrude_edgeflag(Object *obedit, BMesh *bm, int eflag, float *nor) BMO_Init_Op(&extop, BMOP_EXTRUDE_EDGECONTEXT); BMO_HeaderFlag_To_Slot(bm, &extop, BMOP_EXFACE_EDGEFACEIN, - flag, BM_EDGE|BM_FACE); + flag, BM_VERT|BM_EDGE|BM_FACE); for (edge=BMIter_New(&iter, bm, BM_EDGES, NULL); edge; edge=BMIter_Step(&iter)) { BM_Select_Edge(bm, edge, 0); @@ -1802,9 +1802,22 @@ short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor) /* generic extrude */ short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor) { - if(em->selectmode & SCE_SELECT_VERTEX) - return extrudeflag_vert(obedit, em, flag, nor); - else + if(em->selectmode & SCE_SELECT_VERTEX) { + EditEdge *eed; + + /*ensure vert flags are consistent for edge selections*/ + for (eed=em->edges.first; eed; eed=eed->next) { + if (eed->f & flag) { + eed->v1->f |= flag; + eed->v2->f |= flag; + } else { + if ((eed->v1->f & flag) && (eed->v2->f & flag)) + eed->f |= flag; + } + } + + return extrudeflag_edge(obedit, em, flag, nor); + } else return extrudeflag_edge(obedit, em, flag, nor); } |