Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorAntonioya <blendergit@gmail.com>2018-11-20 22:05:13 +0300
committerAntonioya <blendergit@gmail.com>2018-11-20 22:05:37 +0300
commita4a9123c33c822d13822a312cf2064ef2aca7a32 (patch)
treedccbd186328c3e4dbd041d96b0b1fea7d77415be /source
parente63c9472049f64221b34c4d2dd3101086b61520e (diff)
GP: Refactor target weight paint
Now, the target weight is defined as the final maximum value with a new property and all fields have be moved to brush struct.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/gpencil/gpencil_brush.c19
-rw-r--r--source/blender/makesdna/DNA_scene_types.h6
-rw-r--r--source/blender/makesrna/intern/rna_sculpt_paint.c20
3 files changed, 24 insertions, 21 deletions
diff --git a/source/blender/editors/gpencil/gpencil_brush.c b/source/blender/editors/gpencil/gpencil_brush.c
index 1710bd6be88..84a05025cd7 100644
--- a/source/blender/editors/gpencil/gpencil_brush.c
+++ b/source/blender/editors/gpencil/gpencil_brush.c
@@ -903,21 +903,16 @@ static bool gp_brush_weight_apply(
if (gp_brush_invert_check(gso)) {
/* reduce weight */
- if (gso->settings->flag & GP_SCULPT_SETT_FLAG_PAINT_WEIGHT) {
- curweight = 0.0f;
- }
- else {
- curweight -= inf;
- }
+ curweight -= inf;
}
else {
/* increase weight */
- if (gso->settings->flag & GP_SCULPT_SETT_FLAG_PAINT_WEIGHT) {
- curweight = gso->gp_brush->strength;
- }
- else {
- curweight += inf;
- }
+ curweight += inf;
+ }
+
+ /* verify target weight */
+ if (gso->gp_brush->flag & GP_SCULPT_FLAG_TARGET_WEIGHT) {
+ CLAMP_MAX(curweight, gso->gp_brush->target_weight);
}
CLAMP(curweight, 0.0f, 1.0f);
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 640fe526971..6737420b97c 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -995,6 +995,8 @@ typedef struct GP_Sculpt_Data {
float strength; /* strength of effect */
float curcolor_add[3]; /* cursor color for add */
float curcolor_sub[3]; /* cursor color for sub */
+ float target_weight; /* target weight */
+ char pad_[4];
} GP_Sculpt_Data;
/* GP_Sculpt_Data.flag */
@@ -1015,6 +1017,8 @@ typedef enum eGP_Sculpt_Flag {
GP_SCULPT_FLAG_TMP_INVERT = (1 << 5),
/* adjust radius using pen pressure */
GP_SCULPT_FLAG_PRESSURE_RADIUS = (1 << 6),
+ /* paint weight, define a target */
+ GP_SCULPT_FLAG_TARGET_WEIGHT = (1 << 7),
} eGP_Sculpt_Flag;
/* GPencil Stroke Sculpting Settings */
@@ -1051,8 +1055,6 @@ typedef enum eGP_Sculpt_SettingsFlag {
GP_SCULPT_SETT_FLAG_FRAME_FALLOFF = (1 << 5),
/* apply brush to uv data */
GP_SCULPT_SETT_FLAG_APPLY_UV = (1 << 6),
- /* paint weight, not add/substract */
- GP_SCULPT_SETT_FLAG_PAINT_WEIGHT = (1 << 7),
} eGP_Sculpt_SettingsFlag;
/* Settings for GP Interpolation Operators */
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index 7aa38472944..83ce1a3bb23 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -1244,13 +1244,6 @@ static void rna_def_gpencil_sculpt(BlenderRNA *brna)
RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
- prop = RNA_def_property(srna, "use_fix_weight", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SCULPT_SETT_FLAG_PAINT_WEIGHT);
- RNA_def_property_ui_text(prop, "Fix Weight",
- "Set the predefined weight to any point affected by the brush");
- RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
- RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
-
prop = RNA_def_property(srna, "use_multiframe_falloff", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SCULPT_SETT_FLAG_FRAME_FALLOFF);
RNA_def_property_ui_text(prop, "Use Falloff", "Use falloff effect when edit in multiframe mode to compute brush effect by frame");
@@ -1294,6 +1287,19 @@ static void rna_def_gpencil_sculpt(BlenderRNA *brna)
RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
+ prop = RNA_def_property(srna, "target_weight", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_range(prop, 0.0, 1.0);
+ RNA_def_property_ui_text(prop, "Weight", "Target weight");
+ RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
+ RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
+
+ prop = RNA_def_property(srna, "use_target_weight", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SCULPT_FLAG_TARGET_WEIGHT);
+ RNA_def_property_ui_text(prop, "Target",
+ "Use predefined target weight to any point affected by the brush");
+ RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
+ RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
+
prop = RNA_def_property(srna, "use_pressure_strength", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SCULPT_FLAG_USE_PRESSURE);
RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);