diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-12-22 12:13:44 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-12-22 12:13:44 +0400 |
commit | 2abb727ced258796bf54aff637c502cd6554efb7 (patch) | |
tree | a87fd8755b650a7395b8f0b02ec3128b8975b41a /source/blender/blenkernel/intern/mesh.c | |
parent | 84966c3d0ae2d39fa4e691ed0131d8b94f8785e4 (diff) |
function for flushing polygon -> vert,edge selection (in object mode), currently unused.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 1e6f667c40b..a5fe32e6fe8 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -3107,6 +3107,45 @@ void BKE_mesh_flush_hidden_from_verts(const MVert *mvert, } } +/** + * simple poly -> vert/edge selection. + */ +void BKE_mesh_flush_select_from_polys(MVert *mvert, const int totvert, + MLoop *mloop, + MEdge *medge, const int totedge, + const MPoly *mpoly, const int totpoly) +{ + MVert *mv; + MEdge *med; + const MPoly *mp; + int i; + + i = totvert; + for (mv = mvert; i--; mv++) { + mv->flag &= ~SELECT; + } + + i = totedge; + for (med = medge; i--; med++) { + med->flag &= ~SELECT; + } + + i = totpoly; + for (mp = mpoly; i--; mp++) { + /* assume if its selected its not hidden and none of its verts/edges are hidden + * (a common assumption)*/ + if (mp->flag & ME_FACE_SEL) { + MLoop *ml; + int j; + j = mp->totloop; + for (ml = &mloop[mp->loopstart]; j--; ml++) { + mvert[ml->v].flag |= SELECT; + medge[ml->e].flag |= SELECT; + } + } + } +} + /* basic vertex data functions */ int BKE_mesh_minmax(Mesh *me, float r_min[3], float r_max[3]) { |