diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-02-02 10:09:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-02-02 10:09:38 +0400 |
commit | b4ae05e4db8bdca739d61947b8bf680bea635ae9 (patch) | |
tree | 3a9dccf2d1d6059b5e5990fbb997f802da6814aa /source/blender | |
parent | c4345a808c727e4a7052872bce91e35b74c9eea3 (diff) |
BMesh: optimize lookups for triangle fill
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/bmesh/operators/bmo_triangulate.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/source/blender/bmesh/operators/bmo_triangulate.c b/source/blender/bmesh/operators/bmo_triangulate.c index d26c10c24af..30ae01ef713 100644 --- a/source/blender/bmesh/operators/bmo_triangulate.c +++ b/source/blender/bmesh/operators/bmo_triangulate.c @@ -65,7 +65,7 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op) BMEdge *e; ScanFillContext sf_ctx; /* ScanFillEdge *sf_edge; */ /* UNUSED */ - ScanFillVert *sf_vert, *sf_vert_1, *sf_vert_2; + ScanFillVert *sf_vert_1, *sf_vert_2; ScanFillFace *sf_tri; SmallHash hash; float normal[3], *normal_pt; @@ -79,20 +79,19 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op) BMO_ITER (e, &siter, op->slots_in, "edges", BM_EDGE) { BMO_elem_flag_enable(bm, e, EDGE_MARK); - if (!BLI_smallhash_haskey(&hash, (uintptr_t)e->v1)) { - sf_vert = BLI_scanfill_vert_add(&sf_ctx, e->v1->co); - sf_vert->tmp.p = e->v1; - BLI_smallhash_insert(&hash, (uintptr_t)e->v1, sf_vert); + if ((sf_vert_1 = BLI_smallhash_lookup(&hash, (uintptr_t)e->v1)) == NULL) { + sf_vert_1 = BLI_scanfill_vert_add(&sf_ctx, e->v1->co); + sf_vert_1->tmp.p = e->v1; + BLI_smallhash_insert(&hash, (uintptr_t)e->v1, sf_vert_1); } - if (!BLI_smallhash_haskey(&hash, (uintptr_t)e->v2)) { - sf_vert = BLI_scanfill_vert_add(&sf_ctx, e->v2->co); - sf_vert->tmp.p = e->v2; - BLI_smallhash_insert(&hash, (uintptr_t)e->v2, sf_vert); + if ((sf_vert_2 = BLI_smallhash_lookup(&hash, (uintptr_t)e->v2)) == NULL) { + sf_vert_2 = BLI_scanfill_vert_add(&sf_ctx, e->v2->co); + sf_vert_2->tmp.p = e->v2; + BLI_smallhash_insert(&hash, (uintptr_t)e->v2, sf_vert_2); } - sf_vert_1 = BLI_smallhash_lookup(&hash, (uintptr_t)e->v1); - sf_vert_2 = BLI_smallhash_lookup(&hash, (uintptr_t)e->v2); + /* sf_edge = */ BLI_scanfill_edge_add(&sf_ctx, sf_vert_1, sf_vert_2); /* sf_edge->tmp.p = e; */ /* UNUSED */ } |