forked from cafeberry/4JLibs
feat: SDL3 for rumble & PS touchpad thingy
This commit is contained in:
@@ -85,8 +85,8 @@ void CForceFeedback::AddRumble(unsigned int uiPad, WORD leftMotorSpeed, WORD rig
|
||||
QueryPerformanceCounter(&qwCurrentTime);
|
||||
|
||||
pRumble->m_TimeLeft = (m_TicksPerSecond * fSeconds) + qwCurrentTime.QuadPart;
|
||||
pRumble->m_RumbleData.wLeftMotorSpeed = leftMotorSpeed;
|
||||
pRumble->m_RumbleData.wRightMotorSpeed = rightMotorSpeed;
|
||||
pRumble->m_LowFreqRumble = leftMotorSpeed;
|
||||
pRumble->m_HighFreqRumble = rightMotorSpeed;
|
||||
pRumble->m_Pad = uiPad;
|
||||
|
||||
m_RumbleList.AddToTail(pRumble);
|
||||
@@ -108,14 +108,15 @@ void CForceFeedback::Tick(void)
|
||||
LinkedList::_LL_NODE *pRumbleNode = m_RumbleList.m_Head;
|
||||
while (pRumbleNode)
|
||||
{
|
||||
if (pRumbleNode->GetDataAs<RUMBLE_EFFECT>()->m_TimeLeft <= qwCurrentTime.QuadPart)
|
||||
RUMBLE_EFFECT *pRumble = pRumbleNode->GetDataAs<RUMBLE_EFFECT>();
|
||||
SDL_Gamepad* m_pGamepad = SDL_GetGamepadFromPlayerIndex(pRumble->m_Pad);
|
||||
|
||||
if (pRumble->m_TimeLeft <= qwCurrentTime.QuadPart)
|
||||
{
|
||||
RUMBLE_EFFECT *pRumble = pRumbleNode->GetDataAs<RUMBLE_EFFECT>();
|
||||
pRumble->m_LowFreqRumble = 0;
|
||||
pRumble->m_HighFreqRumble = 0;
|
||||
|
||||
pRumble->m_RumbleData.wLeftMotorSpeed = 0;
|
||||
pRumble->m_RumbleData.wRightMotorSpeed = 0;
|
||||
|
||||
XInputSetState(pRumble->m_Pad, &pRumble->m_RumbleData);
|
||||
if (m_pGamepad != nullptr) SDL_RumbleGamepad(m_pGamepad, 0, 0, 0);
|
||||
|
||||
m_RumbleList.RemoveNode(pRumbleNode);
|
||||
|
||||
@@ -127,7 +128,7 @@ void CForceFeedback::Tick(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
XInputSetState(pRumbleNode->GetDataAs<RUMBLE_EFFECT>()->m_Pad, &pRumbleNode->GetDataAs<RUMBLE_EFFECT>()->m_RumbleData);
|
||||
if (m_pGamepad != nullptr) SDL_RumbleGamepad(m_pGamepad, pRumble->m_LowFreqRumble, pRumble->m_HighFreqRumble, 30000);
|
||||
pRumbleNode = pRumbleNode->m_Next;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user