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>2016-11-08 16:04:58 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-11-08 16:18:32 +0300
commit4f28dac8722a213599add020d41cb04fe262dadf (patch)
tree8e813ed81a371550a6db114de241bfaab542f09c /source/blender/bmesh/intern/bmesh_core.c
parent0085001eb0e375108b3a3b35197fe4788272c136 (diff)
BMesh: remove edge search when flipping faces
Replace search with direct lookup.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_core.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_core.c30
1 files changed, 8 insertions, 22 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index c75e2649257..6abc52d75ef 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 */