[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55907] trunk/blender: Texture tools robustness:

Antony Riakiotakis kalast at gmail.com
Mon Apr 8 17:42:13 CEST 2013


Revision: 55907
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55907
Author:   psy-fi
Date:     2013-04-08 15:42:13 +0000 (Mon, 08 Apr 2013)
Log Message:
-----------
Texture tools robustness:
* Pressing x or y to scale overlay immediately presents visual feedback
instead of requiring mouse motion
* Hide the ovelay icon when stencil is active since you can't deactivate
then.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py
    trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2013-04-08 15:39:38 UTC (rev 55906)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2013-04-08 15:42:13 UTC (rev 55907)
@@ -761,10 +761,12 @@
         col.label(text="Overlay:")
 
         row = col.row()
-        if brush.use_texture_overlay:
-            row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_OFF')
-        else:
-            row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_ON')
+        if tex_slot.map_mode != 'STENCIL':
+            if brush.use_texture_overlay:
+                row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_OFF')
+            else:
+                row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_ON')
+        
         sub = row.row()
         sub.prop(brush, "texture_overlay_alpha", text="Alpha")
 

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c	2013-04-08 15:39:38 UTC (rev 55906)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c	2013-04-08 15:42:13 UTC (rev 55907)
@@ -510,50 +510,53 @@
 	return OPERATOR_CANCELLED;
 }
 
+static void stencil_control_calculate(StencilControlData *scd, const int *mval)
+{
+	float mdiff[2];
+	float mvalf[2] = {mval[0], mval[1]};
+	switch (scd->mode) {
+		case STENCIL_TRANSLATE:
+			sub_v2_v2v2(mdiff, mvalf, scd->init_mouse);
+			add_v2_v2v2(scd->br->stencil_pos, scd->init_spos,
+			            mdiff);
+			break;
+		case STENCIL_SCALE:
+		{
+			float len, factor;
+			sub_v2_v2v2(mdiff, mvalf, scd->br->stencil_pos);
+			len = len_v2(mdiff);
+			factor = len / scd->lenorig;
+			copy_v2_v2(mdiff, scd->init_sdim);
+			if (scd->constrain_mode != STENCIL_CONSTRAINT_Y)
+				mdiff[0] = factor * scd->init_sdim[0];
+			if (scd->constrain_mode != STENCIL_CONSTRAINT_X)
+				mdiff[1] = factor * scd->init_sdim[1];
+			copy_v2_v2(scd->br->stencil_dimension, mdiff);
+			break;
+		}
+		case STENCIL_ROTATE:
+		{
+			float angle;
+			sub_v2_v2v2(mdiff, mvalf, scd->br->stencil_pos);
+			angle = atan2(mdiff[1], mdiff[0]);
+			angle = scd->init_rot + angle - scd->init_angle;
+			if (angle < 0.0f)
+				angle += (float)(2 * M_PI);
+			if (angle > (float)(2 * M_PI))
+				angle -= (float)(2 * M_PI);
+			scd->br->mtex.rot = angle;
+			break;
+		}
+	}
+}
+
 static int stencil_control_modal(bContext *C, wmOperator *op, const wmEvent *event)
 {
 	StencilControlData *scd = op->customdata;
 
 	switch (event->type) {
 		case MOUSEMOVE:
-			{
-				float mdiff[2];
-				float mvalf[2] = {event->mval[0], event->mval[1]};
-				switch (scd->mode) {
-					case STENCIL_TRANSLATE:
-						sub_v2_v2v2(mdiff, mvalf, scd->init_mouse);
-						add_v2_v2v2(scd->br->stencil_pos, scd->init_spos,
-						            mdiff);
-						break;
-					case STENCIL_SCALE:
-					{
-						float len, factor;
-						sub_v2_v2v2(mdiff, mvalf, scd->br->stencil_pos);
-						len = len_v2(mdiff);
-						factor = len / scd->lenorig;
-						copy_v2_v2(mdiff, scd->init_sdim);
-						if (scd->constrain_mode != STENCIL_CONSTRAINT_Y)
-							mdiff[0] = factor * scd->init_sdim[0];
-						if (scd->constrain_mode != STENCIL_CONSTRAINT_X)
-							mdiff[1] = factor * scd->init_sdim[1];
-						copy_v2_v2(scd->br->stencil_dimension, mdiff);
-						break;
-					}
-					case STENCIL_ROTATE:
-					{
-						float angle;
-						sub_v2_v2v2(mdiff, mvalf, scd->br->stencil_pos);
-						angle = atan2(mdiff[1], mdiff[0]);
-						angle = scd->init_rot + angle - scd->init_angle;
-						if (angle < 0.0f)
-							angle += (float)(2 * M_PI);
-						if (angle > (float)(2 * M_PI))
-							angle -= (float)(2 * M_PI);
-						scd->br->mtex.rot = angle;
-						break;
-					}
-				}
-			}
+			stencil_control_calculate(scd, event->mval);
 			break;
 		/* XXX hardcoded! */
 		case RIGHTMOUSE:
@@ -575,6 +578,8 @@
 					scd->constrain_mode = 0;
 				else
 					scd->constrain_mode = STENCIL_CONSTRAINT_X;
+
+				stencil_control_calculate(scd, event->mval);
 			}
 			break;
 		case YKEY:
@@ -583,6 +588,8 @@
 					scd->constrain_mode = 0;
 				else
 					scd->constrain_mode = STENCIL_CONSTRAINT_Y;
+
+				stencil_control_calculate(scd, event->mval);
 			}
 			break;
 		default:




More information about the Bf-blender-cvs mailing list