diff options
author | Wim Vriend <facetracknoir@gmail.com> | 2012-11-16 12:00:53 +0000 |
---|---|---|
committer | Wim Vriend <facetracknoir@gmail.com> | 2012-11-16 12:00:53 +0000 |
commit | b3d3a1f1d4f9739a506990edefcd2d81502368d4 (patch) | |
tree | 3bf2d14c5294060757325d5c3d25c1713c06c714 /FTNoIR_Protocol_SC | |
parent | a04cfffdd5cf40a51a6becc3d4a09172864bf99d (diff) |
Added registerProtocol and unRegisterProtocol to the Protocol classes.
Now the Protocol Dialog can get data from the protocol, when the Tracker is running.
git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@192 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb
Diffstat (limited to 'FTNoIR_Protocol_SC')
-rw-r--r-- | FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp | 94 | ||||
-rw-r--r-- | FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h | 13 | ||||
-rw-r--r-- | FTNoIR_Protocol_SC/ftnoir_protocol_SC_dialog.cpp | 6 |
3 files changed, 59 insertions, 54 deletions
diff --git a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp index 3399955a..a612d731 100644 --- a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp +++ b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License along *
* with this program; if not, see <http://www.gnu.org/licenses/>. *
* *
-* FTNoIR_Protocol_SC FTNoIR_Protocol_SC is the Class, that communicates headpose-data *
+* FTNoIR_Protocol FTNoIR_Protocol is the Class, that communicates headpose-data *
* to games, using the SimConnect.dll. *
* SimConnect.dll is a so called 'side-by-side' assembly, so it *
* must be treated as such... *
@@ -34,27 +34,27 @@ */
#include "ftnoir_protocol_sc.h"
-importSimConnect_CameraSetRelative6DOF FTNoIR_Protocol_SC::simconnect_set6DOF;
-HANDLE FTNoIR_Protocol_SC::hSimConnect = 0; // Handle to SimConnect
+importSimConnect_CameraSetRelative6DOF FTNoIR_Protocol::simconnect_set6DOF;
+HANDLE FTNoIR_Protocol::hSimConnect = 0; // Handle to SimConnect
-float FTNoIR_Protocol_SC::virtSCPosX = 0.0f; // Headpose
-float FTNoIR_Protocol_SC::virtSCPosY = 0.0f;
-float FTNoIR_Protocol_SC::virtSCPosZ = 0.0f;
+float FTNoIR_Protocol::virtSCPosX = 0.0f; // Headpose
+float FTNoIR_Protocol::virtSCPosY = 0.0f;
+float FTNoIR_Protocol::virtSCPosZ = 0.0f;
-float FTNoIR_Protocol_SC::virtSCRotX = 0.0f;
-float FTNoIR_Protocol_SC::virtSCRotY = 0.0f;
-float FTNoIR_Protocol_SC::virtSCRotZ = 0.0f;
+float FTNoIR_Protocol::virtSCRotX = 0.0f;
+float FTNoIR_Protocol::virtSCRotY = 0.0f;
+float FTNoIR_Protocol::virtSCRotZ = 0.0f;
-float FTNoIR_Protocol_SC::prevSCPosX = 0.0f; // previous Headpose
-float FTNoIR_Protocol_SC::prevSCPosY = 0.0f;
-float FTNoIR_Protocol_SC::prevSCPosZ = 0.0f;
+float FTNoIR_Protocol::prevSCPosX = 0.0f; // previous Headpose
+float FTNoIR_Protocol::prevSCPosY = 0.0f;
+float FTNoIR_Protocol::prevSCPosZ = 0.0f;
-float FTNoIR_Protocol_SC::prevSCRotX = 0.0f;
-float FTNoIR_Protocol_SC::prevSCRotY = 0.0f;
-float FTNoIR_Protocol_SC::prevSCRotZ = 0.0f;
+float FTNoIR_Protocol::prevSCRotX = 0.0f;
+float FTNoIR_Protocol::prevSCRotY = 0.0f;
+float FTNoIR_Protocol::prevSCRotZ = 0.0f;
/** constructor **/
-FTNoIR_Protocol_SC::FTNoIR_Protocol_SC()
+FTNoIR_Protocol::FTNoIR_Protocol()
{
ProgramName = "Microsoft FSX";
blnSimConnectActive = false;
@@ -62,26 +62,26 @@ FTNoIR_Protocol_SC::FTNoIR_Protocol_SC() }
/** destructor **/
-FTNoIR_Protocol_SC::~FTNoIR_Protocol_SC()
+FTNoIR_Protocol::~FTNoIR_Protocol()
{
- qDebug() << "~FTNoIR_Protocol_SC says: inside" << FTNoIR_Protocol_SC::hSimConnect;
+ qDebug() << "~FTNoIR_Protocol says: inside" << FTNoIR_Protocol::hSimConnect;
if (hSimConnect != 0) {
- qDebug() << "~FTNoIR_Protocol_SC says: before simconnect_close";
- if (SUCCEEDED( simconnect_close( FTNoIR_Protocol_SC::hSimConnect ) ) ) {
- qDebug() << "~FTNoIR_Protocol_SC says: close SUCCEEDED";
+ qDebug() << "~FTNoIR_Protocol says: before simconnect_close";
+ if (SUCCEEDED( simconnect_close( FTNoIR_Protocol::hSimConnect ) ) ) {
+ qDebug() << "~FTNoIR_Protocol says: close SUCCEEDED";
}
}
// SCClientLib.unload(); Generates crash when tracker is ended...
}
/** helper to Auto-destruct **/
-void FTNoIR_Protocol_SC::Release()
+void FTNoIR_Protocol::Release()
{
delete this;
}
-void FTNoIR_Protocol_SC::Initialize()
+void FTNoIR_Protocol::Initialize()
{
return;
}
@@ -89,14 +89,14 @@ void FTNoIR_Protocol_SC::Initialize() //
// Load the current Settings from the currently 'active' INI-file.
//
-void FTNoIR_Protocol_SC::loadSettings() {
+void FTNoIR_Protocol::loadSettings() {
// None yet...
}
//
// Update Headpose in Game.
//
-void FTNoIR_Protocol_SC::sendHeadposeToGame( THeadPoseData *headpose, THeadPoseData *rawheadpose ) {
+void FTNoIR_Protocol::sendHeadposeToGame( THeadPoseData *headpose, THeadPoseData *rawheadpose ) {
virtSCRotX = -1.0f * headpose->pitch; // degrees
@@ -112,7 +112,7 @@ void FTNoIR_Protocol_SC::sendHeadposeToGame( THeadPoseData *headpose, THeadPoseD //
if (!blnSimConnectActive) {
if (SUCCEEDED(simconnect_open(&hSimConnect, "FaceTrackNoIR", NULL, 0, 0, 0))) {
- qDebug() << "FTNoIR_Protocol_SC::sendHeadposeToGame() says: SimConnect active!";
+ qDebug() << "FTNoIR_Protocol::sendHeadposeToGame() says: SimConnect active!";
//set up the events we want to listen for
HRESULT hr;
@@ -137,7 +137,7 @@ void FTNoIR_Protocol_SC::sendHeadposeToGame( THeadPoseData *headpose, THeadPoseD // 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() << "FTNoIR_Protocol_SC::run() says: SimConnect data written!";
+//// qDebug() << "FTNoIR_Protocol::run() says: SimConnect data written!";
//// }
// }
//
@@ -149,10 +149,10 @@ void FTNoIR_Protocol_SC::sendHeadposeToGame( THeadPoseData *headpose, THeadPoseD // prevRotZ = virtRotZ;
if SUCCEEDED(simconnect_calldispatch(hSimConnect, processNextSimconnectEvent, NULL)) {
- qDebug() << "FTNoIR_Protocol_SC::sendHeadposeToGame() says: Dispatching";
+ qDebug() << "FTNoIR_Protocol::sendHeadposeToGame() says: Dispatching";
}
else {
- qDebug() << "FTNoIR_Protocol_SC::sendHeadposeToGame() says: Error Dispatching!";
+ qDebug() << "FTNoIR_Protocol::sendHeadposeToGame() says: Error Dispatching!";
}
}
}
@@ -160,7 +160,7 @@ void FTNoIR_Protocol_SC::sendHeadposeToGame( THeadPoseData *headpose, THeadPoseD //
// Returns 'true' if all seems OK.
//
-bool FTNoIR_Protocol_SC::checkServerInstallationOK( HANDLE handle )
+bool FTNoIR_Protocol::checkServerInstallationOK( HANDLE handle )
{
QString aFileName; // File Path and Name
@@ -179,7 +179,7 @@ bool FTNoIR_Protocol_SC::checkServerInstallationOK( HANDLE handle ) QString manifest(QCoreApplication::applicationDirPath());
// manifest += "\\FaceTrackNoIR.exe";
- manifest += "\\FTNoIR_Protocol_SC.dll";
+ manifest += "\\FTNoIR_Protocol.dll";
const wchar_t * encodedName = reinterpret_cast<const wchar_t *>(manifest.utf16());
act.lpSource = encodedName;
@@ -228,17 +228,17 @@ bool FTNoIR_Protocol_SC::checkServerInstallationOK( HANDLE handle ) //
simconnect_open = (importSimConnect_Open) SCClientLib.resolve("SimConnect_Open");
if (simconnect_open == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_Open function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_Open function not found in DLL!";
return false;
}
simconnect_set6DOF = (importSimConnect_CameraSetRelative6DOF) SCClientLib.resolve("SimConnect_CameraSetRelative6DOF");
if (simconnect_set6DOF == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_CameraSetRelative6DOF function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_CameraSetRelative6DOF function not found in DLL!";
return false;
}
simconnect_close = (importSimConnect_Close) SCClientLib.resolve("SimConnect_Close");
if (simconnect_close == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_Close function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_Close function not found in DLL!";
return false;
}
@@ -246,40 +246,40 @@ bool FTNoIR_Protocol_SC::checkServerInstallationOK( HANDLE handle ) simconnect_calldispatch = (importSimConnect_CallDispatch) SCClientLib.resolve("SimConnect_CallDispatch");
if (simconnect_calldispatch == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_CallDispatch function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_CallDispatch function not found in DLL!";
return false;
}
simconnect_subscribetosystemevent = (importSimConnect_SubscribeToSystemEvent) SCClientLib.resolve("SimConnect_SubscribeToSystemEvent");
if (simconnect_subscribetosystemevent == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_SubscribeToSystemEvent function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_SubscribeToSystemEvent function not found in DLL!";
return false;
}
simconnect_mapclienteventtosimevent = (importSimConnect_MapClientEventToSimEvent) SCClientLib.resolve("SimConnect_MapClientEventToSimEvent");
if (simconnect_subscribetosystemevent == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_MapClientEventToSimEvent function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_MapClientEventToSimEvent function not found in DLL!";
return false;
}
simconnect_addclienteventtonotificationgroup = (importSimConnect_AddClientEventToNotificationGroup) SCClientLib.resolve("SimConnect_AddClientEventToNotificationGroup");
if (simconnect_subscribetosystemevent == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_AddClientEventToNotificationGroup function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_AddClientEventToNotificationGroup function not found in DLL!";
return false;
}
simconnect_setnotificationgrouppriority = (importSimConnect_SetNotificationGroupPriority) SCClientLib.resolve("SimConnect_SetNotificationGroupPriority");
if (simconnect_subscribetosystemevent == NULL) {
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect_SetNotificationGroupPriority function not found in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect_SetNotificationGroupPriority function not found in DLL!";
return false;
}
- qDebug() << "FTNoIR_Protocol_SC::checkServerInstallationOK() says: SimConnect functions resolved in DLL!";
+ qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect functions resolved in DLL!";
return true;
}
-void CALLBACK FTNoIR_Protocol_SC::processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext)
+void CALLBACK FTNoIR_Protocol::processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext)
{
// HRESULT hr;
@@ -289,7 +289,7 @@ void CALLBACK FTNoIR_Protocol_SC::processNextSimconnectEvent(SIMCONNECT_RECV* pD {
SIMCONNECT_RECV_EVENT *evt = (SIMCONNECT_RECV_EVENT*)pData;
- qDebug() << "FTNoIR_Protocol_SC::processNextSimconnectEvent() says: SimConnect active!";
+ qDebug() << "FTNoIR_Protocol::processNextSimconnectEvent() says: SimConnect active!";
//switch(evt->uEventID)
//{
// //case EVENT_CAMERA_RIGHT:
@@ -319,11 +319,11 @@ void CALLBACK FTNoIR_Protocol_SC::processNextSimconnectEvent(SIMCONNECT_RECV* pD }
case SIMCONNECT_RECV_ID_EVENT_FRAME:
{
-// qDebug() << "FTNoIR_Protocol_SC::processNextSimconnectEvent() says: Frame event!";
+// qDebug() << "FTNoIR_Protocol::processNextSimconnectEvent() says: Frame event!";
if ((prevSCPosX != virtSCPosX) || (prevSCPosY != virtSCPosY) || (prevSCPosZ != virtSCPosZ) ||
(prevSCRotX != virtSCRotX) || (prevSCRotY != virtSCRotY) || (prevSCRotZ != virtSCRotZ)) {
if (S_OK == simconnect_set6DOF(hSimConnect, virtSCPosX, virtSCPosY, virtSCPosZ, virtSCRotX, virtSCRotZ, virtSCRotY)) {
- // qDebug() << "FTNoIR_Protocol_SC::run() says: SimConnect data written!";
+ // qDebug() << "FTNoIR_Protocol::run() says: SimConnect data written!";
}
}
prevSCPosX = virtSCPosX;
@@ -353,7 +353,7 @@ void CALLBACK FTNoIR_Protocol_SC::processNextSimconnectEvent(SIMCONNECT_RECV* pD case SIMCONNECT_RECV_ID_QUIT:
{
- qDebug() << "FTNoIR_Protocol_SC::processNextSimconnectEvent() says: Quit event!";
+ qDebug() << "FTNoIR_Protocol::processNextSimconnectEvent() says: Quit event!";
// quit = 1;
break;
}
@@ -366,7 +366,7 @@ void CALLBACK FTNoIR_Protocol_SC::processNextSimconnectEvent(SIMCONNECT_RECV* pD //
// Return a name, if present the name from the Game, that is connected...
//
-void FTNoIR_Protocol_SC::getNameFromGame( char *dest )
+void FTNoIR_Protocol::getNameFromGame( char *dest )
{
sprintf_s(dest, 99, "FSX");
return;
@@ -383,5 +383,5 @@ void FTNoIR_Protocol_SC::getNameFromGame( char *dest ) FTNOIR_PROTOCOL_BASE_EXPORT IProtocolPtr __stdcall GetProtocol()
{
- return new FTNoIR_Protocol_SC;
+ return new FTNoIR_Protocol;
}
diff --git a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h index cfdde6a6..65e523ef 100644 --- a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h +++ b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h @@ -77,11 +77,11 @@ enum INPUT_ID INPUT0=0,
};
-class FTNoIR_Protocol_SC : public IProtocol
+class FTNoIR_Protocol : public IProtocol
{
public:
- FTNoIR_Protocol_SC();
- ~FTNoIR_Protocol_SC();
+ FTNoIR_Protocol();
+ ~FTNoIR_Protocol();
void Release();
void Initialize();
@@ -139,6 +139,12 @@ public: void Release(); // Member functions which are accessible from outside the DLL
void Initialize(QWidget *parent);
+ void registerProtocol(IProtocol *protocol) {
+ theProtocol = (FTNoIR_Protocol *) protocol; // Accept the pointer to the Protocol
+ };
+ void unRegisterProtocol() {
+ theProtocol = NULL; // Reset the pointer
+ };
private:
Ui::UICSCControls ui;
@@ -147,6 +153,7 @@ private: /** helper **/
bool settingsDirty;
+ FTNoIR_Protocol *theProtocol;
private slots:
void doOK();
diff --git a/FTNoIR_Protocol_SC/ftnoir_protocol_SC_dialog.cpp b/FTNoIR_Protocol_SC/ftnoir_protocol_SC_dialog.cpp index 08013486..9047fa61 100644 --- a/FTNoIR_Protocol_SC/ftnoir_protocol_SC_dialog.cpp +++ b/FTNoIR_Protocol_SC/ftnoir_protocol_SC_dialog.cpp @@ -50,10 +50,8 @@ QWidget() connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
//connect(ui.cbxSelectPPJoyNumber, SIGNAL(currentIndexChanged(int)), this, SLOT(virtualJoystickSelected( int )));
- //for (int i = 1 ; i < 17; i++) {
- // QString cbxText = QString("Virtual Joystick %1").arg(i);
- // ui.cbxSelectPPJoyNumber->addItem(QIcon("images/PPJoy.ico"), cbxText);
- //}
+ theProtocol = NULL;
+
// Load the settings from the current .INI-file
loadSettings();
}
|