From 010d82e9392bd2fb5cafe6fbae03c9cdc301a2f8 Mon Sep 17 00:00:00 2001 From: Wim Vriend Date: Sat, 4 Jun 2011 12:37:46 +0000 Subject: Eagle Dynamics API implemented, added some 'nice to haves'. git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@87 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb --- FTNoIR_Protocol_Base/ftnoir_protocol_base.h | 1 + FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.cpp | 8 +++ FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.h | 1 + FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.cpp | 11 ++++- FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.h | 1 + FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.cpp | 57 ++++++++++++++++++---- FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.h | 4 ++ FTNoIR_Protocol_FT/FTTypes.h | 5 ++ FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.cpp | 8 +++ FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.h | 1 + FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.cpp | 8 +++ FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.h | 1 + FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.cpp | 35 ++++++++++--- FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.h | 5 +- FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.cpp | 9 ++++ FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.h | 1 + FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp | 8 +++ FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h | 1 + FTNoIR_Tracker_Base/ftnoir_tracker_sm_types.h | 3 ++ FTNoIR_Tracker_SM/ftnoir_tracker_faceapi.cpp | 2 +- FaceTrackNoIR.sln | 18 ++++--- FaceTrackNoIR.suo | Bin 395776 -> 417792 bytes List of compatible games.xls | Bin 29184 -> 29696 bytes List of compatible webcams.xls | Bin 21504 -> 22016 bytes 24 files changed, 162 insertions(+), 26 deletions(-) diff --git a/FTNoIR_Protocol_Base/ftnoir_protocol_base.h b/FTNoIR_Protocol_Base/ftnoir_protocol_base.h index 92372740..2dd03b82 100644 --- a/FTNoIR_Protocol_Base/ftnoir_protocol_base.h +++ b/FTNoIR_Protocol_Base/ftnoir_protocol_base.h @@ -18,6 +18,7 @@ struct IProtocol virtual void Initialize() = 0; virtual bool checkServerInstallationOK ( HANDLE handle ) = 0; virtual void sendHeadposeToGame( T6DOF *headpose ) = 0; + virtual void getNameFromGame( char *dest ) = 0; // Take care dest can handle up to 100 chars... }; // Handle type. In C++ language the iterface type is used. diff --git a/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.cpp b/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.cpp index fbf5c8d5..f799d015 100644 --- a/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.cpp +++ b/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.cpp @@ -221,6 +221,14 @@ bool FTNoIR_Protocol_FG::checkServerInstallationOK( HANDLE handle ) return true; } +// +// Return a name, if present the name from the Game, that is connected... +// +void FTNoIR_Protocol_FG::getNameFromGame( char *dest ) +{ + sprintf_s(dest, 99, "FlightGear"); + return; +} //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.h b/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.h index 45188257..63b64f16 100644 --- a/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.h +++ b/FTNoIR_Protocol_FG/FTNoIR_Protocol_FG.h @@ -50,6 +50,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: // Tracker *headTracker; // For upstream messages... diff --git a/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.cpp b/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.cpp index 6e29d45e..848d115f 100644 --- a/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.cpp +++ b/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.cpp @@ -118,7 +118,7 @@ float virtRotX; float virtRotY; float virtRotZ; - qDebug() << "FSUIPCServer::run() says: started!"; +// qDebug() << "FSUIPCServer::run() says: started!"; virtRotX = -1.0f * headpose->position.pitch; // degrees virtRotY = headpose->position.yaw; @@ -206,6 +206,15 @@ bool FTNoIR_Protocol_FSUIPC::checkServerInstallationOK( HANDLE handle ) return true; } +// +// Return a name, if present the name from the Game, that is connected... +// +void FTNoIR_Protocol_FSUIPC::getNameFromGame( char *dest ) +{ + sprintf_s(dest, 99, "FS2002/2004"); + return; +} + //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.h b/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.h index 22e5c2b7..70785fae 100644 --- a/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.h +++ b/FTNoIR_Protocol_FSUIPC/FTNoIR_Protocol_FSUIPC.h @@ -66,6 +66,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: // Private properties diff --git a/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.cpp b/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.cpp index 4d0ef950..e6100956 100644 --- a/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.cpp +++ b/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.cpp @@ -39,6 +39,7 @@ /** constructor **/ FTNoIR_Protocol_FT::FTNoIR_Protocol_FT() { + comhandle = 0; loadSettings(); ProgramName = ""; } @@ -54,7 +55,7 @@ FTNoIR_Protocol_FT::~FTNoIR_Protocol_FT() // // Free the DLL's // - FTClientLib.unload(); + //////FTClientLib.unload(); } /** helper to Auto-destruct **/ @@ -94,6 +95,9 @@ float headRotX; float headRotY; float headRotZ; +PDWORD_PTR MsgResult = 0; + + // // Scale the Raw measurements to the client measurements. // @@ -149,6 +153,19 @@ float headRotZ; //qDebug() << "FTServer says: pMemData.DataID =" << pMemData->data.DataID; //qDebug() << "FTServer says: ProgramName =" << pMemData->ProgramName; + + // + // Check if the handle that was sent to the Game, was changed (on x64, this will be done by the ED-API) + // If the "Report Program Name" command arrives (which is a '1', for now), raise the event from here! + // + if (hMainWindow != pMemData->handle) { // Handle in memory-mapping was changed! + comhandle = (__int32) pMemData->handle; // Get the command from the Game. + if (comhandle == 1) { // "Report Program Name" + SendMessageTimeout( (HWND) hMainWindow, RegisterWindowMessageA(FT_PROGRAMID), 0, 0, 0, 2000, MsgResult); + pMemData->handle = 0; // Reset the command, to enable future commands... + } + } + ReleaseMutex(hFTMutex); } @@ -198,13 +215,13 @@ bool FTNoIR_Protocol_FT::checkServerInstallationOK( HANDLE handle ) // // Load the DLL and map to the functions in it. // - FTClientLib.setFileName(aFileName); - FTClientLib.load(); - provider = (importProvider) FTClientLib.resolve("FTProvider"); - if (provider) { - pProvider = provider(); - qDebug() << "FTCheckClientDLL says: Provider =" << pProvider; - } + ////////FTClientLib.setFileName(aFileName); + ////////FTClientLib.load(); + ////////provider = (importProvider) FTClientLib.resolve("FTProvider"); + ////////if (provider) { + //////// pProvider = provider(); + //////// qDebug() << "FTCheckClientDLL says: Provider =" << pProvider; + ////////} } else { QMessageBox::information(0, "FaceTrackNoIR error", QString("Necessary file (FreeTrackClient.dll) was NOT found!\n")); @@ -249,10 +266,11 @@ bool FTNoIR_Protocol_FT::FTCreateMapping( HANDLE handle ) // hFTMemMap = OpenFileMappingA( FILE_MAP_ALL_ACCESS , false , (LPCSTR) FT_MM_DATA ); if ( ( hFTMemMap != 0 ) ) { - qDebug() << "FTCreateMapping says: FileMapping Created again:" << hFTMemMap; + qDebug() << "FTCreateMapping says: FileMapping Opened:" << hFTMemMap; pMemData = (FTMemMap *) MapViewOfFile(hFTMemMap, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(TFreeTrackData) + sizeof(hFTMemMap) + 100); if (pMemData != NULL) { pMemData->handle = handle; // The game uses the handle, to send a message that the Program-Name was set! + hMainWindow = handle; } hFTMutex = CreateMutexA(NULL, false, FREETRACK_MUTEX); } @@ -285,6 +303,27 @@ void FTNoIR_Protocol_FT::FTDestroyMapping() } +// +// Return a name, if present the name from the Game, that is connected... +// +void FTNoIR_Protocol_FT::getNameFromGame( char *dest ) +{ + sprintf_s(dest, 99, "FreeTrack interface"); + + qDebug() << "FTNoIR_Protocol_FT::getNameFromGame says: Started, pMemData = " << pMemData << ", mutex = " << hFTMutex; + + // + // Check if the pointer is OK and wait for the Mutex. + // +// if ( (pMemData != NULL) && (WaitForSingleObject(hFTMutex, 100) == WAIT_OBJECT_0) ) { + if (pMemData != NULL) { + qDebug() << "FTNoIR_Protocol_FT::getNameFromGame says: Inside MemData"; + sprintf_s(dest, 99, "%s", pMemData->ProgramName); + } + + return; +} + //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.h b/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.h index 7b23fcba..02e9525f 100644 --- a/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.h +++ b/FTNoIR_Protocol_FT/FTNoIR_Protocol_FT.h @@ -53,6 +53,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: bool FTCreateMapping(HANDLE handle); @@ -62,6 +63,9 @@ private: FTMemMap *pMemData; HANDLE hFTMutex; + HANDLE hMainWindow; // Save the handle to FaceTrackNoIR main-window + __int32 comhandle; // Handle on x32, command on x64 + // Private properties QString ProgramName; QLibrary FTClientLib; diff --git a/FTNoIR_Protocol_FT/FTTypes.h b/FTNoIR_Protocol_FT/FTTypes.h index a6dcb6c9..c83ce90d 100644 --- a/FTNoIR_Protocol_FT/FTTypes.h +++ b/FTNoIR_Protocol_FT/FTTypes.h @@ -75,7 +75,12 @@ typedef TFreeTrackData * PFreetrackData; struct FTMemMap { TFreeTrackData data; + +#ifdef WIN64 + __int32 command; +#else HANDLE handle; +#endif char ProgramName[100]; }; typedef FTMemMap * PFTMemMap; diff --git a/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.cpp b/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.cpp index 59ea086b..83b21f7b 100644 --- a/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.cpp +++ b/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.cpp @@ -339,6 +339,14 @@ void FTNoIR_Protocol_FTIR::FTIRDestroyMapping() } +// +// Return a name, if present the name from the Game, that is connected... +// +void FTNoIR_Protocol_FTIR::getNameFromGame( char *dest ) +{ + sprintf_s(dest, 99, "TIR compatible game"); + return; +} //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.h b/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.h index f1d169f7..59454e90 100644 --- a/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.h +++ b/FTNoIR_Protocol_FTIR/FTNoIR_Protocol_FTIR.h @@ -56,6 +56,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: bool FTIRCreateMapping(HANDLE handle); diff --git a/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.cpp b/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.cpp index cbd568b0..70556835 100644 --- a/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.cpp +++ b/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.cpp @@ -172,6 +172,14 @@ bool FTNoIR_Protocol_FTN::checkServerInstallationOK( HANDLE handle ) return true; } +// +// Return a name, if present the name from the Game, that is connected... +// +void FTNoIR_Protocol_FTN::getNameFromGame( char *dest ) +{ + sprintf_s(dest, 99, "FaceTrackNoIR"); + return; +} //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.h b/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.h index 22dfd748..5f8d6b10 100644 --- a/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.h +++ b/FTNoIR_Protocol_FTN/FTNoIR_Protocol_FTN.h @@ -50,6 +50,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: THeadPoseData TestData; diff --git a/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.cpp b/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.cpp index 31749b3d..2104c09f 100644 --- a/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.cpp +++ b/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.cpp @@ -40,6 +40,8 @@ FTNoIR_Protocol_MOUSE::FTNoIR_Protocol_MOUSE() prev_fMouse_X = 0.0f; prev_fMouse_Y = 0.0f; prev_fMouse_Wheel = 0.0f; + frame_delay = 0; + loadSettings(); } @@ -217,16 +219,22 @@ float fMouse_Wheel; MouseStruct.mi.dx = scale2AnalogLimits(-1.0f * fMouse_X * mouse_X_factor, -180, 180); MouseStruct.mi.dy = scale2AnalogLimits(fMouse_Y * mouse_Y_factor, -180, 180); MouseStruct.mi.mouseData = mouse_Wheel_factor * (fMouse_Wheel - prev_fMouse_Wheel); + + frame_delay = 9999; // Seems no problem with Absolute positioning break; case FTN_RELATIVE: MouseStruct.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_WHEEL; - MouseStruct.mi.dx = mouse_X_factor * (fMouse_X - prev_fMouse_X); + MouseStruct.mi.dx = -1.0f * mouse_X_factor * (fMouse_X - prev_fMouse_X); MouseStruct.mi.dy = mouse_Y_factor * (fMouse_Y - prev_fMouse_Y); - MouseStruct.mi.mouseData = mouse_Wheel_factor * (fMouse_Wheel - prev_fMouse_Wheel); + MouseStruct.mi.mouseData = - 1.0f * mouse_Wheel_factor * (fMouse_Wheel - prev_fMouse_Wheel); + + frame_delay += 1; // Add 1 to the counter + qDebug() << "sendHeadposeToGame(): FTN_RELATIVE x = " << MouseStruct.mi.dx << ", y = " << MouseStruct.mi.dy; break; default: + Mouse_Style = FTN_ABSOLUTE; // Force to a valid value... break; } @@ -234,13 +242,15 @@ float fMouse_Wheel; // Only send Input, when it has changed. // This releases the Mouse, when tracking is stopped (for a while). // - if ((prev_fMouse_X != fMouse_X) || (prev_fMouse_Y != fMouse_Y) || (prev_fMouse_Wheel != fMouse_Wheel)) { - SendInput(1, &MouseStruct, sizeof(MouseStruct)); - } + if (frame_delay > 10) { + if ((prev_fMouse_X != fMouse_X) || (prev_fMouse_Y != fMouse_Y) || (prev_fMouse_Wheel != fMouse_Wheel)) { + SendInput(1, &MouseStruct, sizeof(MouseStruct)); + } - prev_fMouse_X = fMouse_X; - prev_fMouse_Y = fMouse_Y; - prev_fMouse_Wheel = fMouse_Wheel; + prev_fMouse_X = fMouse_X; + prev_fMouse_Y = fMouse_Y; + prev_fMouse_Wheel = fMouse_Wheel; + } } // @@ -252,6 +262,15 @@ bool FTNoIR_Protocol_MOUSE::checkServerInstallationOK( HANDLE handle ) return true; } +// +// Return a name, if present the name from the Game, that is connected... +// +void FTNoIR_Protocol_MOUSE::getNameFromGame( char *dest ) +{ + sprintf_s(dest, 99, "Mouse"); + return; +} + //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.h b/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.h index b53fb3e4..ce267d87 100644 --- a/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.h +++ b/FTNoIR_Protocol_MOUSE/FTNoIR_Protocol_MOUSE.h @@ -54,7 +54,7 @@ enum FTN_AngleName { enum FTN_MouseStyle { FTN_ABSOLUTE = 0, - FTN_RELATIVE = 2 + FTN_RELATIVE = 1 }; @@ -69,6 +69,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: HANDLE h; @@ -86,6 +87,8 @@ private: float prev_fMouse_Wheel; float mouse_Wheel_factor; // Sensitivity factor + int frame_delay; // Number of frames to delay SendInput (too fast, too furious?) + long scale2AnalogLimits( float x, float min_x, float max_x ); void loadSettings(); diff --git a/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.cpp b/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.cpp index a94680a2..8a092d2e 100644 --- a/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.cpp +++ b/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.cpp @@ -195,6 +195,15 @@ bool FTNoIR_Protocol_PPJOY::checkServerInstallationOK( HANDLE handle ) return true; } +// +// Return a name, if present the name from the Game, that is connected... +// +void FTNoIR_Protocol_PPJOY::getNameFromGame( char *dest ) +{ + sprintf_s(dest, 99, "Virtual PPJoy joystick"); + return; +} + //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.h b/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.h index 8333a2ef..d1cfa05d 100644 --- a/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.h +++ b/FTNoIR_Protocol_PPJOY/FTNoIR_Protocol_PPJOY.h @@ -70,6 +70,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: HANDLE h; diff --git a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp index 014e896f..3b2e982b 100644 --- a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp +++ b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.cpp @@ -363,6 +363,14 @@ 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 ) +{ + sprintf_s(dest, 99, "FSX"); + return; +} //////////////////////////////////////////////////////////////////////////////// // Factory function that creates instances if the Protocol object. diff --git a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h index 46f1133b..1b0116e3 100644 --- a/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h +++ b/FTNoIR_Protocol_SC/FTNoIR_Protocol_SC.h @@ -87,6 +87,7 @@ public: bool checkServerInstallationOK( HANDLE handle ); void sendHeadposeToGame( T6DOF *headpose ); + void getNameFromGame( char *dest ); // Take care dest can handle up to 100 chars... private: // Private properties diff --git a/FTNoIR_Tracker_Base/ftnoir_tracker_sm_types.h b/FTNoIR_Tracker_Base/ftnoir_tracker_sm_types.h index 5f19f786..970d9fca 100644 --- a/FTNoIR_Tracker_Base/ftnoir_tracker_sm_types.h +++ b/FTNoIR_Tracker_Base/ftnoir_tracker_sm_types.h @@ -19,6 +19,8 @@ struct SMMemMap { TFaceData data; HANDLE handle; int state; + int par_val_int; // Value of parameter, indicated by 'command' + int par_val_float; }; typedef SMMemMap * PSMMemMap; @@ -26,5 +28,6 @@ enum FTNoIR_Tracker_Command { FT_SM_START = 10, FT_SM_STOP = 20, FT_SM_SHOW_CAM = 30, + FT_SM_SET_PAR_FILTER = 50, FT_SM_EXIT = 100 }; diff --git a/FTNoIR_Tracker_SM/ftnoir_tracker_faceapi.cpp b/FTNoIR_Tracker_SM/ftnoir_tracker_faceapi.cpp index 0998d90a..5cc8d885 100644 --- a/FTNoIR_Tracker_SM/ftnoir_tracker_faceapi.cpp +++ b/FTNoIR_Tracker_SM/ftnoir_tracker_faceapi.cpp @@ -293,7 +293,7 @@ void SMClientControls::Release() // void SMClientControls::Initialize(QWidget *parent) { - QPoint offsetpos(100, 100); + QPoint offsetpos(200, 200); if (parent) { this->move(parent->pos() + offsetpos); } diff --git a/FaceTrackNoIR.sln b/FaceTrackNoIR.sln index 3a1544f1..a152b815 100644 --- a/FaceTrackNoIR.sln +++ b/FaceTrackNoIR.sln @@ -1,8 +1,6 @@  Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FaceTrackNoIR", "FaceTrackNoIR\FaceTrackNoIR.vcproj", "{9DCDB5B9-941E-42F7-AF76-DF794AA3C013}" -EndProject Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "SetupFaceTrackNoIR", "SetupFaceTrackNoIR\SetupFaceTrackNoIR.vdproj", "{95D54F4D-F5E2-4DEC-B517-E32F34312C07}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FTNoIR_ProtocolTester", "FTNoIR_ProtocolTester\FTNoIR_ProtocolTester.vcproj", "{52D2A4B6-7D76-437B-AD7F-7CDB13F2D27C}" @@ -31,16 +29,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FTNoIR_Protocol_FTN", "FTNo EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FTNoIR_Protocol_MOUSE", "FTNoIR_Protocol_MOUSE\FTNoIR_Protocol_MOUSE.vcproj", "{BD90CC3A-965C-4DAF-8D3D-8AABA455BA9E}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FTNoIR_Tracker_VISAGE", "FTNoIR_Tracker_VISAGE\FTNoIR_Tracker_VISAGE.vcproj", "{D8907D63-249C-49BC-9169-34C0C8F1BD54}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FaceTrackNoIR", "FaceTrackNoIR\FaceTrackNoIR.vcproj", "{9DCDB5B9-941E-42F7-AF76-DF794AA3C013}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Debug|Win32.ActiveCfg = Debug|Win32 - {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Debug|Win32.Build.0 = Debug|Win32 - {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Release|Win32.ActiveCfg = Release|Win32 - {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Release|Win32.Build.0 = Release|Win32 {95D54F4D-F5E2-4DEC-B517-E32F34312C07}.Debug|Win32.ActiveCfg = Debug {95D54F4D-F5E2-4DEC-B517-E32F34312C07}.Release|Win32.ActiveCfg = Release {52D2A4B6-7D76-437B-AD7F-7CDB13F2D27C}.Debug|Win32.ActiveCfg = Debug|Win32 @@ -94,6 +92,14 @@ Global {BD90CC3A-965C-4DAF-8D3D-8AABA455BA9E}.Debug|Win32.Build.0 = Debug|Win32 {BD90CC3A-965C-4DAF-8D3D-8AABA455BA9E}.Release|Win32.ActiveCfg = Release|Win32 {BD90CC3A-965C-4DAF-8D3D-8AABA455BA9E}.Release|Win32.Build.0 = Release|Win32 + {D8907D63-249C-49BC-9169-34C0C8F1BD54}.Debug|Win32.ActiveCfg = Debug|Win32 + {D8907D63-249C-49BC-9169-34C0C8F1BD54}.Debug|Win32.Build.0 = Debug|Win32 + {D8907D63-249C-49BC-9169-34C0C8F1BD54}.Release|Win32.ActiveCfg = Release|Win32 + {D8907D63-249C-49BC-9169-34C0C8F1BD54}.Release|Win32.Build.0 = Release|Win32 + {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Debug|Win32.ActiveCfg = Debug|Win32 + {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Debug|Win32.Build.0 = Debug|Win32 + {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Release|Win32.ActiveCfg = Release|Win32 + {9DCDB5B9-941E-42F7-AF76-DF794AA3C013}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/FaceTrackNoIR.suo b/FaceTrackNoIR.suo index 0465c4d4..63083113 100644 Binary files a/FaceTrackNoIR.suo and b/FaceTrackNoIR.suo differ diff --git a/List of compatible games.xls b/List of compatible games.xls index c314351e..2939c072 100644 Binary files a/List of compatible games.xls and b/List of compatible games.xls differ diff --git a/List of compatible webcams.xls b/List of compatible webcams.xls index f197d8f6..06faec9f 100644 Binary files a/List of compatible webcams.xls and b/List of compatible webcams.xls differ -- cgit v1.2.3