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:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-03-14 10:31:14 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-03-14 10:31:14 +0400
commit7f2acc173e13b36a7bcecf1ab749e15b219f35f3 (patch)
tree9c2fea9dd65fd027e6e42c9342dad4e229fd6df8 /source/blender/blenkernel
parent38d4848020bc08cc471310c282ac62e54e881fa8 (diff)
Add BKE mesh function to update edge/poly hidden flags from verts.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_mesh.h7
-rw-r--r--source/blender/blenkernel/intern/mesh.c27
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])
{