Skip to content
This repository was archived by the owner on Jan 5, 2024. It is now read-only.

Commit 894fb79

Browse files
committed
remove debug prints; add release trigger threshold to debounce bad sticks
1 parent cbd5bf9 commit 894fb79

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

Managers/UInputMan.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -648,9 +648,6 @@ namespace RTE {
648648
case InputState::Pressed:
649649
return axisState == -1 && s_ChangedJoystickStates[whichJoy].m_DigitalAxis[whichAxis] < 0;
650650
case InputState::Released:
651-
if (axisState == 0 && s_ChangedJoystickStates[whichJoy].m_DigitalAxis[whichAxis] < 0) {
652-
std::cout << "Released " << whichAxis << " of " << whichJoy << std::endl;
653-
}
654651
return axisState == 0 && s_ChangedJoystickStates[whichJoy].m_DigitalAxis[whichAxis] > 0;
655652
default:
656653
RTEAbort("Undefined InputState value passed in. See InputState enumeration");
@@ -663,9 +660,6 @@ namespace RTE {
663660
case InputState::Pressed:
664661
return axisState == 1 && s_ChangedJoystickStates[whichJoy].m_DigitalAxis[whichAxis] > 0;
665662
case InputState::Released:
666-
if (axisState == 0 && s_ChangedJoystickStates[whichJoy].m_DigitalAxis[whichAxis] < 0) {
667-
std::cout << "Released " << whichAxis << " of " << whichJoy << std::endl;
668-
}
669663
return axisState == 0 && s_ChangedJoystickStates[whichJoy].m_DigitalAxis[whichAxis] < 0;
670664
default:
671665
RTEAbort("Undefined InputState value passed in. See InputState enumeration.");
@@ -1074,9 +1068,12 @@ namespace RTE {
10741068
for (size_t axis = 0; axis < s_PrevJoystickStates[i].m_DigitalAxis.size(); ++axis) {
10751069
int prevDigitalValue = s_PrevJoystickStates[i].m_DigitalAxis[axis];
10761070
int newDigitalValue = 0;
1077-
if (s_PrevJoystickStates[i].m_Axis[axis] > c_AxisDigitalThreshold) {
1071+
if (prevDigitalValue != 0 && std::abs(s_PrevJoystickStates[i].m_Axis[axis]) > c_AxisDigitalReleasedThreshold) {
1072+
newDigitalValue = prevDigitalValue;
1073+
}
1074+
if (s_PrevJoystickStates[i].m_Axis[axis] > c_AxisDigitalPressedThreshold) {
10781075
newDigitalValue = 1;
1079-
} else if (s_PrevJoystickStates[i].m_Axis[axis] < -c_AxisDigitalThreshold) {
1076+
} else if (s_PrevJoystickStates[i].m_Axis[axis] < -c_AxisDigitalPressedThreshold) {
10801077
newDigitalValue = -1;
10811078
}
10821079
s_ChangedJoystickStates[i].m_DigitalAxis[axis] = Sign(newDigitalValue - prevDigitalValue);

Managers/UInputMan.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,8 @@ namespace RTE {
712712
bool m_TrapMousePosPerPlayer[Players::MaxPlayerCount]; //!< Whether to trap the mouse position to the middle of the screen for each player during network multiplayer.
713713

714714
static constexpr double c_GamepadAxisLimit = 32767.0; //!< Maximum axis value as defined by SDL (int16 max).
715-
static constexpr int c_AxisDigitalThreshold = 8192; //!< Digital Axis threshold value as defined by allegro.
715+
static constexpr int c_AxisDigitalPressedThreshold = 8192; //!< Digital Axis threshold value as defined by allegro.
716+
static constexpr int c_AxisDigitalReleasedThreshold = c_AxisDigitalPressedThreshold - 100; //!< Digital Axis release threshold, to debounce values.
716717

717718
#pragma region Input State Handling
718719
/// <summary>

0 commit comments

Comments
 (0)