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
path: root/source
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-05-11 00:33:45 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-05-11 00:33:45 +0400
commit4a149bcb6685ba37a9e0cc557b0a6e6d5d99747d (patch)
treeef9c048b3062e61aab6251585c58f35458ec40ef /source
parentf95f558a8c0a8ed2a9e1b4a642c6fe0b2b0d9e39 (diff)
Add paint mask access to the PBVH vertex iterator.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenlib/BLI_pbvh.h5
-rw-r--r--source/blender/blenlib/intern/pbvh.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h
index b3e424b5916..92ad2a04224 100644
--- a/source/blender/blenlib/BLI_pbvh.h
+++ b/source/blender/blenlib/BLI_pbvh.h
@@ -191,6 +191,7 @@ typedef struct PBVHVertexIter {
struct MVert *mverts;
int totvert;
int *vert_indices;
+ float *vmask;
/* result: these are all computed in the macro, but we assume
* that compiler optimization's will skip the ones we don't use */
@@ -198,6 +199,7 @@ typedef struct PBVHVertexIter {
float *co;
short *no;
float *fno;
+ float *mask;
} PBVHVertexIter;
#ifdef _MSC_VER
@@ -228,6 +230,7 @@ void pbvh_vertex_iter_init(PBVH *bvh, PBVHNode *node,
if(vi.grid) { \
vi.co= CCG_elem_co(vi.key, vi.grid); \
vi.fno= CCG_elem_no(vi.key, vi.grid); \
+ vi.mask= CCG_elem_mask(vi.key, vi.grid); \
vi.grid= CCG_elem_next(vi.key, vi.grid); \
if(vi.gh) { \
if(BLI_BITMAP_GET(vi.gh, vi.gy * vi.gridsize + vi.gx)) \
@@ -240,6 +243,8 @@ void pbvh_vertex_iter_init(PBVH *bvh, PBVHNode *node,
continue; \
vi.co= vi.mvert->co; \
vi.no= vi.mvert->no; \
+ if(vi.vmask) \
+ vi.mask= &vi.vmask[vi.vert_indices[vi.gx]]; \
} \
#define BLI_pbvh_vertex_iter_end \
diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c
index ec6c9d0604c..c157ba7b575 100644
--- a/source/blender/blenlib/intern/pbvh.c
+++ b/source/blender/blenlib/intern/pbvh.c
@@ -1885,4 +1885,8 @@ void pbvh_vertex_iter_init(PBVH *bvh, PBVHNode *node,
vi->gh= NULL;
if (vi->grids && mode == PBVH_ITER_UNIQUE)
vi->grid_hidden= bvh->grid_hidden;
+
+ vi->mask= NULL;
+ if(!vi->grids)
+ vi->vmask= CustomData_get_layer(bvh->vdata, CD_PAINT_MASK);
}