[Bf-blender-cvs] [d7ea1cca4e7] temp-sculpt-cavity-mask: temp-sculpt-cavity-mask: Move cavity mask settings into toolsettings

Joseph Eagar noreply at git.blender.org
Sat Jun 11 21:12:22 CEST 2022


Commit: d7ea1cca4e7e924b293fed8706d5c9a63ab432e3
Author: Joseph Eagar
Date:   Sat Jun 11 12:11:59 2022 -0700
Branches: temp-sculpt-cavity-mask
https://developer.blender.org/rBd7ea1cca4e7e924b293fed8706d5c9a63ab432e3

temp-sculpt-cavity-mask: Move cavity mask settings into toolsettings

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

M	release/scripts/addons
M	release/scripts/startup/bl_ui/properties_paint_common.py
M	release/scripts/startup/bl_ui/space_view3d_toolbar.py
M	source/blender/blenkernel/BKE_paint.h
M	source/blender/blenkernel/intern/brush.c
M	source/blender/blenkernel/intern/paint.c
M	source/blender/blenkernel/intern/scene.cc
M	source/blender/blenloader/intern/versioning_300.c
M	source/blender/editors/sculpt_paint/sculpt_automasking.cc
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_sculpt_paint.c

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

diff --git a/release/scripts/addons b/release/scripts/addons
index c51e0bb1793..ebe0bd5677a 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit c51e0bb1793c44c7a1b7435593dd5022cf7c8eec
+Subproject commit ebe0bd5677af5810972feb212a027b2a30f1ee6a
diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py
index 437bcca63bd..54437dc0bfe 100644
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@ -949,13 +949,15 @@ def brush_settings_advanced(layout, context, brush, popover=False):
         col.separator()
 
         if brush.use_automasking_cavity:
+            sculpt = context.tool_settings.sculpt
+
             col.prop(brush, "invert_automasking_cavity", text="Invert Cavity")
-            col.prop(brush, "automasking_cavity_factor", text="Cavity Factor")
-            col.prop(brush, "automasking_cavity_blur_steps", text="Cavity Blur")
-            col.prop(brush, "use_automasking_custom_cavity_curve", text="Use Curve")
+            col.prop(sculpt, "automasking_cavity_factor", text="Cavity Factor")
+            col.prop(sculpt, "automasking_cavity_blur_steps", text="Cavity Blur")
+            col.prop(sculpt, "use_automasking_custom_cavity_curve", text="Use Curve")
 
-            if brush.use_automasking_custom_cavity_curve:
-                col.template_curve_mapping(brush, "automasking_cavity_curve")
+            if sculpt.use_automasking_custom_cavity_curve:
+                col.template_curve_mapping(sculpt, "automasking_cavity_curve")
 
         col.prop(brush, "automasking_boundary_edges_propagation_steps")
 
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 1473fa57ad8..d80d94d0186 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -977,12 +977,12 @@ class VIEW3D_PT_sculpt_options(Panel, View3DPaintPanel):
 
         if sculpt.use_automasking_cavity:
             col.prop(sculpt, "invert_automasking_cavity", text="Invert Cavity")
-            col.prop(sculpt.brush, "automasking_cavity_factor", text="Cavity Factor")
-            col.prop(sculpt.brush, "automasking_cavity_blur_steps", text="Cavity Blur")
-            col.prop(sculpt.brush, "use_automasking_custom_cavity_curve", text="Use Curve")
+            col.prop(sculpt, "automasking_cavity_factor", text="Cavity Factor")
+            col.prop(sculpt, "automasking_cavity_blur_steps", text="Cavity Blur")
+            col.prop(sculpt, "use_automasking_custom_cavity_curve", text="Use Curve")
 
-            if sculpt.brush.use_automasking_custom_cavity_curve:
-                col.template_curve_mapping(sculpt.brush, "automasking_cavity_curve")
+            if sculpt.use_automasking_custom_cavity_curve:
+                col.template_curve_mapping(sculpt, "automasking_cavity_curve")
 
         col.prop(sculpt.brush, "automasking_boundary_edges_propagation_steps")
 
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index e3260c3f67a..424f469f470 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -768,6 +768,7 @@ bool BKE_paint_canvas_image_get(struct PaintModeSettings *settings,
                                 struct ImageUser **r_image_user);
 int BKE_paint_canvas_uvmap_layer_index_get(const struct PaintModeSettings *settings,
                                            struct Object *ob);
+void BKE_sculpt_init_cavity_curve(struct Sculpt *sd);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index ee29eaf6dec..7389341d6e8 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -42,19 +42,6 @@
 
 #include "BLO_read_write.h"
 
-static void brush_sculpt_add_cavity_curve(Brush *br)
-
-{
-  CurveMapping *cumap = br->automasking_cavity_curve = BKE_curvemapping_add(1, 0, 0, 1, 1);
-
-  cumap->flag &= ~CUMA_EXTEND_EXTRAPOLATE;
-  cumap->preset = CURVE_PRESET_LINE;
-
-  BKE_curvemap_reset(cumap->cm, &cumap->clipr, cumap->preset, CURVEMAP_SLOPE_POSITIVE);
-  BKE_curvemapping_changed(cumap, false);
-  BKE_curvemapping_init(br->automasking_cavity_curve);
-}
-
 static void brush_init_data(ID *id)
 {
   Brush *brush = (Brush *)id;
@@ -86,11 +73,6 @@ static void brush_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, c
 
   brush_dst->curve = BKE_curvemapping_copy(brush_src->curve);
 
-  if (brush_src->automasking_cavity_curve) {
-    brush_dst->automasking_cavity_curve = BKE_curvemapping_copy(
-        brush_src->automasking_cavity_curve);
-  }
-
   if (brush_src->gpencil_settings != NULL) {
     brush_dst->gpencil_settings = MEM_dupallocN(brush_src->gpencil_settings);
     brush_dst->gpencil_settings->curve_sensitivity = BKE_curvemapping_copy(
@@ -129,10 +111,6 @@ static void brush_free_data(ID *id)
   }
   BKE_curvemapping_free(brush->curve);
 
-  if (brush->automasking_cavity_curve) {
-    BKE_curvemapping_free(brush->curve);
-  }
-
   if (brush->gpencil_settings != NULL) {
     BKE_curvemapping_free(brush->gpencil_settings->curve_sensitivity);
     BKE_curvemapping_free(brush->gpencil_settings->curve_strength);
@@ -234,10 +212,6 @@ static void brush_blend_write(BlendWriter *writer, ID *id, const void *id_addres
     BKE_curvemapping_blend_write(writer, brush->curve);
   }
 
-  if (brush->automasking_cavity_curve) {
-    BKE_curvemapping_blend_write(writer, brush->automasking_cavity_curve);
-  }
-
   if (brush->gpencil_settings) {
     BLO_write_struct(writer, BrushGpencilSettings, brush->gpencil_settings);
 
@@ -348,16 +322,6 @@ static void brush_blend_read_data(BlendDataReader *reader, ID *id)
 
   brush->preview = NULL;
   brush->icon_imbuf = NULL;
-
-  BLO_read_data_address(reader, &brush->automasking_cavity_curve);
-
-  if (brush->automasking_cavity_curve) {
-    BKE_curvemapping_blend_read(reader, brush->automasking_cavity_curve);
-    BKE_curvemapping_init(brush->automasking_cavity_curve);
-  }
-  else if (brush->sculpt_tool) {
-    brush_sculpt_add_cavity_curve(brush);
-  }
 }
 
 static void brush_blend_read_lib(BlendLibReader *reader, ID *id)
@@ -1978,12 +1942,6 @@ void BKE_brush_sculpt_reset(Brush *br)
     default:
       break;
   }
-
-  if (br->automasking_cavity_curve) {
-    BKE_curvemapping_free(br->automasking_cavity_curve);
-  }
-
-  brush_sculpt_add_cavity_curve(br);
 }
 
 void BKE_brush_curve_preset(Brush *b, eCurveMappingPreset preset)
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index aa106d1f970..c45aed689e1 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1982,6 +1982,9 @@ void BKE_sculpt_toolsettings_data_ensure(struct Scene *scene)
   if (!sd->paint.tile_offset[2]) {
     sd->paint.tile_offset[2] = 1.0f;
   }
+  if (!sd->automasking_cavity_curve) {
+    BKE_sculpt_init_cavity_curve(sd);
+  }
 }
 
 static bool check_sculpt_object_deformed(Object *object, const bool for_construction)
diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc
index e203d32a658..6e2eae4ca0b 100644
--- a/source/blender/blenkernel/intern/scene.cc
+++ b/source/blender/blenkernel/intern/scene.cc
@@ -114,6 +114,19 @@
 
 #include "bmesh.h"
 
+void BKE_sculpt_init_cavity_curve(Sculpt *sd)
+
+{
+  CurveMapping *cumap = sd->automasking_cavity_curve = BKE_curvemapping_add(1, 0, 0, 1, 1);
+
+  cumap->flag &= ~CUMA_EXTEND_EXTRAPOLATE;
+  cumap->preset = CURVE_PRESET_LINE;
+
+  BKE_curvemap_reset(cumap->cm, &cumap->clipr, cumap->preset, CURVEMAP_SLOPE_POSITIVE);
+  BKE_curvemapping_changed(cumap, false);
+  BKE_curvemapping_init(sd->automasking_cavity_curve);
+}
+
 static void scene_init_data(ID *id)
 {
   Scene *scene = (Scene *)id;
@@ -938,6 +951,10 @@ static void scene_blend_write(BlendWriter *writer, ID *id, const void *id_addres
   }
   if (tos->sculpt) {
     BLO_write_struct(writer, Sculpt, tos->sculpt);
+    if (tos->sculpt->automasking_cavity_curve) {
+      BKE_curvemapping_blend_write(writer, tos->sculpt->automasking_cavity_curve);
+    }
+
     BKE_paint_blend_write(writer, &tos->sculpt->paint);
   }
   if (tos->uvsculpt) {
@@ -1151,6 +1168,18 @@ static void scene_blend_read_data(BlendDataReader *reader, ID *id)
     sce->toolsettings->particle.object = nullptr;
     sce->toolsettings->gp_sculpt.paintcursor = nullptr;
 
+    if (sce->toolsettings->sculpt) {
+      BLO_read_data_address(reader, &sce->toolsettings->sculpt->automasking_cavity_curve);
+
+      if (sce->toolsettings->sculpt->automasking_cavity_curve) {
+        BKE_curvemapping_blend_read(reader, sce->toolsettings->sculpt->automasking_cavity_curve);
+        BKE_curvemapping_init(sce->toolsettings->sculpt->automasking_cavity_curve);
+      }
+      else {
+        BKE_sculpt_init_cavity_curve(sce->toolsettings->sculpt);
+      }
+    }
+
     /* Relink grease pencil interpolation curves. */
     BLO_read_data_address(reader, &sce->toolsettings->gp_interpolate.custom_ipo);
     if (sce->toolsettings->gp_interpolate.custom_ipo) {
@@ -1737,6 +1766,12 @@ ToolSettings *BKE_toolsettings_copy(ToolSettings *toolsettings, const int flag)
   if (ts->sculpt) {
     ts->sculpt = static_cast<Sculpt *>(MEM_dupallocN(ts->sculpt));
     BKE_paint_copy(&ts->sculpt->paint, &ts->sculpt->paint, flag);
+
+    if (ts->sculpt->automasking_cavity_curve) {
+      ts->sculpt->automasking_cavity_curve = BKE_curvemapping_copy(
+          ts->sculpt->automasking_cavity_curve);
+      BKE_curvemapping_init(ts->sculpt->automasking_cavity_curve);
+    }
   }
   if (ts->uvsculpt) {
     ts->uvsculpt = static_cast<UvSculpt *>(MEM_dupallocN(ts->uvsculpt));
@@ -1794,6 +1829,10 @@ void BKE_toolsettings_free(ToolSettings *toolsettings)
     MEM_freeN(toolsettings->wpaint);
   }
   if (toolsettings->sculpt) {
+    if (toolsettings->sculpt->automasking_cavity_curve) {
+      BKE_curvemapping_free(toolsettings->sculpt->automasking_cavity_curve);
+    }
+
     BKE_paint_free(&

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list