Revision: 35409
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35409
Author:   nazgul
Date:     2011-03-08 19:52:35 +0000 (Tue, 08 Mar 2011)
Log Message:
-----------
Fix #26408: [texture paint] brush spacing

Implemented non-spacing strokes (which are making paint step at each
mouse-move event).

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/brush.c

Modified: trunk/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/brush.c      2011-03-08 
16:52:10 UTC (rev 35408)
+++ trunk/blender/source/blender/blenkernel/intern/brush.c      2011-03-08 
19:52:35 UTC (rev 35409)
@@ -1018,29 +1018,42 @@
                len= normalize_v2(dmousepos);
                painter->accumdistance += len;
 
-               /* do paint op over unpainted distance */
-               while ((len > 0.0f) && (painter->accumdistance >= spacing)) {
-                       step= spacing - startdistance;
-                       paintpos[0]= painter->lastmousepos[0] + 
dmousepos[0]*step;
-                       paintpos[1]= painter->lastmousepos[1] + 
dmousepos[1]*step;
+               if (brush->flag & BRUSH_SPACE) {
+                       /* do paint op over unpainted distance */
+                       while ((len > 0.0f) && (painter->accumdistance >= 
spacing)) {
+                               step= spacing - startdistance;
+                               paintpos[0]= painter->lastmousepos[0] + 
dmousepos[0]*step;
+                               paintpos[1]= painter->lastmousepos[1] + 
dmousepos[1]*step;
 
-                       t = step/len;
-                       press= (1.0f-t)*painter->lastpressure + t*pressure;
-                       brush_apply_pressure(painter, brush, press);
-                       spacing= MAX2(1.0f, radius)*brush->spacing*0.01f;
+                               t = step/len;
+                               press= (1.0f-t)*painter->lastpressure + 
t*pressure;
+                               brush_apply_pressure(painter, brush, press);
+                               spacing= MAX2(1.0f, 
radius)*brush->spacing*0.01f;
 
-                       brush_jitter_pos(brush, paintpos, finalpos);
+                               brush_jitter_pos(brush, paintpos, finalpos);
 
+                               if (painter->cache.enabled)
+                                       brush_painter_refresh_cache(painter, 
finalpos);
+
+                               totpaintops +=
+                                       func(user, painter->cache.ibuf, 
painter->lastpaintpos, finalpos);
+
+                               painter->lastpaintpos[0]= paintpos[0];
+                               painter->lastpaintpos[1]= paintpos[1];
+                               painter->accumdistance -= spacing;
+                               startdistance -= spacing;
+                       }
+               } else {
+                       brush_jitter_pos(brush, pos, finalpos);
+
                        if (painter->cache.enabled)
                                brush_painter_refresh_cache(painter, finalpos);
 
-                       totpaintops +=
-                               func(user, painter->cache.ibuf, 
painter->lastpaintpos, finalpos);
+                       totpaintops += func(user, painter->cache.ibuf, pos, 
finalpos);
 
-                       painter->lastpaintpos[0]= paintpos[0];
-                       painter->lastpaintpos[1]= paintpos[1];
-                       painter->accumdistance -= spacing;
-                       startdistance -= spacing;
+                       painter->lastpaintpos[0]= pos[0];
+                       painter->lastpaintpos[1]= pos[1];
+                       painter->accumdistance= 0;
                }
 
                /* do airbrush paint ops, based on the number of paint ops left 
over

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

Reply via email to