forked from cafeberry/4JLibs
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
570752a7a5 | ||
|
|
f85bdd8a45 |
@@ -23,6 +23,7 @@ SOFTWARE.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "INP_ForceFeedback.h"
|
#include "INP_ForceFeedback.h"
|
||||||
|
#include "INP_Main.h"
|
||||||
|
|
||||||
void CForceFeedback::Initialise(int iInputStateC, unsigned char ucMapC, unsigned char ucActionC, unsigned char ucMenuActionC)
|
void CForceFeedback::Initialise(int iInputStateC, unsigned char ucMapC, unsigned char ucActionC, unsigned char ucMenuActionC)
|
||||||
{
|
{
|
||||||
@@ -85,8 +86,8 @@ void CForceFeedback::AddRumble(unsigned int uiPad, WORD leftMotorSpeed, WORD rig
|
|||||||
QueryPerformanceCounter(&qwCurrentTime);
|
QueryPerformanceCounter(&qwCurrentTime);
|
||||||
|
|
||||||
pRumble->m_TimeLeft = (m_TicksPerSecond * fSeconds) + qwCurrentTime.QuadPart;
|
pRumble->m_TimeLeft = (m_TicksPerSecond * fSeconds) + qwCurrentTime.QuadPart;
|
||||||
pRumble->m_RumbleData.wLeftMotorSpeed = leftMotorSpeed;
|
pRumble->m_LowFreqRumble = leftMotorSpeed;
|
||||||
pRumble->m_RumbleData.wRightMotorSpeed = rightMotorSpeed;
|
pRumble->m_HighFreqRumble = rightMotorSpeed;
|
||||||
pRumble->m_Pad = uiPad;
|
pRumble->m_Pad = uiPad;
|
||||||
|
|
||||||
m_RumbleList.AddToTail(pRumble);
|
m_RumbleList.AddToTail(pRumble);
|
||||||
@@ -108,14 +109,15 @@ void CForceFeedback::Tick(void)
|
|||||||
LinkedList::_LL_NODE *pRumbleNode = m_RumbleList.m_Head;
|
LinkedList::_LL_NODE *pRumbleNode = m_RumbleList.m_Head;
|
||||||
while (pRumbleNode)
|
while (pRumbleNode)
|
||||||
{
|
{
|
||||||
if (pRumbleNode->GetDataAs<RUMBLE_EFFECT>()->m_TimeLeft <= qwCurrentTime.QuadPart)
|
RUMBLE_EFFECT *pRumble = pRumbleNode->GetDataAs<RUMBLE_EFFECT>();
|
||||||
|
SDL_Gamepad* m_pGamepad = InternalInputManager.m_Joypads[pRumble->m_Pad].m_pGamepad;
|
||||||
|
|
||||||
|
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;
|
if (m_pGamepad != nullptr) SDL_RumbleGamepad(m_pGamepad, 0, 0, 0);
|
||||||
pRumble->m_RumbleData.wRightMotorSpeed = 0;
|
|
||||||
|
|
||||||
XInputSetState(pRumble->m_Pad, &pRumble->m_RumbleData);
|
|
||||||
|
|
||||||
m_RumbleList.RemoveNode(pRumbleNode);
|
m_RumbleList.RemoveNode(pRumbleNode);
|
||||||
|
|
||||||
@@ -127,7 +129,7 @@ void CForceFeedback::Tick(void)
|
|||||||
}
|
}
|
||||||
else
|
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;
|
pRumbleNode = pRumbleNode->m_Next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ SOFTWARE.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "LinkedList.h"
|
#include "LinkedList.h"
|
||||||
|
#include "SDL3\SDL_gamepad.h"
|
||||||
|
|
||||||
#define MAX_EFFECTS 10
|
#define MAX_EFFECTS 10
|
||||||
|
|
||||||
@@ -38,9 +39,10 @@ public:
|
|||||||
|
|
||||||
struct RUMBLE_EFFECT
|
struct RUMBLE_EFFECT
|
||||||
{
|
{
|
||||||
DWORD m_Pad;
|
int m_Pad;
|
||||||
uint64_t m_TimeLeft;
|
uint64_t m_TimeLeft;
|
||||||
XINPUT_VIBRATION m_RumbleData;
|
uint16_t m_LowFreqRumble;
|
||||||
|
uint16_t m_HighFreqRumble;
|
||||||
WORD unk;
|
WORD unk;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,15 @@ void CInput::SetJoypadValues(JOYPAD *pThisPad)
|
|||||||
pThisPad->m_uiButtons |= _360_JOY_BUTTON_BACK;
|
pThisPad->m_uiButtons |= _360_JOY_BUTTON_BACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//str1k3r - Only check the touchpad if we have one
|
||||||
|
if (SDL_GetNumGamepadTouchpads(pGamePad) > 0)
|
||||||
|
{
|
||||||
|
if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_TOUCHPAD))
|
||||||
|
{
|
||||||
|
pThisPad->m_uiButtons |= _PS_JOY_BUTTON_TOUCHPAD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_LEFT_STICK))
|
if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_LEFT_STICK))
|
||||||
{
|
{
|
||||||
pThisPad->m_uiButtons |= _360_JOY_BUTTON_LTHUMB;
|
pThisPad->m_uiButtons |= _360_JOY_BUTTON_LTHUMB;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
#define MAP_STYLE_0 0
|
#define MAP_STYLE_0 0
|
||||||
#define MAP_STYLE_1 1
|
#define MAP_STYLE_1 1
|
||||||
#define MAP_STYLE_2 2
|
#define MAP_STYLE_2 2
|
||||||
@@ -36,6 +35,9 @@
|
|||||||
#define _360_JOY_BUTTON_RT 0x00400000
|
#define _360_JOY_BUTTON_RT 0x00400000
|
||||||
#define _360_JOY_BUTTON_LT 0x00800000
|
#define _360_JOY_BUTTON_LT 0x00800000
|
||||||
|
|
||||||
|
//str1k3r - DualShock 4 / DualSense Touchpad
|
||||||
|
#define _PS_JOY_BUTTON_TOUCHPAD _360_JOY_BUTTON_BACK
|
||||||
|
|
||||||
// Stick axis maps - to allow changes for SouthPaw in-game axis mapping
|
// Stick axis maps - to allow changes for SouthPaw in-game axis mapping
|
||||||
#define AXIS_MAP_LX 0
|
#define AXIS_MAP_LX 0
|
||||||
#define AXIS_MAP_LY 1
|
#define AXIS_MAP_LY 1
|
||||||
|
|||||||
Reference in New Issue
Block a user