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>2014-02-02 10:09:38 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-02-02 10:09:38 +0400
commitb4ae05e4db8bdca739d61947b8bf680bea635ae9 (patch)
tree3a9dccf2d1d6059b5e5990fbb997f802da6814aa /source/blender/bmesh
parentc4345a808c727e4a7052872bce91e35b74c9eea3 (diff)
BMesh: optimize lookups for triangle fill
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/operators/bmo_triangulate.c21
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 */
}