[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