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>2015-06-20 09:48:59 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-06-20 09:48:59 +0300
commitf6c661a38f93500523e617b194ed350346d1830d (patch)
tree82448cfe84441b589490bdbbdd3c95009ee3d7ae /source/blender/bmesh
parente807520a1e018a2c8d8adabe2a1a8ae3d3ffd0ae (diff)
BMesh: simplify join-tri's
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/operators/bmo_join_triangles.c29
1 files changed, 5 insertions, 24 deletions
diff --git a/source/blender/bmesh/operators/bmo_join_triangles.c b/source/blender/bmesh/operators/bmo_join_triangles.c
index 841a68fbbe5..b873e6bacb3 100644
--- a/source/blender/bmesh/operators/bmo_join_triangles.c
+++ b/source/blender/bmesh/operators/bmo_join_triangles.c
@@ -257,10 +257,8 @@ fail:
#define EDGE_MARK (1 << 0)
-#define EDGE_CHOSEN (1 << 1)
#define FACE_OUT (1 << 0)
-#define FACE_MARK (1 << 1)
#define FACE_INPUT (1 << 2)
void bmo_join_triangles_exec(BMesh *bm, BMOperator *op)
@@ -270,7 +268,7 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op)
BMIter iter;
BMOIter siter;
BMFace *f;
- BMEdge *e, *e_next;
+ BMEdge *e;
/* data: edge-to-join, sort_value: error weight */
struct SortPointerByFloat *jedges;
unsigned i, totedge;
@@ -370,27 +368,8 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op)
f_b = e->l->radial_next->f;
/* check if another edge already claimed this face */
- if ((BMO_elem_flag_test(bm, f_a, FACE_MARK) == false) &&
- (BMO_elem_flag_test(bm, f_b, FACE_MARK) == false))
- {
- BMO_elem_flag_enable(bm, f_a, FACE_MARK);
- BMO_elem_flag_enable(bm, f_b, FACE_MARK);
- BMO_elem_flag_enable(bm, e, EDGE_CHOSEN);
- }
- }
-
- MEM_freeN(jedges);
-
- /* join best weighted */
- BM_ITER_MESH_MUTABLE (e, e_next, &iter, bm, BM_EDGES_OF_MESH) {
- BMFace *f_new;
- BMFace *f_a, *f_b;
-
- if (!BMO_elem_flag_test(bm, e, EDGE_CHOSEN))
- continue;
-
- BM_edge_face_pair(e, &f_a, &f_b); /* checked above */
- if ((f_a->len == 3 && f_b->len == 3)) {
+ if ((f_a->len == 3) && (f_b->len == 3)) {
+ BMFace *f_new;
f_new = BM_faces_join_pair(bm, f_a, f_b, e, true);
if (f_new) {
BMO_elem_flag_enable(bm, f_new, FACE_OUT);
@@ -398,5 +377,7 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op)
}
}
+ MEM_freeN(jedges);
+
BMO_slot_buffer_from_enabled_flag(bm, op, op->slots_out, "faces.out", BM_FACE, FACE_OUT);
}