[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52024] trunk/blender/source/blender/ editors/transform: Option for shrink-fatten to maintain shell thickness ( hold Alt).
Campbell Barton
ideasman42 at gmail.com
Fri Nov 9 06:37:40 CET 2012
Revision: 52024
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52024
Author: campbellbarton
Date: 2012-11-09 05:37:36 +0000 (Fri, 09 Nov 2012)
Log Message:
-----------
Option for shrink-fatten to maintain shell thickness (hold Alt).
Modified Paths:
--------------
trunk/blender/source/blender/editors/transform/transform.c
trunk/blender/source/blender/editors/transform/transform_conversions.c
Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c 2012-11-09 04:20:17 UTC (rev 52023)
+++ trunk/blender/source/blender/editors/transform/transform.c 2012-11-09 05:37:36 UTC (rev 52024)
@@ -1223,8 +1223,10 @@
break;
case LEFTALTKEY:
case RIGHTALTKEY:
- if (t->spacetype == SPACE_SEQ)
+ if (ELEM(t->spacetype ,SPACE_SEQ, SPACE_VIEW3D)) {
t->flag |= T_ALT_TRANSFORM;
+ t->redraw |= TREDRAW_HARD;
+ }
break;
default:
@@ -1262,8 +1264,10 @@
// break;
case LEFTALTKEY:
case RIGHTALTKEY:
- if (t->spacetype == SPACE_SEQ)
+ if (ELEM(t->spacetype, SPACE_SEQ, SPACE_VIEW3D)) {
t->flag &= ~T_ALT_TRANSFORM;
+ t->redraw |= TREDRAW_HARD;
+ }
break;
default:
@@ -3947,10 +3951,8 @@
}
-
int ShrinkFatten(TransInfo *t, const int UNUSED(mval[2]))
{
- float vec[3];
float distance;
int i;
char str[64];
@@ -3978,17 +3980,20 @@
t->values[0] = -distance;
for (i = 0; i < t->total; i++, td++) {
+ float tdistance; /* temp dist */
if (td->flag & TD_NOACTION)
break;
if (td->flag & TD_SKIP)
continue;
- copy_v3_v3(vec, td->axismtx[2]);
- mul_v3_fl(vec, distance);
- mul_v3_fl(vec, td->factor);
+ /* get the final offset */
+ tdistance = distance * td->factor;
+ if (td->ext && (t->flag & T_ALT_TRANSFORM)) {
+ tdistance *= td->ext->isize[0]; /* shell factor */
+ }
- add_v3_v3v3(td->loc, td->iloc, vec);
+ madd_v3_v3v3fl(td->loc, td->iloc, td->axismtx[2], tdistance);
}
recalcData(t);
Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c 2012-11-09 04:20:17 UTC (rev 52023)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c 2012-11-09 05:37:36 UTC (rev 52024)
@@ -1917,6 +1917,10 @@
tx->size = vs->radius;
td->val = vs->radius;
}
+ else if (t->mode == TFM_SHRINKFATTEN) {
+ td->ext = tx;
+ tx->isize[0] = BM_vert_calc_shell_factor(eve);
+ }
}
static void createTransEditVerts(TransInfo *t)
@@ -2029,7 +2033,11 @@
else t->total = countsel;
tob = t->data = MEM_callocN(t->total * sizeof(TransData), "TransObData(Mesh EditMode)");
- if (t->mode == TFM_SKIN_RESIZE) {
+ if (ELEM(t->mode, TFM_SKIN_RESIZE, TFM_SHRINKFATTEN)) {
+ /* warning, this is overkill, we only need 2 extra floats,
+ * but this stores loads of extra stuff, for TFM_SHRINKFATTEN its even more overkill
+ * since we may not use the 'alt' transform mode to maintain shell thickness,
+ * but with generic transform code its hard to lazy init vars */
tx = t->ext = MEM_callocN(t->total * sizeof(TransDataExtension),
"TransObData ext");
}
More information about the Bf-blender-cvs
mailing list