Commit: 8014180720d81131f2ca4b541142816f459a5f3c
Author: Campbell Barton
Date:   Fri Oct 30 09:53:27 2015 +1100
Branches: master
https://developer.blender.org/rB8014180720d81131f2ca4b541142816f459a5f3c

Vertex Paint: orbit last stroke support

This option works for all paint modes now.

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

M       source/blender/editors/sculpt_paint/paint_vertex.c
M       source/blender/editors/space_view3d/view3d_edit.c

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

diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c 
b/source/blender/editors/sculpt_paint/paint_vertex.c
index 8daad9d..15627c6 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -91,6 +91,19 @@ static bool vertex_paint_use_fast_update_check(Object *ob)
        return false;
 }
 
+static void paint_last_stroke_update(Scene *scene, ARegion *ar, const float 
mval[2])
+{
+       const int mval_i[2] = {mval[0], mval[1]};
+       float world[3];
+
+       if (ED_view3d_autodist_simple(ar, mval_i, world, 0, NULL)) {
+               UnifiedPaintSettings *ups = 
&scene->toolsettings->unified_paint_settings;
+               ups->average_stroke_counter++;
+               add_v3_v3(ups->average_stroke_accum, world);
+               ups->last_stroke_valid = true;
+       }
+}
+
 /* polling - retrieve whether cursor should be set or operator should be done 
*/
 
 /* Returns true if vertex paint mode is active */
@@ -2379,6 +2392,11 @@ static void wpaint_stroke_update_step(bContext *C, 
struct PaintStroke *stroke, P
 
        swap_m4m4(vc->rv3d->persmat, mat);
 
+       /* calculate pivot for rotation around seletion if needed */
+       if (U.uiflag & USER_ORBIT_SELECTION) {
+               paint_last_stroke_update(scene, vc->ar, mval);
+       }
+
        DAG_id_tag_update(ob->data, 0);
        ED_region_tag_redraw(vc->ar);
 }
@@ -2833,6 +2851,11 @@ static void vpaint_stroke_update_step(bContext *C, 
struct PaintStroke *stroke, P
                do_shared_vertexcol(me, vpd->mlooptag);
        }
 
+       /* calculate pivot for rotation around seletion if needed */
+       if (U.uiflag & USER_ORBIT_SELECTION) {
+               paint_last_stroke_update(scene, vc->ar, mval);
+       }
+
        ED_region_tag_redraw(vc->ar);
 
        if (vpd->use_fast_update == false) {
diff --git a/source/blender/editors/space_view3d/view3d_edit.c 
b/source/blender/editors/space_view3d/view3d_edit.c
index a31bc61..8f5c909 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -640,7 +640,7 @@ static bool view3d_orbit_calc_center(bContext *C, float 
r_dyn_ofs[3])
                 * center, in other cases it's not clear what rotation center 
shall be
                 * so just rotate around object origin
                 */
-               if (ob->mode & (OB_MODE_SCULPT | OB_MODE_TEXTURE_PAINT)) {
+               if (ob->mode & (OB_MODE_SCULPT | OB_MODE_TEXTURE_PAINT | 
OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) {
                        float stroke[3];
                        BKE_paint_stroke_get_average(scene, ob, stroke);
                        copy_v3_v3(lastofs, stroke);

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

Reply via email to