Files
Taylor Richards 039880491a port to SDL3 (#7220)
Basic port from SDL2 to SDL3. Also updates imgui to 1.92.5.
2026-07-23 15:52:27 +02:00

132 lines
2.2 KiB
C++

#ifdef _WIN32
#include "headtracking/trackirpublic.h"
TrackIRDLL::TrackIRDLL()
{
/* Load the DLL and functions
* If this is done globally, we'll be found by MSPDBDEBUGGING :)
*/
Reset();
if (!LoadExternal(TRACKIRBRIDGEDLLNAME))
return;
m_Init = (SCPTRACKIR_PFINIT)LoadFunction("SCPTIR_Init");
m_Close = (SCPTRACKIR_PFINTVOID)LoadFunction("SCPTIR_Close");
m_Query = (SCPTRACKIR_PFINTVOID)LoadFunction("SCPTIR_Query");
m_GetX = (SCPTRACKIR_PFFLOATVOID)LoadFunction("SCPTIR_GetX");
m_GetY = (SCPTRACKIR_PFFLOATVOID)LoadFunction("SCPTIR_GetY");
m_GetZ = (SCPTRACKIR_PFFLOATVOID)LoadFunction("SCPTIR_GetZ");
m_GetRoll = (SCPTRACKIR_PFFLOATVOID)LoadFunction("SCPTIR_GetRoll");
m_GetPitch = (SCPTRACKIR_PFFLOATVOID)LoadFunction("SCPTIR_GetPitch");
m_GetYaw = (SCPTRACKIR_PFFLOATVOID)LoadFunction("SCPTIR_GetYaw");
m_enabled = true;
}
TrackIRDLL::~TrackIRDLL()
{
}
bool TrackIRDLL::Enabled() const
{
return m_enabled;
}
void TrackIRDLL::Reset()
{
m_Init = NULL;
m_Close = NULL;
m_Query = NULL;
m_GetX = NULL;
m_GetY = NULL;
m_GetZ = NULL;
m_GetPitch = NULL;
m_GetRoll = NULL;
m_GetYaw = NULL;
m_enabled = false;
}
int TrackIRDLL::Init(SDL_Window* window)
{
if (m_Init)
{
auto hwnd = static_cast<HWND>(SDL_GetPointerProperty(SDL_GetWindowProperties(window), SDL_PROP_WINDOW_WIN32_HWND_POINTER, nullptr));
if (hwnd)
{ // the call returns true on success
// success
return m_Init(hwnd);
}
else
{
// call failed
mprintf(("Couldn't get window information: %s\n", SDL_GetError()));
return 0;
}
}
return -1;
}
int TrackIRDLL::Close()
{
if (m_Close)
return m_Close();
return 0;
}
int TrackIRDLL::Query()
{
if (m_Query)
return m_Query();
return 0;
}
float TrackIRDLL::GetX() const
{
if (m_GetX)
return m_GetX();
return 0.0f;
}
float TrackIRDLL::GetY() const
{
if (m_GetY)
return m_GetY();
return 0.0f;
}
float TrackIRDLL::GetZ() const
{
if (m_GetZ)
return m_GetZ();
return 0.0f;
}
float TrackIRDLL::GetPitch() const
{
if (m_GetPitch)
return m_GetPitch();
return 0.0f;
}
float TrackIRDLL::GetRoll() const
{
if (m_GetRoll)
return m_GetRoll();
return 0.0f;
}
float TrackIRDLL::GetYaw() const
{
if (m_GetYaw)
return m_GetYaw();
return 0.0f;
}
#endif // _WIN32