diff options
author | Ines Almeida <britalmeida@gmail.com> | 2015-01-13 14:04:25 +0300 |
---|---|---|
committer | Ines Almeida <britalmeida@gmail.com> | 2015-01-13 14:04:25 +0300 |
commit | cb61c5aeee94af943b0306550daef45c2018126a (patch) | |
tree | dbb2a9b5600bc53de35162e79091772bff1b6f8b /source/blender/bmesh | |
parent | d7cabe7d6f4519856969137df415692e16a5372d (diff) | |
parent | 117edbbf881be1764db852d9805c523590a19f84 (diff) |
Merge branch 'master' into soc-2014-bgesoc-2014-bge
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_polygon.c | 3 | ||||
-rw-r--r-- | source/blender/bmesh/operators/bmo_utils.c | 29 |
2 files changed, 29 insertions, 3 deletions
diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c index f2c426133c2..e4aa4bb0c0e 100644 --- a/source/blender/bmesh/intern/bmesh_polygon.c +++ b/source/blender/bmesh/intern/bmesh_polygon.c @@ -214,9 +214,6 @@ float BM_face_calc_area(BMFace *f) if (f->len == 3) { area = area_tri_v3(verts[0], verts[1], verts[2]); } - else if (f->len == 4) { - area = area_quad_v3(verts[0], verts[1], verts[2], verts[3]); - } else { area = area_poly_v3((const float (*)[3])verts, f->len); } diff --git a/source/blender/bmesh/operators/bmo_utils.c b/source/blender/bmesh/operators/bmo_utils.c index e7b65a10790..da1991a187d 100644 --- a/source/blender/bmesh/operators/bmo_utils.c +++ b/source/blender/bmesh/operators/bmo_utils.c @@ -236,6 +236,20 @@ static void bmo_region_extend_expand( bmo_face_flag_set_flush(bm, f, SEL_FLAG, true); } } + + /* handle wire edges (when stepping over faces) */ + { + BMIter eiter; + BMEdge *e; + BM_ITER_ELEM (e, &eiter, v, BM_EDGES_OF_VERT) { + if (BM_edge_is_wire(e)) { + if (!BMO_elem_flag_test(bm, e, SEL_FLAG)) { + BMO_elem_flag_enable(bm, e, SEL_FLAG); + BMO_elem_flag_enable(bm, BM_edge_other_vert(e, v), SEL_FLAG); + } + } + } + } } } } @@ -306,6 +320,21 @@ static void bmo_region_extend_contract( break; } } + + /* handle wire edges (when stepping over faces) */ + if (!found) { + BMIter eiter; + BMEdge *e; + + BM_ITER_ELEM (e, &eiter, v, BM_EDGES_OF_VERT) { + if (BM_edge_is_wire(e)) { + if (!BMO_elem_flag_test(bm, e, SEL_ORIG)) { + found = true; + break; + } + } + } + } } if (found) { |