FS2_Open
Open source remastering of the Freespace 2 engine
trackirpublic.h
Go to the documentation of this file.
1 #ifndef TRACKIRPUBLIC_H_INCLUDED_
2 #define TRACKIRPUBLIC_H_INCLUDED_
3 
5 #include "globalincs/pstypes.h"
6 
7 #define TRACKIRBRIDGEDLLNAME "scptrackir.dll"
8 
9 #define SCP_INITRESULT_SUCCESS 0
10 #define SCP_INITRESULT_BADKEY 1
11 #define SCP_INITRESULT_BADPATH 2
12 #define SCP_INITRESULT_PATHTOOLONG 3
13 #define SCP_INITRESULT_NODLL 4
14 #define SCP_INITRESULT_BADSIGNATURE 5
15 #define SCP_INITRESULT_UNABLETOREGISTER 6
16 #define SCP_INITRESULT_BADDATAFIELDS 7
17 #define SCP_INITRESULT_BADREGISTRATION 8
18 #define SCP_INITRESULT_BADTRANSMISSION 9
19 
20 /* Exported functions */
21 /* HWND comes from externalcode.h */
22 /* These are function pointer prototypes provided for library loading */
23 
24 /* Only one function doesn't return an int or a float */
25 typedef int ( SCP_EXT_CALLCONV *SCPTRACKIR_PFINIT )( HWND );
26 
27 /* All other trackir functions return an int or a float
28  * and take no parameters
29  */
30 typedef int ( SCP_EXT_CALLCONV *SCPTRACKIR_PFINTVOID )( );
31 typedef float ( SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID )( );
32 
34 {
35 public:
37  {
38  /* Load the DLL and functions
39  * If this is done globally, we'll be found by MSPDBDEBUGGING :)
40  */
41 
42  Reset( );
43 
45  return;
46 
47  m_Init = (SCPTRACKIR_PFINIT)LoadFunction( "SCPTIR_Init" );
48  m_Close = (SCPTRACKIR_PFINTVOID)LoadFunction( "SCPTIR_Close" );
49  m_Query = (SCPTRACKIR_PFINTVOID)LoadFunction( "SCPTIR_Query" );
50 
51  m_GetX = (SCPTRACKIR_PFFLOATVOID)LoadFunction( "SCPTIR_GetX" );
52  m_GetY = (SCPTRACKIR_PFFLOATVOID)LoadFunction( "SCPTIR_GetY" );
53  m_GetZ = (SCPTRACKIR_PFFLOATVOID)LoadFunction( "SCPTIR_GetZ" );
54  m_GetRoll = (SCPTRACKIR_PFFLOATVOID)LoadFunction( "SCPTIR_GetRoll" );
55  m_GetPitch = (SCPTRACKIR_PFFLOATVOID)LoadFunction( "SCPTIR_GetPitch" );
56  m_GetYaw = (SCPTRACKIR_PFFLOATVOID)LoadFunction( "SCPTIR_GetYaw" );
57  m_enabled = true;
58  }
59 
60  bool Enabled( )
61  {
62  return m_enabled;
63  }
64 
65  virtual ~TrackIRDLL( )
66  {
67  /* Prevent further use of the DLL */
68  Reset( );
69  }
70 
71  void Reset( )
72  {
73  m_Init = NULL;
74  m_Close = NULL;
75  m_Query = NULL;
76  m_GetX = NULL;
77  m_GetY = NULL;
78  m_GetZ = NULL;
79  m_GetPitch = NULL;
80  m_GetRoll = NULL;
81  m_GetYaw = NULL;
82  m_enabled = false;
83  }
84 
85  /* Returns 0 on success */
86  int Init( HWND hwnd )
87  {
88  if ( m_Init )
89  return m_Init( hwnd );
90  return 0;
91  }
92 
93  int Close( )
94  {
95  if ( m_Close )
96  return m_Close( );
97  return 0;
98  }
99 
100  int Query( )
101  {
102  if ( m_Query )
103  return m_Query( );
104  return 0;
105  }
106 
107 
108  float GetX( )
109  {
110  if ( m_GetX )
111  return m_GetX( );
112  return 0.0f;
113  }
114 
115  float GetY( )
116  {
117  if ( m_GetY )
118  return m_GetY( );
119  return 0.0f;
120  }
121 
122  float GetZ( )
123  {
124  if ( m_GetZ )
125  return m_GetZ( );
126  return 0.0f;
127  }
128 
129  float GetPitch( )
130  {
131  if ( m_GetPitch )
132  return m_GetPitch( );
133  return 0.0f;
134  }
135 
136  float GetRoll( )
137  {
138  if ( m_GetRoll )
139  return m_GetRoll( );
140  return 0.0f;
141  }
142 
143  float GetYaw( )
144  {
145  if ( m_GetYaw )
146  return m_GetYaw( );
147  return 0.0f;
148  }
149 private:
150  /* Functions */
151  SCPTRACKIR_PFINIT m_Init;
152  SCPTRACKIR_PFINTVOID m_Close;
153  SCPTRACKIR_PFINTVOID m_Query;
154 
155  SCPTRACKIR_PFFLOATVOID m_GetX;
156  SCPTRACKIR_PFFLOATVOID m_GetY;
157  SCPTRACKIR_PFFLOATVOID m_GetZ;
158  SCPTRACKIR_PFFLOATVOID m_GetPitch;
159  SCPTRACKIR_PFFLOATVOID m_GetRoll;
160  SCPTRACKIR_PFFLOATVOID m_GetYaw;
161 
162  bool m_enabled;
163 };
164 
165 /* Added to trackirpublic.h */
166 #ifndef SCPDLL_EXTERNAL_LIB
168 #endif
169 
170 #endif /* TRACKIRPUBLIC_H_INCLUDED_ */
void * HWND
Definition: config.h:104
float GetRoll()
float GetZ()
void Reset()
Definition: trackirpublic.h:71
int Init(HWND hwnd)
Definition: trackirpublic.h:86
typedef int(SCP_EXT_CALLCONV *SCPTRACKIR_PFINIT)(HWND)
float GetX()
BOOL LoadExternal(const char *externlib)
Definition: externalcode.h:33
void * LoadFunction(const char *functionname)
Definition: externalcode.h:48
float GetYaw()
TrackIRDLL gTirDll_TrackIR
float GetY()
typedef float(SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID)()
#define TRACKIRBRIDGEDLLNAME
Definition: trackirpublic.h:7
float GetPitch()
bool Enabled()
Definition: trackirpublic.h:60
#define SCP_EXT_CALLCONV
Definition: externalcode.h:78
virtual ~TrackIRDLL()
Definition: trackirpublic.h:65