diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-06-14 12:24:41 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-06-14 12:24:41 +0400 |
commit | 23d7fa11c901f7e470121fc38a3b1a949ce91bb6 (patch) | |
tree | 383bf693c4cd043b98a420241c4995fa5c47393f /source | |
parent | 34ae5bd378da79787b869962bd8b3da2ee33a430 (diff) |
Skin Modifier: use BLI_bitmap to tag edges
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/modifiers/intern/MOD_skin.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/modifiers/intern/MOD_skin.c b/source/blender/modifiers/intern/MOD_skin.c index 019eb54a9ee..1a40e266187 100644 --- a/source/blender/modifiers/intern/MOD_skin.c +++ b/source/blender/modifiers/intern/MOD_skin.c @@ -68,6 +68,7 @@ #include "BLI_heap.h" #include "BLI_math.h" #include "BLI_stack.h" +#include "BLI_bitmap.h" #include "BKE_cdderivedmesh.h" #include "BKE_deform.h" @@ -641,7 +642,7 @@ typedef struct { int e; } EdgeStackElem; -static void build_emats_stack(BLI_Stack *stack, int *visited_e, EMat *emat, +static void build_emats_stack(BLI_Stack *stack, BLI_bitmap *visited_e, EMat *emat, const MeshElemMap *emap, const MEdge *medge, const MVertSkin *vs, const MVert *mvert) { @@ -654,11 +655,11 @@ static void build_emats_stack(BLI_Stack *stack, int *visited_e, EMat *emat, e = stack_elem.e; /* Skip if edge already visited */ - if (visited_e[e]) + if (BLI_BITMAP_TEST(visited_e, e)) return; /* Mark edge as visited */ - visited_e[e] = true; + BLI_BITMAP_ENABLE(visited_e, e); /* Process edge */ @@ -704,11 +705,12 @@ static EMat *build_edge_mats(const MVertSkin *vs, BLI_Stack *stack; EMat *emat; EdgeStackElem stack_elem; - int *visited_e, i, v; + BLI_bitmap *visited_e; + int i, v; stack = BLI_stack_new(sizeof(stack_elem), "build_edge_mats.stack"); - visited_e = MEM_callocN(sizeof(int) * totedge, "build_edge_mats.visited_e"); + visited_e = BLI_BITMAP_NEW(totedge, "build_edge_mats.visited_e"); emat = MEM_callocN(sizeof(EMat) * totedge, "build_edge_mats.emat"); /* Edge matrices are built from the root nodes, add all roots with |