[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