diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-03-14 10:31:14 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-03-14 10:31:14 +0400 |
commit | 7f2acc173e13b36a7bcecf1ab749e15b219f35f3 (patch) | |
tree | 9c2fea9dd65fd027e6e42c9342dad4e229fd6df8 /source | |
parent | 38d4848020bc08cc471310c282ac62e54e881fa8 (diff) |
Add BKE mesh function to update edge/poly hidden flags from verts.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 27 |
2 files changed, 34 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 65ebd23d742..7771cc7db46 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -111,6 +111,13 @@ int poly_find_loop_from_vert(const struct MPoly *poly, int poly_get_adj_loops_from_vert(unsigned adj_r[3], const struct MPoly *poly, const struct MLoop *mloop, unsigned vert); +/* update the hide flag for edges and polys from the corresponding + flag in verts */ +void mesh_flush_hidden_from_verts(const struct MVert *mvert, + const struct MLoop *mloop, + struct MEdge *medge, int totedge, + struct MPoly *mpoly, int totpoly); + void unlink_mesh(struct Mesh *me); void free_mesh(struct Mesh *me, int unlink); struct Mesh *add_mesh(const char *name); diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 6600099fff7..29b8ca2e2b3 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -2889,6 +2889,33 @@ int poly_get_adj_loops_from_vert(unsigned adj_r[3], const MPoly *poly, return corner; } +/* update the hide flag for edges and faces from the corresponding + flag in verts */ +void mesh_flush_hidden_from_verts(const MVert *mvert, + const MLoop *mloop, + MEdge *medge, int totedge, + MPoly *mpoly, int totpoly) +{ + int i, j; + + for(i = 0; i < totedge; i++) { + MEdge *e = &medge[i]; + if(mvert[e->v1].flag & ME_HIDE || + mvert[e->v2].flag & ME_HIDE) + e->flag |= ME_HIDE; + else + e->flag &= ~ME_HIDE; + } + for(i = 0; i < totpoly; i++) { + MPoly *p = &mpoly[i]; + p->flag &= ~ME_HIDE; + for(j = 0; j < p->totloop; j++) { + if(mvert[mloop[p->loopstart + j].v].flag & ME_HIDE) + p->flag |= ME_HIDE; + } + } +} + /* basic vertex data functions */ int minmax_mesh(Mesh *me, float min[3], float max[3]) { |