mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2024-12-13 21:51:09 +00:00
Support up to 16 joystick axes, select which to use with j_*_axis cvars.
This commit is contained in:
parent
76c4346463
commit
7a1efc19a4
2 changed files with 12 additions and 16 deletions
|
@ -1059,15 +1059,7 @@ NON-PORTABLE SYSTEM SERVICES
|
||||||
==============================================================
|
==============================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef enum {
|
#define MAX_JOYSTICK_AXIS 16
|
||||||
AXIS_SIDE,
|
|
||||||
AXIS_FORWARD,
|
|
||||||
AXIS_UP,
|
|
||||||
AXIS_ROLL,
|
|
||||||
AXIS_YAW,
|
|
||||||
AXIS_PITCH,
|
|
||||||
MAX_JOYSTICK_AXIS
|
|
||||||
} joystickAxis_t;
|
|
||||||
|
|
||||||
void Sys_Init (void);
|
void Sys_Init (void);
|
||||||
|
|
||||||
|
|
|
@ -561,7 +561,7 @@ struct
|
||||||
{
|
{
|
||||||
qboolean buttons[16]; // !!! FIXME: these might be too many.
|
qboolean buttons[16]; // !!! FIXME: these might be too many.
|
||||||
unsigned int oldaxes;
|
unsigned int oldaxes;
|
||||||
int oldaaxes[16];
|
int oldaaxes[MAX_JOYSTICK_AXIS];
|
||||||
unsigned int oldhats;
|
unsigned int oldhats;
|
||||||
} stick_state;
|
} stick_state;
|
||||||
|
|
||||||
|
@ -808,13 +808,12 @@ static void IN_JoyMove( void )
|
||||||
total = SDL_JoystickNumAxes(stick);
|
total = SDL_JoystickNumAxes(stick);
|
||||||
if (total > 0)
|
if (total > 0)
|
||||||
{
|
{
|
||||||
if (total > 16) total = 16;
|
if (in_joystickUseAnalog->integer)
|
||||||
for (i = 0; i < total; i++)
|
|
||||||
{
|
{
|
||||||
Sint16 axis = SDL_JoystickGetAxis(stick, i);
|
if (total > MAX_JOYSTICK_AXIS) total = MAX_JOYSTICK_AXIS;
|
||||||
|
for (i = 0; i < total; i++)
|
||||||
if (in_joystickUseAnalog->integer)
|
|
||||||
{
|
{
|
||||||
|
Sint16 axis = SDL_JoystickGetAxis(stick, i);
|
||||||
float f = ( (float) abs(axis) ) / 32767.0f;
|
float f = ( (float) abs(axis) ) / 32767.0f;
|
||||||
|
|
||||||
if( f < in_joystickThreshold->value ) axis = 0;
|
if( f < in_joystickThreshold->value ) axis = 0;
|
||||||
|
@ -825,8 +824,13 @@ static void IN_JoyMove( void )
|
||||||
stick_state.oldaaxes[i] = axis;
|
stick_state.oldaaxes[i] = axis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (total > 16) total = 16;
|
||||||
|
for (i = 0; i < total; i++)
|
||||||
{
|
{
|
||||||
|
Sint16 axis = SDL_JoystickGetAxis(stick, i);
|
||||||
float f = ( (float) axis ) / 32767.0f;
|
float f = ( (float) axis ) / 32767.0f;
|
||||||
if( f < -in_joystickThreshold->value ) {
|
if( f < -in_joystickThreshold->value ) {
|
||||||
axes |= ( 1 << ( i * 2 ) );
|
axes |= ( 1 << ( i * 2 ) );
|
||||||
|
|
Loading…
Reference in a new issue