diff options
author | Sergeanur <s.anureev@yandex.ua> | 2020-03-28 04:53:42 +0200 |
---|---|---|
committer | Sergeanur <s.anureev@yandex.ua> | 2020-03-28 04:53:42 +0200 |
commit | c953230237d3ac09b9e3fbfaf19b204f0cc568f1 (patch) | |
tree | b42ccf20e3d12d2714464ba34b0c781b5827fe19 /src | |
parent | e7c18fc17f82c40e937367726e07a58d5d4d7bce (diff) |
Set Xinput version to 9.1.0 + vibration set
Diffstat (limited to 'src')
-rw-r--r-- | src/core/Pad.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 9a911aa4..87f45b9f 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -7,7 +7,7 @@ #include "common.h" #ifdef XINPUT #include <Xinput.h> -#pragma comment( lib, "Xinput.lib" ) +#pragma comment( lib, "Xinput9_1_0.lib" ) #endif #include "patcher.h" #include "Pad.h" @@ -590,6 +590,24 @@ void CPad::AffectFromXinput(uint32 pad) PCTempJoyState.RightStickX = (int32)(rx * 128.0f); PCTempJoyState.RightStickY = (int32)(ry * 128.0f); } + + XINPUT_VIBRATION VibrationState; + + memset(&VibrationState, 0, sizeof(XINPUT_VIBRATION)); + + uint16 iLeftMotor = (uint16)((float)ShakeFreq / 255.0f * (float)0xffff); + uint16 iRightMotor = (uint16)((float)ShakeFreq / 255.0f * (float)0xffff); + + if (ShakeDur < CTimer::GetTimeStepInMilliseconds()) + ShakeDur = 0; + else + ShakeDur -= CTimer::GetTimeStepInMilliseconds(); + if (ShakeDur == 0) ShakeFreq = 0; + + VibrationState.wLeftMotorSpeed = iLeftMotor; + VibrationState.wRightMotorSpeed = iRightMotor; + + XInputSetState(pad, &VibrationState); } } #endif @@ -617,6 +635,7 @@ void CPad::UpdatePads(void) if ( bUpdate ) { GetPad(0)->Update(0); + GetPad(1)->Update(0); } #if defined(MASTER) && !defined(XINPUT) |