From 513d1c8521aad3cd5ba7db3b87349553a793c151 Mon Sep 17 00:00:00 2001 From: Wim Vriend Date: Sat, 12 Jun 2010 09:34:27 +0000 Subject: PPJoy working git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@11 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb --- FaceTrackNoIR.ncb | Bin 31034368 -> 31034368 bytes FaceTrackNoIR.suo | Bin 182272 -> 182784 bytes FaceTrackNoIR/FaceTrackNoIR.cpp | 2 +- FaceTrackNoIR/PPJoyServer.cpp | 23 ++-- FaceTrackNoIR/Release/BuildLog.htm | Bin 11008 -> 10992 bytes FaceTrackNoIR/Release/mt.dep | 2 +- FaceTrackNoIR/Release/vc90.idb | Bin 2624512 -> 2624512 bytes FaceTrackNoIR/images/PPJoy.ico | Bin 5166 -> 5166 bytes FaceTrackNoIR/tracker.cpp | 192 ++++++++++++++++++--------- FaceTrackNoIR/tracker.h | 20 ++- SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj | 115 ++++++++++++++++ bin/FaceTrackNoIR.exe | Bin 461312 -> 461824 bytes bin/images/PPJoy.ico | Bin 5166 -> 5166 bytes 13 files changed, 282 insertions(+), 72 deletions(-) diff --git a/FaceTrackNoIR.ncb b/FaceTrackNoIR.ncb index 91579f3a..19ded59e 100644 Binary files a/FaceTrackNoIR.ncb and b/FaceTrackNoIR.ncb differ diff --git a/FaceTrackNoIR.suo b/FaceTrackNoIR.suo index 44934298..3da602e3 100644 Binary files a/FaceTrackNoIR.suo and b/FaceTrackNoIR.suo differ diff --git a/FaceTrackNoIR/FaceTrackNoIR.cpp b/FaceTrackNoIR/FaceTrackNoIR.cpp index 05de8edd..de73a0b4 100644 --- a/FaceTrackNoIR/FaceTrackNoIR.cpp +++ b/FaceTrackNoIR/FaceTrackNoIR.cpp @@ -380,7 +380,7 @@ void FaceTrackNoIR::startTracker( ) { // // Create the Tracker and setup // - tracker = new Tracker; + tracker = new Tracker ( ui.iconcomboBox->currentIndex() ); // Show the video widget ui.video_frame->show(); diff --git a/FaceTrackNoIR/PPJoyServer.cpp b/FaceTrackNoIR/PPJoyServer.cpp index 46a66c44..53b6322b 100644 --- a/FaceTrackNoIR/PPJoyServer.cpp +++ b/FaceTrackNoIR/PPJoyServer.cpp @@ -95,25 +95,32 @@ void PPJoyServer::run() { Digital= JoyState.Digital; // Keep a pointer to the digital array for easy updating JoyState.NumDigital= NUM_DIGITAL; // Number of digital values + /* Make sure we could open the device! */ + /* MessageBox in run() does not work! (runtime error...)*/ + if (h == INVALID_HANDLE_VALUE) { + return; + } forever { // Check event for stop thread - if(::WaitForSingleObject(m_StopThread, 0) == WAIT_OBJECT_0) - { + if(::WaitForSingleObject(m_StopThread, 0) == WAIT_OBJECT_0) { // Set event ::SetEvent(m_WaitThread); return; } - Analog[0] = scale2AnalogLimits( virtRotX, -90.0f, 90.0f ); // Pitch + // The effective angle for faceTracking will be < 90 degrees, so we assume a smaller range here + Analog[0] = scale2AnalogLimits( virtRotX, -50.0f, 50.0f ); // Pitch qDebug() << "PPJoyServer says: Pitch =" << Analog[0] << " VirtRotX =" << virtRotX ; - Analog[1] = scale2AnalogLimits( virtRotY, -90.0f, 90.0f ); // Yaw - Analog[2] = scale2AnalogLimits( virtRotZ, -90.0f, 90.0f ); // Roll - Analog[3] = virtPosX + analogDefault; // X + Analog[1] = scale2AnalogLimits( virtRotY, -50.0f, 50.0f ); // Yaw + Analog[2] = scale2AnalogLimits( virtRotZ, -50.0f, 50.0f ); // Roll + + // The effective movement for faceTracking will be < 50 cm, so we assume a smaller range here + Analog[3] = scale2AnalogLimits( virtPosX, -40.0f, 40.0f ); // X - Analog[5] = virtPosY + analogDefault; // Y (5?) - Analog[6] = virtPosZ + analogDefault; // Z (6?) + Analog[5] = scale2AnalogLimits( virtPosY, -40.0f, 40.0f ); // Y (5?) + Analog[6] = scale2AnalogLimits( virtPosZ, -40.0f, 40.0f ); // Z (6?) checkAnalogLimits(); diff --git a/FaceTrackNoIR/Release/BuildLog.htm b/FaceTrackNoIR/Release/BuildLog.htm index 695a0f33..2d07dae3 100644 Binary files a/FaceTrackNoIR/Release/BuildLog.htm and b/FaceTrackNoIR/Release/BuildLog.htm differ diff --git a/FaceTrackNoIR/Release/mt.dep b/FaceTrackNoIR/Release/mt.dep index 07307278..506fca00 100644 --- a/FaceTrackNoIR/Release/mt.dep +++ b/FaceTrackNoIR/Release/mt.dep @@ -1 +1 @@ -Manifest resource last updated at 20:05:54.09 on vr 11-06-2010 +Manifest resource last updated at 11:22:50.41 on za 12-06-2010 diff --git a/FaceTrackNoIR/Release/vc90.idb b/FaceTrackNoIR/Release/vc90.idb index a737ef03..1015061a 100644 Binary files a/FaceTrackNoIR/Release/vc90.idb and b/FaceTrackNoIR/Release/vc90.idb differ diff --git a/FaceTrackNoIR/images/PPJoy.ico b/FaceTrackNoIR/images/PPJoy.ico index 321e5888..f94f8d65 100644 Binary files a/FaceTrackNoIR/images/PPJoy.ico and b/FaceTrackNoIR/images/PPJoy.ico differ diff --git a/FaceTrackNoIR/tracker.cpp b/FaceTrackNoIR/tracker.cpp index 724475f2..666f9c34 100644 --- a/FaceTrackNoIR/tracker.cpp +++ b/FaceTrackNoIR/tracker.cpp @@ -57,8 +57,12 @@ THeadPoseDOF Tracker::X; THeadPoseDOF Tracker::Y; THeadPoseDOF Tracker::Z; -/** constructor empty **/ -Tracker::Tracker() { +/** constructor **/ +Tracker::Tracker( int clientID ) { + + // Remember the selected client, from the ListBox + // If the Tracker runs, this can NOT be changed... + selectedClient = (FTNoIR_Client) clientID; // Create events m_StopThread = CreateEvent(0, TRUE, FALSE, 0); @@ -85,17 +89,48 @@ Tracker::Tracker() { QMessageBox::warning(0,"faceAPI Error",e.what(),QMessageBox::Ok,QMessageBox::NoButton); } - server_FT = new FTServer; // Create the new thread (on the heap) - server_FG = new FGServer ( this ); // Create the new thread (on the heap) - server_PPJoy = new PPJoyServer ( this ); // Create the new thread (on the heap) + // + // Initialize all server-handles. Only start the server, that was selected in the GUI. + // + server_FT = 0; + server_FG = 0; + server_PPJoy = 0; + switch (selectedClient) { + case FREE_TRACK: + server_FT = new FTServer; // Create Free-track protocol-server + break; + + case FLIGHTGEAR: + server_FG = new FGServer ( this ); // Create FlightGear protocol-server + break; + + case FTNOIR: + break; + + case PPJOY: + server_PPJoy = new PPJoyServer ( this ); // Create PPJoy protocol-server + break; + + default: + // should never be reached + break; + } + } /** destructor empty **/ Tracker::~Tracker() { - server_FT->deleteLater(); - server_FG->deleteLater(); - server_PPJoy->deleteLater(); + // Stop the started server(s) + if (server_FT) { + server_FT->deleteLater(); + } + if (server_FG) { + server_FG->deleteLater(); + } + if (server_PPJoy) { + server_PPJoy->deleteLater(); + } // Trigger thread to stop ::SetEvent(m_StopThread); @@ -143,15 +178,22 @@ void Tracker::setup(QWidget *head, FaceTrackNoIR *parent) { // and create the necessary mapping to shared memory. // The handle of the MainWindow is sent to 'The Game', so it can send a message back. // - DLL_Ok = server_FT->FTCheckClientDLL(); - DLL_Ok = server_FT->FTCreateMapping( mainApp->winId() ); + if (server_FT) { + DLL_Ok = server_FT->FTCheckClientDLL(); + DLL_Ok = server_FT->FTCreateMapping( mainApp->winId() ); - qDebug() << "FaceTrackNoIR says: Window Handle =" << mainApp->winId(); + server_FT->start(); // Start the thread + } + + // FlightGear + if (server_FG) { + server_FG->start(); // Start the thread + } -// return; - server_FT->start(); // Should start at the push of a button? - server_FG->start(); // - server_PPJoy->start(); // + // PPJoy virtual joystick + if (server_PPJoy) { + server_PPJoy->start(); // Start the thread + } } /** QThread run method @override **/ @@ -305,14 +347,15 @@ void Tracker::run() { // // Copy the Raw values directly to Free-track server // - server_FT->setHeadRotX( Tracker::Pitch.headPos ); // rads - server_FT->setHeadRotY( Tracker::Yaw.headPos ); - server_FT->setHeadRotZ( Tracker::Roll.headPos); - - server_FT->setHeadPosX( Tracker::X.headPos * 1000.0f); // From m to mm - server_FT->setHeadPosY( Tracker::Y.headPos * 1000.0f); - server_FT->setHeadPosZ( ( Tracker::Z.headPos - Tracker::Z.initial_headPos ) * 1000.0f); - + if (server_FT) { + server_FT->setHeadRotX( Tracker::Pitch.headPos ); // rads + server_FT->setHeadRotY( Tracker::Yaw.headPos ); + server_FT->setHeadRotZ( Tracker::Roll.headPos); + + server_FT->setHeadPosX( Tracker::X.headPos * 1000.0f); // From m to mm + server_FT->setHeadPosY( Tracker::Y.headPos * 1000.0f); + server_FT->setHeadPosZ( ( Tracker::Z.headPos - Tracker::Z.initial_headPos ) * 1000.0f); + } } // @@ -333,9 +376,7 @@ void Tracker::run() { } if (Tracker::do_tracking && Tracker::confid) { - // - // Also send the Virtual Pose to FT-server and FG-server - // + // Pitch if (Tracker::useFilter) { Pitch.newPos = lowPassFilter ( getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos, &Pitch.prevPos, dT, Tracker::Pitch.red ); @@ -343,9 +384,8 @@ void Tracker::run() { else { Pitch.newPos = getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos; } - server_FT->setVirtRotX ( Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos ); - server_PPJoy->setVirtRotX ( getDegreesFromRads (Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos ) ); + // Yaw if (Tracker::useFilter) { Yaw.newPos = lowPassFilter ( getSmoothFromList( &Yaw.rawList ) - Yaw.offset_headPos, &Yaw.prevPos, dT, Tracker::Yaw.red ); @@ -353,9 +393,8 @@ void Tracker::run() { else { Yaw.newPos = getSmoothFromList( &Yaw.rawList ) - Yaw.offset_headPos; } - server_FT->setVirtRotY ( Tracker::Yaw.invert * Tracker::Yaw.sens * Yaw.newPos ); - server_PPJoy->setVirtRotY ( getDegreesFromRads ( Tracker::Yaw.invert * Tracker::Yaw.sens * Yaw.newPos ) ); + // Roll if (Tracker::useFilter) { Roll.newPos = lowPassFilter ( getSmoothFromList( &Roll.rawList ) - Roll.offset_headPos, &Roll.prevPos, dT, Tracker::Roll.red ); @@ -363,45 +402,76 @@ void Tracker::run() { else { Roll.newPos = getSmoothFromList( &Roll.rawList ) - Roll.offset_headPos; } - server_FT->setVirtRotZ ( Tracker::Roll.invert * Tracker::Roll.sens * Roll.newPos ); - server_PPJoy->setVirtRotZ ( getDegreesFromRads (Tracker::Roll.invert * Tracker::Roll.sens * Roll.newPos ) ); - - server_FT->setVirtPosX ( ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 1000.0f); - server_FT->setVirtPosY ( ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 1000.0f ); - server_FT->setVirtPosZ ( ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 1000.0f ); - - server_PPJoy->setVirtPosX ( ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 1000.0f); - server_PPJoy->setVirtPosY ( ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 1000.0f ); - server_PPJoy->setVirtPosZ ( ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 1000.0f ); - - server_FG->setVirtRotX ( getDegreesFromRads ( Tracker::Pitch.invert * Tracker::Pitch.sens * (getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos) ) ); - server_FG->setVirtRotY ( getDegreesFromRads ( Tracker::Yaw.invert * Tracker::Yaw.sens * (getSmoothFromList( &Yaw.rawList ) - Yaw.offset_headPos) ) ); - server_FG->setVirtRotZ ( getDegreesFromRads ( Tracker::Roll.invert * Tracker::Roll.sens * (getSmoothFromList( &Roll.rawList ) - Roll.offset_headPos) ) ); - server_FG->setVirtPosX ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ); - server_FG->setVirtPosY ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ); - server_FG->setVirtPosZ ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ); + + // + // Also send the Virtual Pose to selected Protocol-Server + // + // Free-track + if (server_FT) { + server_FT->setVirtRotX ( Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos ); + server_FT->setVirtRotY ( Tracker::Yaw.invert * Tracker::Yaw.sens * Yaw.newPos ); + server_FT->setVirtRotZ ( Tracker::Roll.invert * Tracker::Roll.sens * Roll.newPos ); + + server_FT->setVirtPosX ( ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 1000.0f); + server_FT->setVirtPosY ( ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 1000.0f ); + server_FT->setVirtPosZ ( ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 1000.0f ); + } + + // FlightGear + if (server_FG) { + server_FG->setVirtRotX ( getDegreesFromRads ( Tracker::Pitch.invert * Tracker::Pitch.sens * (getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos) ) ); + server_FG->setVirtRotY ( getDegreesFromRads ( Tracker::Yaw.invert * Tracker::Yaw.sens * (getSmoothFromList( &Yaw.rawList ) - Yaw.offset_headPos) ) ); + server_FG->setVirtRotZ ( getDegreesFromRads ( Tracker::Roll.invert * Tracker::Roll.sens * (getSmoothFromList( &Roll.rawList ) - Roll.offset_headPos) ) ); + server_FG->setVirtPosX ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ); + server_FG->setVirtPosY ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ); + server_FG->setVirtPosZ ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ); + } + + // PPJoy virtual joystick + if (server_PPJoy) { + server_PPJoy->setVirtRotX ( getDegreesFromRads (Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos ) ); + server_PPJoy->setVirtRotY ( getDegreesFromRads (Tracker::Yaw.invert * Tracker::Yaw.sens * Yaw.newPos ) ); + server_PPJoy->setVirtRotZ ( getDegreesFromRads (Tracker::Roll.invert * Tracker::Roll.sens * Roll.newPos ) ); + + server_PPJoy->setVirtPosX ( ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 100.0f); + server_PPJoy->setVirtPosY ( ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 100.0f ); + server_PPJoy->setVirtPosZ ( ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 100.0f ); + } } else { // // Go to initial position // - server_FT->setVirtRotX ( 0.0f ); - server_FT->setVirtRotY ( 0.0f ); - server_FT->setVirtRotZ ( 0.0f ); - server_FT->setVirtPosX ( 0.0f ); - server_FT->setVirtPosY ( 0.0f ); - server_FT->setVirtPosZ ( 0.0f ); - - server_FG->setVirtRotX ( 0.0f ); - server_FG->setVirtRotY ( 0.0f ); - server_FG->setVirtRotZ ( 0.0f ); - server_FG->setVirtPosX ( 0.0f ); - server_FG->setVirtPosY ( 0.0f ); - server_FG->setVirtPosZ ( 0.0f ); + if (server_FT) { + server_FT->setVirtRotX ( 0.0f ); + server_FT->setVirtRotY ( 0.0f ); + server_FT->setVirtRotZ ( 0.0f ); + server_FT->setVirtPosX ( 0.0f ); + server_FT->setVirtPosY ( 0.0f ); + server_FT->setVirtPosZ ( 0.0f ); + } + + if (server_FG) { + server_FG->setVirtRotX ( 0.0f ); + server_FG->setVirtRotY ( 0.0f ); + server_FG->setVirtRotZ ( 0.0f ); + server_FG->setVirtPosX ( 0.0f ); + server_FG->setVirtPosY ( 0.0f ); + server_FG->setVirtPosZ ( 0.0f ); + } + + if (server_PPJoy) { + server_PPJoy->setVirtRotX ( 0.0f ); + server_PPJoy->setVirtRotY ( 0.0f ); + server_PPJoy->setVirtRotZ ( 0.0f ); + server_PPJoy->setVirtPosX ( 0.0f ); + server_PPJoy->setVirtPosY ( 0.0f ); + server_PPJoy->setVirtPosZ ( 0.0f ); + } } //for lower cpu load - msleep(25); + msleep(15); yieldCurrentThread(); } } diff --git a/FaceTrackNoIR/tracker.h b/FaceTrackNoIR/tracker.h index 732d2a8d..10021ffb 100644 --- a/FaceTrackNoIR/tracker.h +++ b/FaceTrackNoIR/tracker.h @@ -46,6 +46,22 @@ using namespace sm::faceapi; using namespace sm::faceapi::qt; +enum AngleName { + PITCH = 0, + YAW = 1, + ROLL = 2, + X = 3, + Y = 4, + Z = 5 +}; + +enum FTNoIR_Client { + FREE_TRACK = 0, + FLIGHTGEAR = 1, + FTNOIR = 2, + PPJOY = 3 +}; + class FaceTrackNoIR; // pre-define parent-class to avoid circular includes // @@ -73,6 +89,8 @@ private: HANDLE m_StopThread; HANDLE m_WaitThread; + FTNoIR_Client selectedClient; + /** face api variables **/ APIScope *faceapi_scope; QSharedPointer _engine; @@ -125,7 +143,7 @@ protected: void run(); public: - Tracker(); + Tracker( int clientID ); ~Tracker(); void setup(QWidget *head, FaceTrackNoIR *parent); diff --git a/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj b/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj index 36aa334e..34a406dc 100644 --- a/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj +++ b/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj @@ -99,6 +99,12 @@ } "Entry" { + "MsmKey" = "8:_171663A387D948E3A602031A59CB662F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_1A0EC6350A1343F88FF69FF1027FDF21" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -231,6 +237,12 @@ } "Entry" { + "MsmKey" = "8:_566A50B00FDB4C6CBEBD2219B95CB403" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_598A7A2C376049E8A68801956D19266B" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -399,6 +411,12 @@ } "Entry" { + "MsmKey" = "8:_986D92ED31F9482BBD9BDD1AB2DE7ACC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_9984E74C01F942DEBB6746C2D2F1D657" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -603,6 +621,12 @@ } "Entry" { + "MsmKey" = "8:_E24875F377B6409B83263B876E243495" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_E49F0C5362AB4F2F94751E2CE133F5BB" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -1062,6 +1086,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_171663A387D948E3A602031A59CB662F" + { + "SourcePath" = "8:..\\FaceTrackNoIR\\ClientFiles\\Tir4Fun\\readme.txt" + "TargetName" = "8:readme.txt" + "Tag" = "8:" + "Folder" = "8:_FC0D1BB3B8F54E8B8EAD134A84759174" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A0EC6350A1343F88FF69FF1027FDF21" { "SourcePath" = "8:..\\bin\\resources\\ftcascade3.bin" @@ -1482,6 +1526,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_566A50B00FDB4C6CBEBD2219B95CB403" + { + "SourcePath" = "8:..\\FaceTrackNoIR\\ClientFiles\\Tir4Fun\\tir4fun.exe" + "TargetName" = "8:tir4fun.exe" + "Tag" = "8:" + "Folder" = "8:_FC0D1BB3B8F54E8B8EAD134A84759174" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_598A7A2C376049E8A68801956D19266B" { "SourcePath" = "8:..\\bin\\resources\\cam_whitelist.txt" @@ -2002,6 +2066,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_986D92ED31F9482BBD9BDD1AB2DE7ACC" + { + "SourcePath" = "8:..\\FaceTrackNoIR\\ClientFiles\\Tir4Fun\\NPClient.dll" + "TargetName" = "8:NPClient.dll" + "Tag" = "8:" + "Folder" = "8:_FC0D1BB3B8F54E8B8EAD134A84759174" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9984E74C01F942DEBB6746C2D2F1D657" { "SourcePath" = "8:..\\bin\\resources\\distraction_model.txt" @@ -2622,6 +2706,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E24875F377B6409B83263B876E243495" + { + "SourcePath" = "8:..\\bin\\images\\PPJoy.ico" + "TargetName" = "8:PPJoy.ico" + "Tag" = "8:" + "Folder" = "8:_40DAD99DC6924B3B84F32C94378E760A" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E49F0C5362AB4F2F94751E2CE133F5BB" { "SourcePath" = "8:..\\bin\\resources\\ftcascade2_ir.bin" @@ -3039,6 +3143,17 @@ { } } + "{9EF0B969-E518-4E46-987F-47570745A589}:_FC0D1BB3B8F54E8B8EAD134A84759174" + { + "Name" = "8:Tir4Fun" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_1A3D0F27EA364AB6A598DDA2DE4F2E40" + "Folders" + { + } + } "{9EF0B969-E518-4E46-987F-47570745A589}:_FF812A38ABB645DAA63E1EB22B8DD795" { "Name" = "8:FlightGear" diff --git a/bin/FaceTrackNoIR.exe b/bin/FaceTrackNoIR.exe index fc27716a..b64305f2 100644 Binary files a/bin/FaceTrackNoIR.exe and b/bin/FaceTrackNoIR.exe differ diff --git a/bin/images/PPJoy.ico b/bin/images/PPJoy.ico index 321e5888..52df896d 100644 Binary files a/bin/images/PPJoy.ico and b/bin/images/PPJoy.ico differ -- cgit v1.2.3