diff options
author | Antonioya <blendergit@gmail.com> | 2018-11-20 22:05:13 +0300 |
---|---|---|
committer | Antonioya <blendergit@gmail.com> | 2018-11-20 22:05:37 +0300 |
commit | a4a9123c33c822d13822a312cf2064ef2aca7a32 (patch) | |
tree | dccbd186328c3e4dbd041d96b0b1fea7d77415be /source/blender | |
parent | e63c9472049f64221b34c4d2dd3101086b61520e (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/blender')
-rw-r--r-- | source/blender/editors/gpencil/gpencil_brush.c | 19 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_scene_types.h | 6 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_sculpt_paint.c | 20 |
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); |