[Bf-blender-cvs] [ac68dd8a4b5] refactor-mesh-hide-generic: Merge branch 'master' into refactor-mesh-hide-generic
Hans Goudey
noreply at git.blender.org
Sun Jul 31 07:22:17 CEST 2022
Commit: ac68dd8a4b5e59b5500dbd1896b48458b080049e
Author: Hans Goudey
Date: Sat Jul 30 22:44:03 2022 -0500
Branches: refactor-mesh-hide-generic
https://developer.blender.org/rBac68dd8a4b5e59b5500dbd1896b48458b080049e
Merge branch 'master' into refactor-mesh-hide-generic
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/pbvh.c
index 0b2d0e51582,0ec7a79f890..7ac74103bf1
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@@ -3152,9 -3137,8 +3142,9 @@@ void pbvh_vertex_iter_init(PBVH *pbvh,
}
vi->mask = NULL;
- if (pbvh->type == PBVH_FACES) {
+ if (pbvh->header.type == PBVH_FACES) {
vi->vert_normals = pbvh->vert_normals;
+ vi->hide_vert = pbvh->hide_vert;
vi->vmask = CustomData_get_layer(pbvh->vdata, CD_PAINT_MASK);
}
diff --cc source/blender/editors/sculpt_paint/sculpt.c
index 9bc38234a19,2366089cefb..20cc48f3d83
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@@ -338,36 -341,34 +341,38 @@@ int SCULPT_active_face_set_get(SculptSe
return SCULPT_FACE_SET_NONE;
}
- void SCULPT_vertex_visible_set(SculptSession *ss, int index, bool visible)
+ void SCULPT_vertex_visible_set(SculptSession *ss, PBVHVertRef vertex, bool visible)
{
switch (BKE_pbvh_type(ss->pbvh)) {
- case PBVH_FACES:
- SET_FLAG_FROM_TEST(ss->mvert[vertex.i].flag, !visible, ME_HIDE);
+ case PBVH_FACES: {
+ bool *hide_vert = BKE_pbvh_get_vert_hide_for_write(ss->pbvh);
- hide_vert[index] = visible;
- BKE_pbvh_vert_mark_update(ss->pbvh, index);
++ hide_vert[vertex.i] = visible;
+ BKE_pbvh_vert_mark_update(ss->pbvh, vertex);
break;
+ }
- case PBVH_BMESH:
- BM_elem_flag_set(BM_vert_at_index(ss->bm, index), BM_ELEM_HIDDEN, !visible);
+ case PBVH_BMESH: {
+ BMVert *v = (BMVert *)vertex.i;
+ BM_elem_flag_set(v, BM_ELEM_HIDDEN, !visible);
break;
+ }
case PBVH_GRIDS:
break;
}
}
- bool SCULPT_vertex_visible_get(SculptSession *ss, int index)
+ bool SCULPT_vertex_visible_get(SculptSession *ss, PBVHVertRef vertex)
{
switch (BKE_pbvh_type(ss->pbvh)) {
- case PBVH_FACES:
- return !(ss->mvert[vertex.i].flag & ME_HIDE);
+ case PBVH_FACES: {
+ const bool *hide_vert = BKE_pbvh_get_vert_hide(ss->pbvh);
- return hide_vert == NULL || !hide_vert[index];
++ return hide_vert == NULL || !hide_vert[vertex.i];
+ }
case PBVH_BMESH:
- return !BM_elem_flag_test(BM_vert_at_index(ss->bm, index), BM_ELEM_HIDDEN);
+ return !BM_elem_flag_test((BMVert *)vertex.i, BM_ELEM_HIDDEN);
case PBVH_GRIDS: {
const CCGKey *key = BKE_pbvh_get_grid_key(ss->pbvh);
- const int grid_index = index / key->grid_area;
- const int vertex_index = index - grid_index * key->grid_area;
+ const int grid_index = vertex.i / key->grid_area;
+ const int vertex_index = vertex.i - grid_index * key->grid_area;
BLI_bitmap **grid_hidden = BKE_pbvh_get_grid_visibility(ss->pbvh);
if (grid_hidden && grid_hidden[grid_index]) {
return !BLI_BITMAP_TEST(grid_hidden[grid_index], vertex_index);
diff --cc source/blender/editors/sculpt_paint/sculpt_undo.c
index a2758937e10,60739dad40f..eca663d21b9
--- a/source/blender/editors/sculpt_paint/sculpt_undo.c
+++ b/source/blender/editors/sculpt_paint/sculpt_undo.c
@@@ -312,14 -312,15 +312,14 @@@ static bool sculpt_undo_restore_hidden(
SculptSession *ss = ob->sculpt;
SubdivCCG *subdiv_ccg = ss->subdiv_ccg;
- if (unode->maxvert) {
- MVert *mvert = ss->mvert;
+ bool *hide_vert = BKE_pbvh_get_vert_hide_for_write(ss->pbvh);
+ if (unode->maxvert) {
for (int i = 0; i < unode->totvert; i++) {
- MVert *v = &mvert[unode->index[i]];
- if ((BLI_BITMAP_TEST(unode->vert_hidden, i) != 0) != ((v->flag & ME_HIDE) != 0)) {
+ if ((BLI_BITMAP_TEST(unode->vert_hidden, i) != 0) != hide_vert[i]) {
BLI_BITMAP_FLIP(unode->vert_hidden, i);
- v->flag ^= ME_HIDE;
+ hide_vert[i] = !hide_vert[i];
- BKE_pbvh_vert_mark_update(ss->pbvh, unode->index[i]);
+ BKE_pbvh_vert_mark_update(ss->pbvh, BKE_pbvh_make_vref(unode->index[i]));
}
}
}
More information about the Bf-blender-cvs
mailing list