[Bf-blender-cvs] [f803a0a95b6] master: Sculpt: Fix T103341: Move sculpt overlay flags to View3DOverlay.flag

Joseph Eagar noreply at git.blender.org
Fri Dec 23 02:01:08 CET 2022


Commit: f803a0a95b6769145528914d21910c10ce24c861
Author: Joseph Eagar
Date:   Thu Dec 22 16:52:44 2022 -0800
Branches: master
https://developer.blender.org/rBf803a0a95b6769145528914d21910c10ce24c861

Sculpt: Fix T103341: Move sculpt overlay flags to View3DOverlay.flag

"Show mask" and "Show face sets" were being stored in
`Sculpt`, yet their opacities are in `View3dOverlay`.
Now `View3DOverlay` has the flags too.

===================================================================

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenkernel/BKE_paint.h
M	source/blender/blenkernel/intern/paint.cc
M	source/blender/blenkernel/intern/pbvh.c
M	source/blender/blenkernel/intern/pbvh_intern.h
M	source/blender/blenloader/intern/versioning_300.cc
M	source/blender/draw/engines/overlay/overlay_engine.cc
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesdna/DNA_view3d_defaults.h
M	source/blender/makesdna/DNA_view3d_types.h
M	source/blender/makesrna/intern/rna_sculpt_paint.c
M	source/blender/makesrna/intern/rna_space.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 263a323bb63..4feb92e71df 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -6741,15 +6741,15 @@ class VIEW3D_PT_overlay_sculpt(Panel):
         overlay = view.overlay
 
         row = layout.row(align=True)
-        row.prop(sculpt, "show_mask", text="")
+        row.prop(overlay, "sculpt_show_mask", text="")
         sub = row.row()
-        sub.active = sculpt.show_mask
+        sub.active = overlay.sculpt_show_mask
         sub.prop(overlay, "sculpt_mode_mask_opacity", text="Mask")
 
         row = layout.row(align=True)
-        row.prop(sculpt, "show_face_sets", text="")
+        row.prop(overlay, "sculpt_show_face_sets", text="")
         sub = row.row()
-        sub.active = sculpt.show_face_sets
+        sub.active = overlay.sculpt_show_face_sets
         row.prop(overlay, "sculpt_mode_face_sets_opacity", text="Face Sets")
 
 
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 7c241a4fa12..2ddda93c93b 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -25,7 +25,7 @@ extern "C" {
 
 /* Blender file format version. */
 #define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 5
+#define BLENDER_FILE_SUBVERSION 6
 
 /* Minimum Blender version that supports reading file written with the current
  * version. Older Blender versions will test this and show a warning if the file
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index 5c878486c68..ba631bd92a0 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -632,8 +632,6 @@ typedef struct SculptSession {
 
   /* PBVH acceleration structure */
   struct PBVH *pbvh;
-  bool show_mask;
-  bool show_face_sets;
 
   /* Painting on deformed mesh */
   bool deform_modifiers_active; /* Object is deformed with some modifiers. */
diff --git a/source/blender/blenkernel/intern/paint.cc b/source/blender/blenkernel/intern/paint.cc
index ebbe3c2c4fa..acc6a32b0eb 100644
--- a/source/blender/blenkernel/intern/paint.cc
+++ b/source/blender/blenkernel/intern/paint.cc
@@ -1675,8 +1675,6 @@ static void sculpt_update_object(
   ss->depsgraph = depsgraph;
 
   ss->deform_modifiers_active = sculpt_modifiers_active(scene, sd, ob);
-  ss->show_mask = (sd->flags & SCULPT_HIDE_MASK) == 0;
-  ss->show_face_sets = (sd->flags & SCULPT_HIDE_FACE_SETS) == 0;
 
   ss->building_vp_handle = false;
 
@@ -1775,9 +1773,6 @@ static void sculpt_update_object(
     }
   }
 
-  pbvh_show_mask_set(ss->pbvh, ss->show_mask);
-  pbvh_show_face_sets_set(ss->pbvh, ss->show_face_sets);
-
   if (ss->deform_modifiers_active) {
     /* Painting doesn't need crazyspace, use already evaluated mesh coordinates if possible. */
     bool used_me_eval = false;
@@ -2173,8 +2168,6 @@ static PBVH *build_pbvh_for_dynamic_topology(Object *ob)
                        ob->sculpt->bm_log,
                        ob->sculpt->attrs.dyntopo_node_id_vertex->bmesh_cd_offset,
                        ob->sculpt->attrs.dyntopo_node_id_face->bmesh_cd_offset);
-  pbvh_show_mask_set(pbvh, ob->sculpt->show_mask);
-  pbvh_show_face_sets_set(pbvh, false);
   return pbvh;
 }
 
@@ -2207,9 +2200,6 @@ static PBVH *build_pbvh_from_regular_mesh(Object *ob, Mesh *me_eval_deform, bool
                       looptri,
                       looptris_num);
 
-  pbvh_show_mask_set(pbvh, ob->sculpt->show_mask);
-  pbvh_show_face_sets_set(pbvh, ob->sculpt->show_face_sets);
-
   const bool is_deformed = check_sculpt_object_deformed(ob, true);
   if (is_deformed && me_eval_deform != nullptr) {
     int totvert;
@@ -2240,8 +2230,6 @@ static PBVH *build_pbvh_from_ccg(Object *ob, SubdivCCG *subdiv_ccg, bool respect
                        subdiv_ccg->grid_hidden,
                        base_mesh,
                        subdiv_ccg);
-  pbvh_show_mask_set(pbvh, ob->sculpt->show_mask);
-  pbvh_show_face_sets_set(pbvh, ob->sculpt->show_face_sets);
   return pbvh;
 }
 
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index ca0039d1a58..a6a362b1daf 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -3419,16 +3419,6 @@ bool pbvh_has_face_sets(PBVH *pbvh)
   return false;
 }
 
-void pbvh_show_mask_set(PBVH *pbvh, bool show_mask)
-{
-  pbvh->show_mask = show_mask;
-}
-
-void pbvh_show_face_sets_set(PBVH *pbvh, bool show_face_sets)
-{
-  pbvh->show_face_sets = show_face_sets;
-}
-
 void BKE_pbvh_set_frustum_planes(PBVH *pbvh, PBVHFrustumPlanes *planes)
 {
   pbvh->num_planes = planes->num_planes;
diff --git a/source/blender/blenkernel/intern/pbvh_intern.h b/source/blender/blenkernel/intern/pbvh_intern.h
index e465e8be002..ee728a698dd 100644
--- a/source/blender/blenkernel/intern/pbvh_intern.h
+++ b/source/blender/blenkernel/intern/pbvh_intern.h
@@ -191,8 +191,6 @@ struct PBVH {
 
   /* flag are verts/faces deformed */
   bool deformed;
-  bool show_mask;
-  bool show_face_sets;
   bool respect_hide;
 
   /* Dynamic topology */
diff --git a/source/blender/blenloader/intern/versioning_300.cc b/source/blender/blenloader/intern/versioning_300.cc
index 79b1164c0dd..90bca21cbe3 100644
--- a/source/blender/blenloader/intern/versioning_300.cc
+++ b/source/blender/blenloader/intern/versioning_300.cc
@@ -3822,6 +3822,19 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
     }
   }
 
+  if (!MAIN_VERSION_ATLEAST(bmain, 305, 6)) {
+    LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
+      LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
+        LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
+          if (sl->spacetype == SPACE_VIEW3D) {
+            View3D *v3d = (View3D *)sl;
+            v3d->overlay.flag |= (int)(V3D_OVERLAY_SCULPT_SHOW_MASK |
+                                       V3D_OVERLAY_SCULPT_SHOW_FACE_SETS);
+          }
+        }
+      }
+    }
+  }
   /**
    * Versioning code until next subversion bump goes here.
    *
diff --git a/source/blender/draw/engines/overlay/overlay_engine.cc b/source/blender/draw/engines/overlay/overlay_engine.cc
index c41cfc790fa..2eea0ad2f65 100644
--- a/source/blender/draw/engines/overlay/overlay_engine.cc
+++ b/source/blender/draw/engines/overlay/overlay_engine.cc
@@ -92,10 +92,10 @@ static void OVERLAY_engine_init(void *vedata)
   }
 
   if (ts->sculpt) {
-    if (ts->sculpt->flags & SCULPT_HIDE_FACE_SETS) {
+    if (!(v3d->overlay.flag & (int)V3D_OVERLAY_SCULPT_SHOW_FACE_SETS)) {
       pd->overlay.sculpt_mode_face_sets_opacity = 0.0f;
     }
-    if (ts->sculpt->flags & SCULPT_HIDE_MASK) {
+    if (!(v3d->overlay.flag & (int)V3D_OVERLAY_SCULPT_SHOW_MASK)) {
       pd->overlay.sculpt_mode_mask_opacity = 0.0f;
     }
   }
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 5f68b2d0c78..e81d8d8ed55 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -2470,13 +2470,8 @@ typedef enum eSculptFlags {
   /** If set, dynamic-topology detail size will be constant in object space. */
   SCULPT_DYNTOPO_DETAIL_CONSTANT = (1 << 13),
   SCULPT_DYNTOPO_DETAIL_BRUSH = (1 << 14),
+  /* unused = (1 << 15), */
   SCULPT_DYNTOPO_DETAIL_MANUAL = (1 << 16),
-
-  /** Don't display mask in viewport, but still use it for strokes. */
-  SCULPT_HIDE_MASK = (1 << 15),
-
-  /** Don't display face sets in viewport. */
-  SCULPT_HIDE_FACE_SETS = (1 << 17),
 } eSculptFlags;
 
 /** #Sculpt.transform_mode */
diff --git a/source/blender/makesdna/DNA_view3d_defaults.h b/source/blender/makesdna/DNA_view3d_defaults.h
index f124bdd5d94..0c0ed210a2b 100644
--- a/source/blender/makesdna/DNA_view3d_defaults.h
+++ b/source/blender/makesdna/DNA_view3d_defaults.h
@@ -36,7 +36,7 @@
 
 #define _DNA_DEFAULT_View3DOverlay \
   { \
-    .flag = V3D_OVERLAY_VIEWER_ATTRIBUTE, \
+    .flag = V3D_OVERLAY_VIEWER_ATTRIBUTE | V3D_OVERLAY_SCULPT_SHOW_MASK | V3D_OVERLAY_SCULPT_SHOW_FACE_SETS, \
     .wireframe_threshold = 1.0f, \
     .wireframe_opacity = 1.0f, \
     .viewer_attribute_opacity = 1.0f, \
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 8e44588bb34..0b7c483b7d0 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -546,6 +546,8 @@ enum {
   V3D_OVERLAY_STATS = (1 << 11),
   V3D_OVERLAY_FADE_INACTIVE = (1 << 12),
   V3D_OVERLAY_VIEWER_ATTRIBUTE = (1 << 13),
+  V3D_OVERLAY_SCULPT_SHOW_MASK = (1 << 14),
+  V3D_OVERLAY_SCULPT_SHOW_FACE_SETS = (1 << 15),
 };
 
 /** #View3DOverlay.edit_flag */
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index a57f3c5a1a6..003e26333d2 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -393,24 +393,6 @@ static void rna_Sculpt_update(bContext *C, PointerRNA *UNUSED(ptr))
   }
 }
 
-static void rna_Sculpt_ShowMask_update(bContext *C, PointerRNA *UNUSED(ptr))
-{
-  Scene *scene = CTX_data_scene(C);
-  ViewLayer *view_layer = CTX_data_view_layer(C);
-  BKE_view_layer_synced_ensure(scene, view_layer);
-  Object *object = BKE_view_layer_active_object_get(view_layer);
-  if (object == NULL || object->sculpt == NULL) {
-    return;
-  }
-  Sculpt *sd = scene->toolsettings->sculpt;
-  object->sculpt->show_mask = ((sd->flags & SCULPT_HIDE_MASK) == 0);
-  if (object->sculpt->pbvh != NULL) {
-    pbvh_show_mask_set(object->sculpt->pbvh, object->sculpt->show_mask);
-  }
-  DEG_id_tag_update(&object->id, ID_RECALC_GEOMETRY);
-  WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, object);
-}
-
 static char *rna_Sculpt_path(const PointerRNA *UNUSED(ptr))
 {
   return BLI_strdup("tool_settings.sculpt");
@@ -848,18 +830,6 @@ static void rna_def_sculpt(BlenderRNA *brna)
   RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
   RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Sculpt_update")

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list