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-16 14:38:42 +0300
committerJoseph Eagar <joeedh@gmail.com>2009-03-16 14:38:42 +0300
commitaa4915fdcffce958b20e61ea446ff4d5013cb70d (patch)
treef258bb71becda501d28995d8c7fb83c2fe35b790 /source/blender/editors/mesh/editmesh_lib.c
parentba4d6babbb782c582cbe5e6edab97fa063597079 (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.c21
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);
}