Commit: b77d3ecb5c949cf9d2c3f2f30ee023b966fe73d8
Author: Sebastian Witt
Date:   Sat Aug 19 11:07:40 2017 +0200
Branches: soc-2017-sculpting_improvements
https://developer.blender.org/rBb77d3ecb5c949cf9d2c3f2f30ee023b966fe73d8

Added subtract mode. "Clipping brush"

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

M       source/blender/editors/sculpt_paint/paint_ops.c
M       source/blender/editors/sculpt_paint/sculpt.c

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

diff --git a/source/blender/editors/sculpt_paint/paint_ops.c 
b/source/blender/editors/sculpt_paint/paint_ops.c
index bc544c17fa2..69257c3f58d 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -1565,7 +1565,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
        WM_keymap_add_item(keymap, "SCULPT_OT_dynamic_topology_toggle", DKEY, 
KM_PRESS, KM_CTRL, 0);
 
        /* Draw Silhouette */
-       WM_keymap_add_item(keymap, "SCULPT_OT_silhouette_draw", LEFTMOUSE, 
KM_PRESS, KM_ALT, 0);
+       RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_silhouette_draw", 
LEFTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "mode", BRUSH_STROKE_NORMAL);
+       RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_silhouette_draw", 
RIGHTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "mode", BRUSH_STROKE_INVERT);
 
        /* Dynamic-topology detail size
         * 
diff --git a/source/blender/editors/sculpt_paint/sculpt.c 
b/source/blender/editors/sculpt_paint/sculpt.c
index 1831faf014c..39a1255a140 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -260,6 +260,7 @@ typedef struct SilhouetteData {
        Scene *scene;
 
        float add_col[3];               /* preview color */
+       float sub_col[3];
        float last_mouse_pos[2];
 
        SilhouetteState state;  /* Operator state */
@@ -5270,6 +5271,10 @@ static SilhouetteData *silhouette_data_new(bContext *C)
        sil->add_col[1] = 0.39;
        sil->add_col[2] = 0.39;
 
+       sil->sub_col[0] = 0.39; /* subtract mode color is light blue */
+       sil->sub_col[1] = 0.39;
+       sil->sub_col[2] = 1.00;
+
        /*Load RNA Data if present */
        sil->smoothness = sd->silhouette_smoothness / 100.0f;
        sil->depth = sd->silhouette_depth;
@@ -9253,6 +9258,7 @@ static int sculpt_silhouette_modal(bContext *C, 
wmOperator *op, const wmEvent *e
        SilhouetteData *sil = op->customdata;
        copy_v2_fl2(mouse, event->mval[0], event->mval[1]);
        printf(".");
+
        if (event->val == KM_RELEASE) {
                sculpt_silhouette_clean_draw(C, op);
                if (sil->state == SIL_DRAWING) {
@@ -9287,7 +9293,11 @@ static void sculpt_silhouette_draw(const bContext 
*UNUSED(C),struct ARegion *UNU
        glEnable(GL_LINE_SMOOTH);
 
        /* set brush color */
-       glColor4f(sil->add_col[0],sil->add_col[1],sil->add_col[2], 0.2f);
+       if (!sil->do_subtract) {
+               glColor4f(sil->add_col[0], sil->add_col[1], sil->add_col[2], 
0.2f);
+       } else {
+               glColor4f(sil->sub_col[0], sil->sub_col[1], sil->sub_col[2], 
0.2f);
+       }
 
        if (stroke->points) {
                glBegin(GL_POLYGON);
@@ -9307,11 +9317,15 @@ static int sculpt_silhouette_invoke(bContext *C, 
wmOperator *op, const wmEvent *
        printf("Drawing Silhouette\n");
 
        SilhouetteData *sil_data;
+       int mode;
 
        sil_data = silhouette_data_new(C);
 
        op->customdata = sil_data;
 
+       mode = RNA_enum_get(op->ptr, "mode");
+       sil_data->do_subtract = mode == BRUSH_STROKE_INVERT;
+
        /* Tag for UI to be drawn */
        ED_region_tag_redraw(sil_data->ar);
 
@@ -9344,6 +9358,8 @@ static void SCULPT_OT_silhouette_draw(wmOperatorType *ot)
        ot->poll = sculpt_silhouette_poll;
        ot->cancel = sculpt_silhouette_stroke_done;
 
+       paint_stroke_operator_properties(ot);
+
        /* flags */
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to