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:
authorCampbell Barton <ideasman42@gmail.com>2012-04-03 11:31:11 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-04-03 11:31:11 +0400
commit285970753ee81ef383bf74c59fa97987d90c5698 (patch)
treea10a386feb93208fbd503b70bd4446fc5854f3df /source/blender/bmesh/intern/bmesh_mesh_validate.c
parent817a96f243490e8a1c0eb1dff19a45e73a7b9e8b (diff)
fix/workaround an error related to [#30735]
when a single face in a loop is hidden, loop cut will subdivide edges on both sides. creating an edge between the hidden faces. without this workaround the edge ends up hidden and selected. added a check in BM_mesh_validate() for hidden/selected elements.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_mesh_validate.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh_validate.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mesh_validate.c b/source/blender/bmesh/intern/bmesh_mesh_validate.c
index 0ec13f1df8f..f91e9d82879 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_validate.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_validate.c
@@ -71,9 +71,13 @@ int BM_mesh_validate(BMesh *bm)
BM_mesh_elem_index_ensure(bm, BM_ALL);
BM_ITER_INDEX(v, &iter, bm, BM_VERTS_OF_MESH, NULL, i) {
+ if (BM_elem_flag_test(v, BM_ELEM_SELECT | BM_ELEM_HIDDEN) == (BM_ELEM_SELECT | BM_ELEM_HIDDEN)) {
+ ERRMSG("vert %d: is hidden and selected", i);
+ }
+
if (v->e) {
if (!BM_vert_in_edge(v->e, v)) {
- ERRMSG("vert: %d - is not in its referenced edge: %d", i, BM_elem_index_get(v->e));
+ ERRMSG("vert %d: is not in its referenced edge: %d", i, BM_elem_index_get(v->e));
}
}
}
@@ -86,6 +90,10 @@ int BM_mesh_validate(BMesh *bm)
/* edge radial structure */
BM_ITER_INDEX(e, &iter, bm, BM_EDGES_OF_MESH, NULL, i) {
+ if (BM_elem_flag_test(e, BM_ELEM_SELECT | BM_ELEM_HIDDEN) == (BM_ELEM_SELECT | BM_ELEM_HIDDEN)) {
+ ERRMSG("edge %d: is hidden and selected", i);
+ }
+
if (e->l) {
BMLoop *l_iter;
BMLoop *l_first;
@@ -113,6 +121,10 @@ int BM_mesh_validate(BMesh *bm)
BMLoop *l_iter;
BMLoop *l_first;
+ if (BM_elem_flag_test(f, BM_ELEM_SELECT | BM_ELEM_HIDDEN) == (BM_ELEM_SELECT | BM_ELEM_HIDDEN)) {
+ ERRMSG("face %d: is hidden and selected", i);
+ }
+
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
do {