From 86e7392e7a933a24af4b2ba3b6a3b9c19a80ca9b Mon Sep 17 00:00:00 2001 From: Johnny on Flame Date: Fri, 25 Jan 2013 23:17:55 -0200 Subject: [PATCH] A few fixes + boundary checks --- libs/video/targets/joy.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libs/video/targets/joy.c b/libs/video/targets/joy.c index 5276c0005..d6e07c926 100644 --- a/libs/video/targets/joy.c +++ b/libs/video/targets/joy.c @@ -128,18 +128,18 @@ JOY_Move (void) if (abs(ja->offset) + abs(ja->current) < abs(ja->offset) + abs(ja->deadzone)) ja->current = -ja->offset; - value = amp * ja->amp * (ja->offset + ja->current * pre * ja->pre_amp) / 120.0f; + value = amp * ja->amp * (ja->offset + ja->current * pre * ja->pre_amp) / 100.0f; switch (ja->dest) { case js_none: // ignore axis break; case js_position: if (ja->current) - viewdelta.position[ja->axis] += value; + viewdelta.position[(ja->axis) ? 2 : 0] += value; break; case js_angles: if (ja->current) - viewdelta.angles[ja->axis] -= value; + viewdelta.angles[(ja->axis) ? 1 : 0] -= value; break; case js_button: joy_check_axis_buttons (ja, value); @@ -305,6 +305,10 @@ in_joy_f (void) case js_type: joy_axes[ax].dest = JOY_GetDest_i (Cmd_Argv(i++)); joy_axes[ax].axis = strtol (Cmd_Argv(i++), NULL, 10); + if (joy_axes[ax].axis > 1 || joy_axes[ax].axis < 0) { + joy_axes[ax].axis = 0; + Sys_Printf("Invalid axis value."); + } break; case js_axis_button: break; @@ -328,6 +332,14 @@ JOY_Init_Cvars (void) joyamp_f, "Joystick pre-amplification"); Cmd_AddCommand("in_joy", in_joy_f, "Configures the joystick behaviour"); + int i; + for (i=0;i