[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24653] trunk/blender/source/blender/ editors/transform: Custom Ratio mouse input didn' t check for initialization properly, which could lead to NaN values with edge slide.
Martin Poirier
theeth at yahoo.com
Wed Nov 18 18:14:56 CET 2009
Revision: 24653
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24653
Author: theeth
Date: 2009-11-18 18:14:56 +0100 (Wed, 18 Nov 2009)
Log Message:
-----------
Custom Ratio mouse input didn't check for initialization properly, which could lead to NaN values with edge slide.
Also adding missing modal keymaps for some transform operators.
Modified Paths:
--------------
trunk/blender/source/blender/editors/transform/transform.c
trunk/blender/source/blender/editors/transform/transform_input.c
Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c 2009-11-18 17:08:29 UTC (rev 24652)
+++ trunk/blender/source/blender/editors/transform/transform.c 2009-11-18 17:14:56 UTC (rev 24653)
@@ -555,7 +555,8 @@
WM_modalkeymap_assign(keymap, "TFM_OT_shrink_fatten");
WM_modalkeymap_assign(keymap, "TFM_OT_tilt");
WM_modalkeymap_assign(keymap, "TFM_OT_trackball");
-
+ WM_modalkeymap_assign(keymap, "TFM_OT_mirror");
+ WM_modalkeymap_assign(keymap, "TFM_OT_edge_slide");
}
@@ -4445,8 +4446,9 @@
t->customFree = freeSlideVerts;
+ /* set custom point first if you want value to be initialized by init */
+ setCustomPoints(t, &t->mouse, sld->end, sld->start);
initMouseInputMode(t, &t->mouse, INPUT_CUSTOM_RATIO);
- setCustomPoints(t, &t->mouse, sld->end, sld->start);
t->idx_max = 0;
t->num.idx_max = 0;
Modified: trunk/blender/source/blender/editors/transform/transform_input.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_input.c 2009-11-18 17:08:29 UTC (rev 24652)
+++ trunk/blender/source/blender/editors/transform/transform_input.c 2009-11-18 17:14:56 UTC (rev 24653)
@@ -165,8 +165,14 @@
void setCustomPoints(TransInfo *t, MouseInput *mi, short start[2], short end[2])
{
- short *data = mi->data;
+ short *data;
+
+ if (mi->data == NULL) {
+ mi->data = MEM_callocN(sizeof(short) * 4, "custom points");
+ }
+ data = mi->data;
+
data[0] = start[0];
data[1] = start[1];
data[2] = end[0];
@@ -180,28 +186,30 @@
short *data = mi->data;
short dx, dy;
- dx = data[2] - data[0];
- dy = data[3] - data[1];
-
- length = (float)sqrtf(dx*dx + dy*dy);
-
- if (mi->precision) {
- /* deal with Shift key by adding motion / 10 to motion before shift press */
- short mdx, mdy;
- mdx = (mi->precision_mval[0] + (float)(mval[0] - mi->precision_mval[0]) / 10.0f) - data[2];
- mdy = (mi->precision_mval[1] + (float)(mval[1] - mi->precision_mval[1]) / 10.0f) - data[3];
+ if (data) {
+ dx = data[2] - data[0];
+ dy = data[3] - data[1];
- distance = (mdx*dx + mdy*dy) / length;
- }
- else {
- short mdx, mdy;
- mdx = mval[0] - data[2];
- mdy = mval[1] - data[3];
+ length = (float)sqrtf(dx*dx + dy*dy);
- distance = (mdx*dx + mdy*dy) / length;
+ if (mi->precision) {
+ /* deal with Shift key by adding motion / 10 to motion before shift press */
+ short mdx, mdy;
+ mdx = (mi->precision_mval[0] + (float)(mval[0] - mi->precision_mval[0]) / 10.0f) - data[2];
+ mdy = (mi->precision_mval[1] + (float)(mval[1] - mi->precision_mval[1]) / 10.0f) - data[3];
+
+ distance = (mdx*dx + mdy*dy) / length;
+ }
+ else {
+ short mdx, mdy;
+ mdx = mval[0] - data[2];
+ mdy = mval[1] - data[3];
+
+ distance = (mdx*dx + mdy*dy) / length;
+ }
+
+ output[0] = distance / length;
}
-
- output[0] = distance / length;
}
void InputAngle(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
@@ -335,7 +343,6 @@
case INPUT_CUSTOM_RATIO:
mi->apply = InputCustomRatio;
t->helpline = HLP_NONE;
- mi->data = MEM_callocN(sizeof(short) * 4, "custom points");
break;
case INPUT_NONE:
default:
More information about the Bf-blender-cvs
mailing list