1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
#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)
{
SDL_SysWMinfo info;
SDL_VERSION(&info.version); // initialize info structure with SDL version info
if (SDL_GetWindowWMInfo(window, &info))
{ // the call returns true on success
// success
return m_Init(info.info.win.window);
}
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;
}
|