[Bf-blender-cvs] [5df494d75c9] master: bmesh_intersect_edges: Don't detect faces if an edge already exists
mano-wii
noreply at git.blender.org
Mon Jan 27 22:31:37 CET 2020
Commit: 5df494d75c9a8460951e22b5616859b137684394
Author: mano-wii
Date: Mon Jan 27 18:31:15 2020 -0300
Branches: master
https://developer.blender.org/rB5df494d75c9a8460951e22b5616859b137684394
bmesh_intersect_edges: Don't detect faces if an edge already exists
For optimization.
===================================================================
M source/blender/bmesh/tools/bmesh_intersect_edges.c
===================================================================
diff --git a/source/blender/bmesh/tools/bmesh_intersect_edges.c b/source/blender/bmesh/tools/bmesh_intersect_edges.c
index 75cfd99489b..4e3f525f760 100644
--- a/source/blender/bmesh/tools/bmesh_intersect_edges.c
+++ b/source/blender/bmesh/tools/bmesh_intersect_edges.c
@@ -860,7 +860,6 @@ bool BM_mesh_intersect_edges(
if (BM_elem_flag_test(e, BM_ELEM_TAG)) {
continue;
}
- BM_elem_flag_enable(e, BM_ELEM_TAG);
BMVert *va, *vb, *va_dest = NULL;
va = e->v1;
@@ -869,9 +868,16 @@ bool BM_mesh_intersect_edges(
int v_cut = BM_elem_index_get(va);
int v_cut_other = BM_elem_index_get(vb);
if (v_cut == -1 && v_cut_other == -1) {
+ if (!BM_elem_flag_test(va, BM_ELEM_TAG) && !BM_elem_flag_test(vb, BM_ELEM_TAG)) {
+ /* Ignore edges out of context. */
+ BM_elem_flag_enable(e, BM_ELEM_TAG);
+ }
continue;
}
+ /* Tag to avoid testing again. */
+ BM_elem_flag_enable(e, BM_ELEM_TAG);
+
if (v_cut == -1) {
SWAP(BMVert *, va, vb);
v_cut = v_cut_other;
@@ -900,6 +906,11 @@ bool BM_mesh_intersect_edges(
v_other_dest = v_other;
}
+ if (BM_edge_exists(va_dest, v_other_dest)) {
+ /* No need to detect face. (Optimization). */
+ break;
+ }
+
best_face = bm_vert_pair_best_face_get(
va_dest, v_other_dest, edgenet, edgenet_len, dist);
@@ -925,10 +936,11 @@ bool BM_mesh_intersect_edges(
BMEdge *e_test = e_net, *e_next = NULL;
while ((e_test = BM_DISK_EDGE_NEXT(e_test, v_other)) != (e_net)) {
if (!BM_edge_is_wire(e_test)) {
- if (BM_elem_flag_test(e, BM_ELEM_TAG)) {
+ if (BM_elem_flag_test(e_test, BM_ELEM_TAG)) {
continue;
}
- if (BM_elem_index_get(e_test->v1) == -1 && BM_elem_index_get(e_test->v2) == -1) {
+ if (!BM_elem_flag_test(e_test->v1, BM_ELEM_TAG) &&
+ !BM_elem_flag_test(e_test->v2, BM_ELEM_TAG)) {
continue;
}
}
More information about the Bf-blender-cvs
mailing list