1
0
Fork 0

Some joystick tweaks by Norman Vine.

This commit is contained in:
curt 1999-01-19 17:52:30 +00:00
parent 3e18bab646
commit de73ec942c

View file

@ -55,14 +55,20 @@
#elif defined( ENABLE_GLUT_JOYSTICK ) #elif defined( ENABLE_GLUT_JOYSTICK )
// Do we want these user settable ??
static float joy_scale = 1./1000;
// play with following to get your desired sensitivity
static int x_dead_zone = 50;
static int y_dead_zone = 2*x_dead_zone;
// Joystick support using glut -- William Riley -- riley@technologist.com // Joystick support using glut -- William Riley -- riley@technologist.com
// Joystick fixed values for calibration and scaling // Joystick fixed values for calibration and scaling
static int joy_x_min=1000, /* joy_x_ctr=0, */ joy_x_max=-1000; static float joy_x_max = joy_scale;
static int joy_y_min=1000, /* joy_y_ctr=0, */ joy_y_max=-1000; static float joy_y_max = joy_scale;
static int joy_z_min = 1000, /* joy_z_ctr=0, */ joy_z_max = -1000; static int joy_z_min = 1000, /* joy_z_ctr=0, */ joy_z_max = -1000;
static int joy_x_dead_min=100, joy_x_dead_max=-100;
static int joy_y_dead_min=100, joy_y_dead_max=-100;
static int joy_z_dead_min = 100, joy_z_dead_max = -100; static int joy_z_dead_min = 100, joy_z_dead_max = -100;
#else #else
@ -77,32 +83,32 @@
// passes them to the necessary aircraft control functions // passes them to the necessary aircraft control functions
void joystick(unsigned int buttonMask, int js_x, int js_y, int js_z) void joystick(unsigned int buttonMask, int js_x, int js_y, int js_z)
{ {
double joy_x, joy_y, joy_z; float joy_x, joy_y, joy_z;
// adjust the values to fgfs's scale and allow a 'dead zone' to // adjust the values to fgfs's scale and allow a 'dead zone' to
// reduce jitter code adapted from joystick.c by Michele // reduce jitter code adapted from joystick.c by Michele
// F. America - nomimarketing@mail.telepac.pt // F. America - nomimarketing@mail.telepac.pt
if( js_x >= joy_x_dead_min && js_x <= joy_x_dead_max ) {
if( js_x > -x_dead_zone && js_x < x_dead_zone) {
joy_x = 0.0; joy_x = 0.0;
} else { } else {
joy_x = (double)js_x/(double)(joy_x_max-joy_x_min); joy_x = js_x * joy_scale;
} }
if( js_y >= joy_y_dead_min && js_y <= joy_y_dead_max ) {
if( js_y > -y_dead_zone && js_y < y_dead_zone) {
joy_y = 0.0; joy_y = 0.0;
} else { } else {
joy_y = (double)js_y/(double)(joy_y_max-joy_y_min); joy_y = js_y * joy_scale;
} }
if( js_z >= joy_z_dead_min && js_z <= joy_z_dead_max ) { if( js_z >= joy_z_dead_min && js_z <= joy_z_dead_max ) {
joy_z = 0.0; joy_z = 0.0;
} else {
joy_z = (double)js_z/(double)(joy_z_max-joy_z_min);
} }
// Scale the values up for full range of motion joy_z = (float)js_z / (float)(joy_z_max - joy_z_min);
joy_x *= 2.0;
joy_y *= 2.0;
joy_z = (((joy_z*2.0)+1.0)/2); joy_z = (((joy_z*2.0)+1.0)/2);
// Pass the values to the control routines // Pass the values to the control routines
controls.set_elevator( joy_y ); controls.set_elevator( -joy_y );
controls.set_aileron( -joy_x ); controls.set_aileron( joy_x );
controls.set_throttle( FGControls::ALL_ENGINES, joy_z ); controls.set_throttle( FGControls::ALL_ENGINES, joy_z );
} }
@ -191,6 +197,9 @@ int fgJoystickRead( void ) {
// $Log$ // $Log$
// Revision 1.7 1999/01/19 17:52:30 curt
// Some joystick tweaks by Norman Vine.
//
// Revision 1.6 1998/12/05 16:13:16 curt // Revision 1.6 1998/12/05 16:13:16 curt
// Renamed class fgCONTROLS to class FGControls. // Renamed class fgCONTROLS to class FGControls.
// //