ControllerInterface: Don't use a minimum strength of 0.01

This commit is contained in:
Connor McLaughlin 2020-09-17 19:55:43 +10:00
parent 3096f0953f
commit 67d0bbedb1
2 changed files with 4 additions and 9 deletions

View file

@ -394,13 +394,12 @@ void SDLControllerInterface::SetControllerRumbleStrength(int controller_index, c
return;
// we'll update before this duration is elapsed
static constexpr float MIN_STRENGTH = 0.01f;
static constexpr u32 DURATION = 100000;
SDL_Haptic* haptic = static_cast<SDL_Haptic*>(it->haptic);
if (it->haptic_left_right_effect >= 0 && num_motors > 1)
{
if (strengths[0] >= MIN_STRENGTH || strengths[1] >= MIN_STRENGTH)
if (strengths[0] > 0.0f || strengths[1] > 0.0f)
{
SDL_HapticEffect ef;
ef.type = SDL_HAPTIC_LEFTRIGHT;
@ -421,7 +420,7 @@ void SDLControllerInterface::SetControllerRumbleStrength(int controller_index, c
for (u32 i = 0; i < num_motors; i++)
max_strength = std::max(max_strength, strengths[i]);
if (max_strength >= MIN_STRENGTH)
if (max_strength > 0.0f)
SDL_HapticRumblePlay(haptic, max_strength, DURATION);
else
SDL_HapticRumbleStop(haptic);

View file

@ -296,13 +296,9 @@ void XInputControllerInterface::SetControllerRumbleStrength(int controller_index
{
DebugAssert(static_cast<u32>(controller_index) < XUSER_MAX_COUNT);
// we'll update before this duration is elapsed
static constexpr float MIN_STRENGTH = 0.01f;
static constexpr u32 DURATION = 100000;
XINPUT_VIBRATION vib;
vib.wLeftMotorSpeed = (strengths[0] >= MIN_STRENGTH) ? static_cast<u16>(strengths[0] * 65535.0f) : 0;
vib.wRightMotorSpeed = (strengths[1] >= MIN_STRENGTH) ? static_cast<u16>(strengths[1] * 65535.0f) : 0;
vib.wLeftMotorSpeed = static_cast<u16>(strengths[0] * 65535.0f);
vib.wRightMotorSpeed = static_cast<u16>(strengths[1] * 65535.0f);
m_xinput_set_state(static_cast<u32>(controller_index), &vib);
}