summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorWim Vriend <facetracknoir@gmail.com>2010-11-26 19:55:00 +0000
committerWim Vriend <facetracknoir@gmail.com>2010-11-26 19:55:00 +0000
commit4c04337f46470180312812634beb0e39a04bcf9f (patch)
tree4cc03adabe80bf576f396659f2bef52046e30597
parentab77b86507c65c56ec8aeda181bb43cc96cebc18 (diff)
Changed update-sequence for FSX and FS2004. No data is written, if the headpose-data has not changed. This way, it is possible to use the HAT-switch, if tracking is OFF.
The FTIRServer now also starts the dummy TrackIR.exe process, which is required by some clients, like EZCA. git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@29 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb
-rw-r--r--FaceTrackNoIR.suobin269312 -> 269312 bytes
-rw-r--r--FaceTrackNoIR/FTIRServer.cpp16
-rw-r--r--FaceTrackNoIR/FTIRServer.h3
-rw-r--r--FaceTrackNoIR/SCServer.cpp25
-rw-r--r--FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.bmpbin357334 -> 0 bytes
-rw-r--r--FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.pngbin28784 -> 28783 bytes
-rw-r--r--List of compatible games.xlsbin22016 -> 22528 bytes
-rw-r--r--bin/FaceTrackNoIR.exebin708608 -> 712704 bytes
-rw-r--r--bin/smft31.dllbin10821632 -> 0 bytes
9 files changed, 41 insertions, 3 deletions
diff --git a/FaceTrackNoIR.suo b/FaceTrackNoIR.suo
index cf341606..0a316a5f 100644
--- a/FaceTrackNoIR.suo
+++ b/FaceTrackNoIR.suo
Binary files differ
diff --git a/FaceTrackNoIR/FTIRServer.cpp b/FaceTrackNoIR/FTIRServer.cpp
index 1de4ee87..5c4369b3 100644
--- a/FaceTrackNoIR/FTIRServer.cpp
+++ b/FaceTrackNoIR/FTIRServer.cpp
@@ -64,6 +64,13 @@ FTIRServer::~FTIRServer() {
FTIRClientLib.unload();
FTIRViewsLib.unload();
+ //
+ // Kill the dummy TrackIR process.
+ //
+ if (dummyTrackIR) {
+ dummyTrackIR->kill();
+ }
+
//terminates the QThread and waits for finishing the QThread
terminate();
wait();
@@ -274,6 +281,15 @@ bool FTIRServer::FTIRCheckClientDLL()
FTIRViewsLib.load();
}
+ //
+ // Start TrackIR.exe, also to support some older games and EZCA
+ // Some TrackIR clients check if a process called TrackIR.exe is running.
+ // This should do the trick
+ //
+ QString program = "TrackIR.exe";
+ dummyTrackIR = new QProcess(this);
+ dummyTrackIR->start(program);
+
} catch(...) {
settings.~QSettings();
}
diff --git a/FaceTrackNoIR/FTIRServer.h b/FaceTrackNoIR/FTIRServer.h
index 8585b30f..2ffc1653 100644
--- a/FaceTrackNoIR/FTIRServer.h
+++ b/FaceTrackNoIR/FTIRServer.h
@@ -33,7 +33,7 @@
#include <QThread>
#include <QMutex>
#include <QLibrary>
-#include <QUdpSocket>
+#include <QProcess>
typedef void (WINAPI *importSetPosition)(float x, float y, float z, float xRot, float yRot, float zRot);
typedef void (WINAPI *importTIRViewsStart)(void);
@@ -74,6 +74,7 @@ private:
QLibrary FTIRClientLib;
QLibrary FTIRViewsLib;
bool useTIRViews;
+ QProcess *dummyTrackIR;
static float scale2AnalogLimits( float x, float min_x, float max_x );
void loadSettings();
diff --git a/FaceTrackNoIR/SCServer.cpp b/FaceTrackNoIR/SCServer.cpp
index 30b0b2e9..fbbd92a3 100644
--- a/FaceTrackNoIR/SCServer.cpp
+++ b/FaceTrackNoIR/SCServer.cpp
@@ -76,6 +76,8 @@ importSimConnect_Open simconnect_open; // SimConnect function(s) in DLL
importSimConnect_Close simconnect_close;
importSimConnect_CameraSetRelative6DOF simconnect_set6DOF;
+float prevPosX, prevPosY, prevPosZ, prevRotX, prevRotY, prevRotZ;
+
//
// Get the SimConnect_Open function from the DLL and use it!
//
@@ -97,6 +99,13 @@ importSimConnect_CameraSetRelative6DOF simconnect_set6DOF;
qDebug() << "SCServer::run() says: SimConnect functions resolved in DLL!";
+ prevPosX = 0.0f;
+ prevPosY = 0.0f;
+ prevPosZ = 0.0f;
+ prevRotX = 0.0f;
+ prevRotY = 0.0f;
+ prevRotZ = 0.0f;
+
forever
{
// Check event for stop thread
@@ -122,10 +131,22 @@ importSimConnect_CameraSetRelative6DOF simconnect_set6DOF;
//
// Write the 6DOF-data to FSX
//
- if (S_OK == simconnect_set6DOF(hSimConnect, virtPosX, virtPosY, virtPosZ, virtRotX, virtRotZ, virtRotY)) {
-// qDebug() << "SCServer::run() says: SimConnect data written!";
+ // Only do this when the data has changed. This way, the HAT-switch can be used when tracking is OFF.
+ //
+ if ((prevPosX != virtPosX) || (prevPosY != virtPosY) || (prevPosZ != virtPosZ) ||
+ (prevRotX != virtRotX) || (prevRotY != virtRotY) || (prevRotZ != virtRotZ)) {
+ if (S_OK == simconnect_set6DOF(hSimConnect, virtPosX, virtPosY, virtPosZ, virtRotX, virtRotZ, virtRotY)) {
+// qDebug() << "SCServer::run() says: SimConnect data written!";
+ }
}
+ prevPosX = virtPosX;
+ prevPosY = virtPosY;
+ prevPosZ = virtPosZ;
+ prevRotX = virtRotX;
+ prevRotY = virtRotY;
+ prevRotZ = virtRotZ;
+
// just for lower cpu load
msleep(15);
yieldCurrentThread();
diff --git a/FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.bmp b/FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.bmp
deleted file mode 100644
index 53af1ef9..00000000
--- a/FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.bmp
+++ /dev/null
Binary files differ
diff --git a/FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.png b/FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.png
index 6b0e0d68..97ff1d1f 100644
--- a/FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.png
+++ b/FaceTrackNoIR/UIElements/aboutFaceTrackNoIR.png
Binary files differ
diff --git a/List of compatible games.xls b/List of compatible games.xls
index f1287b77..c34a6191 100644
--- a/List of compatible games.xls
+++ b/List of compatible games.xls
Binary files differ
diff --git a/bin/FaceTrackNoIR.exe b/bin/FaceTrackNoIR.exe
index 493ad507..4be7d84f 100644
--- a/bin/FaceTrackNoIR.exe
+++ b/bin/FaceTrackNoIR.exe
Binary files differ
diff --git a/bin/smft31.dll b/bin/smft31.dll
deleted file mode 100644
index 44bf843e..00000000
--- a/bin/smft31.dll
+++ /dev/null
Binary files differ