mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-11 15:22:15 +00:00
- Added deadzone handling to SDL joystick support.
SVN r3605 (trunk)
This commit is contained in:
parent
c07eaa4d31
commit
0065c29902
2 changed files with 27 additions and 1 deletions
|
@ -493,10 +493,13 @@ void I_StartTic ()
|
||||||
I_GetEvent ();
|
I_GetEvent ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void I_ProcessJoysticks ();
|
||||||
void I_StartFrame ()
|
void I_StartFrame ()
|
||||||
{
|
{
|
||||||
if (KeySymToDIK[SDLK_BACKSPACE] == 0)
|
if (KeySymToDIK[SDLK_BACKSPACE] == 0)
|
||||||
{
|
{
|
||||||
InitKeySymMap ();
|
InitKeySymMap ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
I_ProcessJoysticks();
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,7 @@ public:
|
||||||
info.Name.Format("Axis %d", i);
|
info.Name.Format("Axis %d", i);
|
||||||
info.DeadZone = 0.0f;
|
info.DeadZone = 0.0f;
|
||||||
info.Multiplier = 1.0f;
|
info.Multiplier = 1.0f;
|
||||||
|
info.Value = 0.0;
|
||||||
if(i >= 5)
|
if(i >= 5)
|
||||||
info.GameAxis = JOYAXIS_None;
|
info.GameAxis = JOYAXIS_None;
|
||||||
else
|
else
|
||||||
|
@ -118,7 +119,16 @@ public:
|
||||||
for (int i = 0; i < GetNumAxes(); ++i)
|
for (int i = 0; i < GetNumAxes(); ++i)
|
||||||
{
|
{
|
||||||
if(Axes[i].GameAxis != JOYAXIS_None)
|
if(Axes[i].GameAxis != JOYAXIS_None)
|
||||||
axes[Axes[i].GameAxis] -= float(((double)SDL_JoystickGetAxis(Device, i)/32768.0) * Multiplier * Axes[i].Multiplier);
|
axes[Axes[i].GameAxis] -= float(Axes[i].Value * Multiplier * Axes[i].Multiplier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProcessInput()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < GetNumAxes(); ++i)
|
||||||
|
{
|
||||||
|
Axes[i].Value = SDL_JoystickGetAxis(Device, i)/32768.0;
|
||||||
|
Axes[i].Value = Joy_RemoveDeadZone(Axes[i].Value, Axes[i].DeadZone, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,6 +139,7 @@ protected:
|
||||||
float DeadZone;
|
float DeadZone;
|
||||||
float Multiplier;
|
float Multiplier;
|
||||||
EJoyAxis GameAxis;
|
EJoyAxis GameAxis;
|
||||||
|
double Value;
|
||||||
};
|
};
|
||||||
static const EJoyAxis DefaultAxes[5];
|
static const EJoyAxis DefaultAxes[5];
|
||||||
|
|
||||||
|
@ -173,6 +184,12 @@ public:
|
||||||
sticks.Push(Joysticks[i]);
|
sticks.Push(Joysticks[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProcessInput() const
|
||||||
|
{
|
||||||
|
for(unsigned int i = 0;i < Joysticks.Size();++i)
|
||||||
|
Joysticks[i]->ProcessInput();
|
||||||
|
}
|
||||||
protected:
|
protected:
|
||||||
TArray<SDLInputJoystick *> Joysticks;
|
TArray<SDLInputJoystick *> Joysticks;
|
||||||
};
|
};
|
||||||
|
@ -206,6 +223,12 @@ void I_GetAxes(float axes[NUM_JOYAXIS])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void I_ProcessJoysticks()
|
||||||
|
{
|
||||||
|
if (use_joystick)
|
||||||
|
JoystickManager->ProcessInput();
|
||||||
|
}
|
||||||
|
|
||||||
IJoystickConfig *I_UpdateDeviceList()
|
IJoystickConfig *I_UpdateDeviceList()
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in a new issue