File: trackirpublic.cpp

package info (click to toggle)
freespace2 24.2.0%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 43,716 kB
  • sloc: cpp: 595,001; ansic: 21,741; python: 1,174; sh: 457; makefile: 248; xml: 181
file content (128 lines) | stat: -rw-r--r-- 2,235 bytes parent folder | download | duplicates (2)
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;
}