TLAC: revert to old style slider emulation when not using ps4 slider input

This commit is contained in:
somewhatlurker
2020-08-14 02:20:56 +10:00
parent 90a1c8c6ec
commit 2182d68f1d
9 changed files with 71 additions and 26 deletions
@@ -2,28 +2,36 @@
namespace TLAC::Components
{
void TouchSliderState::SetSensor(int index, int value)
void TouchSliderState::SetSensor(int index, int value, SliderSensorSetMode mode)
{
if (index < 0 || index >= SLIDER_SENSORS)
return;
if (SerialState == nullptr)
return;
uint32_t* ph = SerialState->sliderSerialResponse.sensors[index].pressureHistory;
ph[3] = ph[2];
ph[2] = ph[1];
ph[1] = ph[0];
ph[0] = value;
if (mode == SENSOR_SET_MODE_RAW)
{
if (SerialState == nullptr)
return;
SerialState->sliderSerialResponse.scanMode = 1;
SerialState->sliderSerialResponse.scanCount = 1;
SerialState->sliderResponseCnt = 1;
uint32_t* ph = SerialState->sliderSerialResponse.sensors[index].pressureHistory;
ph[3] = ph[2];
ph[2] = ph[1];
ph[1] = ph[0];
ph[0] = value;
SerialState->sliderSerialResponse.scanMode = 1;
SerialState->sliderSerialResponse.scanCount = 1;
SerialState->sliderResponseCnt = 1;
}
else
{
SensorPressureLevels[index] = value;
SensorTouched[index].IsTouched = value > 0;
}
}
void TouchSliderState::ResetSensors()
void TouchSliderState::ResetSensors(SliderSensorSetMode mode)
{
for (int i = 0; i < SLIDER_SENSORS; i++)
SetSensor(i, NO_PRESSURE);
SetSensor(i, NO_PRESSURE, mode);
}
}