[Bf-blender-cvs] [4f28dac] master: BMesh: remove edge search when flipping faces
Campbell Barton
noreply at git.blender.org
Tue Nov 8 14:07:21 CET 2016
Commit: 4f28dac8722a213599add020d41cb04fe262dadf
Author: Campbell Barton
Date: Wed Nov 9 00:04:58 2016 +1100
Branches: master
https://developer.blender.org/rB4f28dac8722a213599add020d41cb04fe262dadf
BMesh: remove edge search when flipping faces
Replace search with direct lookup.
===================================================================
M source/blender/bmesh/intern/bmesh_core.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index c75e264..6abc52d 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -1045,9 +1045,9 @@ static bool bm_loop_reverse_loop(
#endif
const int len = f->len;
- BMLoop *l_iter, *oldprev, *oldnext;
+ BMLoop *l_iter;
BMEdge **edar = BLI_array_alloca(edar, len);
- int i, j, edok;
+ int i;
for (i = 0, l_iter = l_first; i < len; i++, l_iter = l_iter->next) {
bmesh_radial_loop_remove((edar[i] = l_iter->e), l_iter);
@@ -1055,8 +1055,8 @@ static bool bm_loop_reverse_loop(
/* actually reverse the loop */
for (i = 0, l_iter = l_first; i < len; i++) {
- oldnext = l_iter->next;
- oldprev = l_iter->prev;
+ BMLoop *oldnext = l_iter->next;
+ BMLoop *oldprev = l_iter->prev;
l_iter->next = oldprev;
l_iter->prev = oldnext;
l_iter = oldnext;
@@ -1067,26 +1067,12 @@ static bool bm_loop_reverse_loop(
}
}
- if (len == 2) { /* two edged face */
- /* do some verification here! */
- l_first->e = edar[1];
- l_first->next->e = edar[0];
- }
- else {
- for (i = 0, l_iter = l_first; i < len; i++, l_iter = l_iter->next) {
- edok = 0;
- for (j = 0; j < len; j++) {
- edok = BM_verts_in_edge(l_iter->v, l_iter->next->v, edar[j]);
- if (edok) {
- l_iter->e = edar[j];
- break;
- }
- }
- }
- }
/* rebuild radial */
- for (i = 0, l_iter = l_first; i < len; i++, l_iter = l_iter->next)
+ for (i = 0, l_iter = l_first->prev; i < len; i++, l_iter = l_iter->prev) {
+ BLI_assert(BM_verts_in_edge(l_iter->v, l_iter->next->v, edar[i]));
+ l_iter->e = edar[i];
bmesh_radial_loop_append(l_iter->e, l_iter);
+ }
#ifndef NDEBUG
/* validate radial */
More information about the Bf-blender-cvs
mailing list