Revision: 43406
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43406
Author:   nicholasbishop
Date:     2012-01-15 23:43:54 +0000 (Sun, 15 Jan 2012)
Log Message:
-----------
Minor sculpt/paint cleanups.

Added some comments, constified a param, and moved a couple things
around.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/sculpt_paint/paint_intern.h
    trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_intern.h
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_intern.h    
2012-01-15 23:13:12 UTC (rev 43405)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_intern.h    
2012-01-15 23:43:54 UTC (rev 43406)
@@ -126,7 +126,7 @@
                                                          const struct rcti 
*screen_rect);
 
 void projectf(struct bglMats *mats, const float v[3], float p[2]);
-float paint_calc_object_space_radius(struct ViewContext *vc, float center[3], 
float pixel_radius);
+float paint_calc_object_space_radius(struct ViewContext *vc, const float 
center[3], float pixel_radius);
 float paint_get_tex_pixel(struct Brush* br, float u, float v);
 int imapaint_pick_face(struct ViewContext *vc, struct Mesh *me, const int 
mval[2], unsigned int *index);
 void imapaint_pick_uv(struct Scene *scene, struct Object *ob, unsigned int 
faceindex, const int xy[2], float uv[2]);

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c    
2012-01-15 23:13:12 UTC (rev 43405)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c    
2012-01-15 23:43:54 UTC (rev 43406)
@@ -510,31 +510,33 @@
 /* Special actions taken when paint cursor goes over mesh */
 /* TODO: sculpt only for now */
 static void paint_cursor_on_hit(Sculpt *sd, Brush *brush, ViewContext *vc,
-                               float location[3], float *visual_strength)
+                                                               const float 
location[3], float *visual_strength)
 {
        float unprojected_radius, projected_radius;
 
-       /* TODO: check whether this should really only be done when
-          brush is over mesh? */
-       if(sd->draw_pressure && brush_use_alpha_pressure(vc->scene, brush))
-               (*visual_strength) *= sd->pressure_value;
+       /* update the brush's cached 3D radius */
+       if(!brush_use_locked_size(vc->scene, brush)) {
+               /* get 2D brush radius */
+               if(sd->draw_anchored)
+                       projected_radius = sd->anchored_size;
+               else {
+                       if(brush->flag & BRUSH_ANCHORED)
+                               projected_radius = 8;
+                       else
+                               projected_radius = brush_size(vc->scene, brush);
+               }
+       
+               /* convert brush radius from 2D to 3D */
+               unprojected_radius = paint_calc_object_space_radius(vc, 
location,
+                                                                               
                                        projected_radius);
 
-       if(sd->draw_anchored)
-               projected_radius = sd->anchored_size;
-       else {
-               if(brush->flag & BRUSH_ANCHORED)
-                       projected_radius = 8;
-               else
-                       projected_radius = brush_size(vc->scene, brush);
-       }
-       unprojected_radius = paint_calc_object_space_radius(vc, location,
-                                                           projected_radius);
+               /* scale 3D brush radius by pressure */
+               if(sd->draw_pressure && brush_use_size_pressure(vc->scene, 
brush))
+                       unprojected_radius *= sd->pressure_value;
 
-       if(sd->draw_pressure && brush_use_size_pressure(vc->scene, brush))
-               unprojected_radius *= sd->pressure_value;
-
-       if(!brush_use_locked_size(vc->scene, brush))
+               /* set cached value in either Brush or UnifiedPaintSettings */
                brush_set_unprojected_radius(vc->scene, brush, 
unprojected_radius);
+       }
 }
 
 static void paint_draw_cursor(bContext *C, int x, int y, void *UNUSED(unused))
@@ -613,8 +615,13 @@
                        outline_col = brush->sub_col;
 
                /* only do if brush is over the mesh */
-               if(hit)
+               if(hit) {
+                       /* scale the alpha by pen pressure */
+                       if(sd->draw_pressure && 
brush_use_alpha_pressure(vc->scene, brush))
+                               (*visual_strength) *= sd->pressure_value;
+
                        paint_cursor_on_hit(sd, brush, &vc, location, 
&visual_strength);
+               }
 
                /* don't show effect of strength past the soft limit */
                if(visual_strength > 1)

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c     
2012-01-15 23:13:12 UTC (rev 43405)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c     
2012-01-15 23:43:54 UTC (rev 43406)
@@ -152,7 +152,7 @@
        p[1]= uy;
 }
 
-float paint_calc_object_space_radius(ViewContext *vc, float center[3],
+float paint_calc_object_space_radius(ViewContext *vc, const float center[3],
                                     float pixel_radius)
 {
        Object *ob = vc->obact;

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

Reply via email to