[Bf-blender-cvs] [f5e99abb60b] blender-v3.4-release: blender-v3.4-release: Rearrange function order to fix merging
Joseph Eagar
noreply at git.blender.org
Tue Nov 22 21:45:47 CET 2022
Commit: f5e99abb60b4470e5a4d6c7659085d608699d805
Author: Joseph Eagar
Date: Tue Nov 22 12:45:09 2022 -0800
Branches: blender-v3.4-release
https://developer.blender.org/rBf5e99abb60b4470e5a4d6c7659085d608699d805
blender-v3.4-release: Rearrange function order to fix merging
BKE_pbvh_sync_visibility_from_verts was in the wrong spot
relative to master, was leading to very nasty merge errors.
===================================================================
M source/blender/blenkernel/intern/pbvh.c
===================================================================
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index f948749f7bb..8fba781835f 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -3547,95 +3547,6 @@ int BKE_pbvh_debug_draw_gen_get(PBVHNode *node)
return node->debug_draw_gen;
}
-void BKE_pbvh_sync_visibility_from_verts(PBVH *pbvh, Mesh *mesh)
-{
- switch (pbvh->header.type) {
- case PBVH_FACES: {
- BKE_mesh_flush_hidden_from_verts(mesh);
- BKE_pbvh_update_hide_attributes_from_mesh(pbvh);
- break;
- }
- case PBVH_BMESH: {
- BMIter iter;
- BMVert *v;
- BMEdge *e;
- BMFace *f;
-
- BM_ITER_MESH (f, &iter, pbvh->header.bm, BM_FACES_OF_MESH) {
- BM_elem_flag_disable(f, BM_ELEM_HIDDEN);
- }
-
- BM_ITER_MESH (e, &iter, pbvh->header.bm, BM_EDGES_OF_MESH) {
- BM_elem_flag_disable(e, BM_ELEM_HIDDEN);
- }
-
- BM_ITER_MESH (v, &iter, pbvh->header.bm, BM_VERTS_OF_MESH) {
- if (!BM_elem_flag_test(v, BM_ELEM_HIDDEN)) {
- continue;
- }
- BMIter iter_l;
- BMLoop *l;
-
- BM_ITER_ELEM (l, &iter_l, v, BM_LOOPS_OF_VERT) {
- BM_elem_flag_enable(l->e, BM_ELEM_HIDDEN);
- BM_elem_flag_enable(l->f, BM_ELEM_HIDDEN);
- }
- }
- break;
- }
- case PBVH_GRIDS: {
- const MPoly *mp = BKE_mesh_polys(mesh);
- const MLoop *mloop = BKE_mesh_loops(mesh);
- CCGKey key = pbvh->gridkey;
-
- bool *hide_poly = (bool *)CustomData_get_layer_named(
- &mesh->pdata, CD_PROP_BOOL, ".hide_poly");
-
- bool delete_hide_poly = true;
- for (int face_index = 0; face_index < mesh->totpoly; face_index++, mp++) {
- const MLoop *ml = mloop + mp->loopstart;
- bool hidden = false;
-
- for (int loop_index = 0; !hidden && loop_index < mp->totloop; loop_index++, ml++) {
- int grid_index = mp->loopstart + loop_index;
-
- if (pbvh->grid_hidden[grid_index] &&
- BLI_BITMAP_TEST(pbvh->grid_hidden[grid_index], key.grid_area - 1)) {
- hidden = true;
-
- break;
- }
- }
-
- if (hidden && !hide_poly) {
- hide_poly = (bool *)CustomData_get_layer_named(&mesh->pdata, CD_PROP_BOOL, ".hide_poly");
-
- if (!hide_poly) {
- CustomData_add_layer_named(
- &mesh->pdata, CD_PROP_BOOL, CD_CONSTRUCT, NULL, mesh->totpoly, ".hide_poly");
-
- hide_poly = (bool *)CustomData_get_layer_named(
- &mesh->pdata, CD_PROP_BOOL, ".hide_poly");
- }
- }
-
- if (hide_poly) {
- delete_hide_poly = delete_hide_poly && !hidden;
- hide_poly[face_index] = hidden;
- }
- }
-
- if (delete_hide_poly) {
- CustomData_free_layer_named(&mesh->pdata, ".hide_poly", mesh->totpoly);
- }
-
- BKE_mesh_flush_hidden_from_polys(mesh);
- BKE_pbvh_update_hide_attributes_from_mesh(pbvh);
- break;
- }
- }
-}
-
static void pbvh_face_iter_verts_reserve(PBVHFaceIter *fd, int verts_num)
{
if (verts_num >= fd->verts_size_) {
@@ -3820,3 +3731,92 @@ bool BKE_pbvh_face_iter_done(PBVHFaceIter *fd)
return true;
}
}
+
+void BKE_pbvh_sync_visibility_from_verts(PBVH *pbvh, Mesh *mesh)
+{
+ switch (pbvh->header.type) {
+ case PBVH_FACES: {
+ BKE_mesh_flush_hidden_from_verts(mesh);
+ BKE_pbvh_update_hide_attributes_from_mesh(pbvh);
+ break;
+ }
+ case PBVH_BMESH: {
+ BMIter iter;
+ BMVert *v;
+ BMEdge *e;
+ BMFace *f;
+
+ BM_ITER_MESH (f, &iter, pbvh->header.bm, BM_FACES_OF_MESH) {
+ BM_elem_flag_disable(f, BM_ELEM_HIDDEN);
+ }
+
+ BM_ITER_MESH (e, &iter, pbvh->header.bm, BM_EDGES_OF_MESH) {
+ BM_elem_flag_disable(e, BM_ELEM_HIDDEN);
+ }
+
+ BM_ITER_MESH (v, &iter, pbvh->header.bm, BM_VERTS_OF_MESH) {
+ if (!BM_elem_flag_test(v, BM_ELEM_HIDDEN)) {
+ continue;
+ }
+ BMIter iter_l;
+ BMLoop *l;
+
+ BM_ITER_ELEM (l, &iter_l, v, BM_LOOPS_OF_VERT) {
+ BM_elem_flag_enable(l->e, BM_ELEM_HIDDEN);
+ BM_elem_flag_enable(l->f, BM_ELEM_HIDDEN);
+ }
+ }
+ break;
+ }
+ case PBVH_GRIDS: {
+ const MPoly *mp = BKE_mesh_polys(mesh);
+ const MLoop *mloop = BKE_mesh_loops(mesh);
+ CCGKey key = pbvh->gridkey;
+
+ bool *hide_poly = (bool *)CustomData_get_layer_named(
+ &mesh->pdata, CD_PROP_BOOL, ".hide_poly");
+
+ bool delete_hide_poly = true;
+ for (int face_index = 0; face_index < mesh->totpoly; face_index++, mp++) {
+ const MLoop *ml = mloop + mp->loopstart;
+ bool hidden = false;
+
+ for (int loop_index = 0; !hidden && loop_index < mp->totloop; loop_index++, ml++) {
+ int grid_index = mp->loopstart + loop_index;
+
+ if (pbvh->grid_hidden[grid_index] &&
+ BLI_BITMAP_TEST(pbvh->grid_hidden[grid_index], key.grid_area - 1)) {
+ hidden = true;
+
+ break;
+ }
+ }
+
+ if (hidden && !hide_poly) {
+ hide_poly = (bool *)CustomData_get_layer_named(&mesh->pdata, CD_PROP_BOOL, ".hide_poly");
+
+ if (!hide_poly) {
+ CustomData_add_layer_named(
+ &mesh->pdata, CD_PROP_BOOL, CD_CONSTRUCT, NULL, mesh->totpoly, ".hide_poly");
+
+ hide_poly = (bool *)CustomData_get_layer_named(
+ &mesh->pdata, CD_PROP_BOOL, ".hide_poly");
+ }
+ }
+
+ if (hide_poly) {
+ delete_hide_poly = delete_hide_poly && !hidden;
+ hide_poly[face_index] = hidden;
+ }
+ }
+
+ if (delete_hide_poly) {
+ CustomData_free_layer_named(&mesh->pdata, ".hide_poly", mesh->totpoly);
+ }
+
+ BKE_mesh_flush_hidden_from_polys(mesh);
+ BKE_pbvh_update_hide_attributes_from_mesh(pbvh);
+ break;
+ }
+ }
+}
More information about the Bf-blender-cvs
mailing list