diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2013-03-22 20:48:17 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2013-03-22 20:48:17 +0100 | 
| commit | 3089c4bbc10e98d18f43e8a70e7a3d0c0eaf0900 (patch) | |
| tree | c6f985472c05372417ecd4a861f6c2f346b63fd3 /ftnoir_protocol_sc | |
| parent | 3e1515e88c6f750c193ed9b9908d8a9c09e5b025 (diff) | |
Downcase. PLEASE TURN OFF IGNORING CASE IN GIT CONFIG!!!
.git/config:
[core]
	ignorecase = false
Diffstat (limited to 'ftnoir_protocol_sc')
| -rw-r--r-- | ftnoir_protocol_sc/FTNoIR_Protocol_SC.cpp | 393 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/FTNoIR_Protocol_SC.h | 183 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc8.vcproj | 377 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc9.vcproj | 382 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/FTNoIR_SCcontrols.ui | 162 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/Protocol.qrc | 5 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/SCServer.manifest | 13 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/SimConnect.aps | bin | 0 -> 1264 bytes | |||
| -rw-r--r-- | ftnoir_protocol_sc/ftnoir_protocol_SC_dialog.cpp | 157 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/ftnoir_protocol_SC_dll.cpp | 56 | ||||
| -rw-r--r-- | ftnoir_protocol_sc/images/FSX.ico | bin | 0 -> 87910 bytes | 
11 files changed, 1728 insertions, 0 deletions
diff --git a/ftnoir_protocol_sc/FTNoIR_Protocol_SC.cpp b/ftnoir_protocol_sc/FTNoIR_Protocol_SC.cpp new file mode 100644 index 00000000..7ca38e64 --- /dev/null +++ b/ftnoir_protocol_sc/FTNoIR_Protocol_SC.cpp @@ -0,0 +1,393 @@ +/********************************************************************************
 +* FaceTrackNoIR		This program is a private project of the some enthusiastic	*
 +*					gamers from Holland, who don't like to pay much for			*
 +*					head-tracking.												*
 +*																				*
 +* Copyright (C) 2010-2011	Wim Vriend (Developing)								*
 +*							Ron Hendriks (Researching and Testing)				*
 +*																				*
 +* Homepage																		*
 +*																				*
 +* This program is free software; you can redistribute it and/or modify it		*
 +* under the terms of the GNU General Public License as published by the			*
 +* Free Software Foundation; either version 3 of the License, or (at your		*
 +* option) any later version.													*
 +*																				*
 +* This program is distributed in the hope that it will be useful, but			*
 +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 +* more details.																	*
 +*																				*
 +* 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: 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...										*
 +********************************************************************************/
 +/*
 +	Modifications (last one on top):
 +	20110401 - WVR: Moved protocol to a DLL, convenient for installation etc.
 +	20101224 - WVR: Base class is no longer inheriting QThread. sendHeadposeToGame
 +					is called from run() of Tracker.cpp
 +*/
 +#include "ftnoir_protocol_sc.h"
 +
 +importSimConnect_CameraSetRelative6DOF FTNoIR_Protocol::simconnect_set6DOF;
 +HANDLE FTNoIR_Protocol::hSimConnect = 0;			// Handle to SimConnect
 +
 +float FTNoIR_Protocol::virtSCPosX = 0.0f;			// Headpose
 +float FTNoIR_Protocol::virtSCPosY = 0.0f;
 +float FTNoIR_Protocol::virtSCPosZ = 0.0f;
 +	
 +float FTNoIR_Protocol::virtSCRotX = 0.0f;
 +float FTNoIR_Protocol::virtSCRotY = 0.0f;
 +float FTNoIR_Protocol::virtSCRotZ = 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::prevSCRotX = 0.0f;
 +float FTNoIR_Protocol::prevSCRotY = 0.0f;
 +float FTNoIR_Protocol::prevSCRotZ = 0.0f;
 +
 +/** constructor **/
 +FTNoIR_Protocol::FTNoIR_Protocol()
 +{
 +	ProgramName = "Microsoft FSX";
 +	blnSimConnectActive = false;
 +	hSimConnect = 0;
 +	hMainWindow = 0;
 +}
 +
 +/** destructor **/
 +FTNoIR_Protocol::~FTNoIR_Protocol()
 +{
 +	qDebug() << "~FTNoIR_Protocol says: inside" << FTNoIR_Protocol::hSimConnect;
 +
 +	if (hSimConnect != 0) {
 +		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::Release()
 +{
 +    delete this;
 +}
 +
 +void FTNoIR_Protocol::Initialize()
 +{
 +	return;
 +}
 +
 +//
 +// Load the current Settings from the currently 'active' INI-file.
 +//
 +void FTNoIR_Protocol::loadSettings() {
 +// None yet...
 +}
 +
 +//
 +// Update Headpose in Game.
 +//
 +void FTNoIR_Protocol::sendHeadposeToGame( THeadPoseData *headpose, THeadPoseData *rawheadpose ) {
 +PDWORD_PTR MsgResult = 0;
 +
 +
 +	virtSCRotX = -1.0f * headpose->pitch;					// degrees
 +	virtSCRotY = -1.0f * headpose->yaw;
 +	virtSCRotZ = headpose->roll;
 +
 +	virtSCPosX = headpose->x/100.f;						// cm to meters
 +	virtSCPosY = headpose->y/100.f;
 +	virtSCPosZ = -1.0f * headpose->z/100.f;
 +
 +	//
 +	// It's only useful to send data, if the connection was made.
 +	//
 +	if (!blnSimConnectActive) {
 +		if (SUCCEEDED(simconnect_open(&hSimConnect, "FaceTrackNoIR", NULL, 0, 0, 0))) {
 +			qDebug() << "FTNoIR_Protocol::sendHeadposeToGame() says: SimConnect active!";
 +
 +			//set up the events we want to listen for
 +			HRESULT hr;
 +
 +			simconnect_subscribetosystemevent(hSimConnect, EVENT_PING, "Frame"); 
 +
 +			hr = simconnect_mapclienteventtosimevent(hSimConnect, EVENT_INIT, "");
 +			hr = simconnect_addclienteventtonotificationgroup(hSimConnect, GROUP0, EVENT_INIT, false);
 +			hr = simconnect_setnotificationgrouppriority(hSimConnect, GROUP0, SIMCONNECT_GROUP_PRIORITY_HIGHEST);
 +			////hr = SimConnect_MapInputEventToClientEvent(hSimConnect, INPUT0, "VK_COMMA", EVENT_INIT);
 +			////hr = SimConnect_SetInputGroupState(hSimConnect, INPUT0, SIMCONNECT_STATE_ON);
 +
 +			blnSimConnectActive = true;
 +			if (hMainWindow != NULL) {
 +				SendMessageTimeout( (HWND) hMainWindow, RegisterWindowMessageA(FT_PROGRAMID), 0, 0, 0, 2000, MsgResult);
 +			}
 +		}
 +	}
 +	else {
 +		//
 +		// Write the 6DOF-data to FSX
 +//		//
 +//		// 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() << "FTNoIR_Protocol::run() says: SimConnect data written!";
 +////			}
 +//		}
 +//
 +//		prevPosX = virtPosX;
 +//		prevPosY = virtPosY;
 +//		prevPosZ = virtPosZ;
 +//		prevRotX = virtRotX;
 +//		prevRotY = virtRotY;
 +//		prevRotZ = virtRotZ;
 +
 +		if SUCCEEDED(simconnect_calldispatch(hSimConnect, processNextSimconnectEvent, NULL)) {
 +			qDebug() << "FTNoIR_Protocol::sendHeadposeToGame() says: Dispatching";
 +		}
 +		else {
 +			qDebug() << "FTNoIR_Protocol::sendHeadposeToGame() says: Error Dispatching!";
 +		}
 +	}
 +}
 +
 +//
 +// Returns 'true' if all seems OK.
 +//
 +bool FTNoIR_Protocol::checkServerInstallationOK( HANDLE handle )
 +{   
 +	QString aFileName;														// File Path and Name
 +
 +	// Code to activate the context for the SimConnect DLL
 +	ACTCTX act = { 0 };
 +	HANDLE hctx;
 +	ULONG_PTR ulCookie;
 +
 +	hMainWindow = handle;
 +
 +	qDebug() << "SCCheckClientDLL says: Starting Function";
 +
 +	try {
 +
 +		act.cbSize = sizeof(act);
 +		act.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
 +
 +		QString manifest(QCoreApplication::applicationDirPath());
 +//		manifest += "\\FaceTrackNoIR.exe";
 +		manifest += "\\FTNoIR_Protocol_SC.dll";
 +		const wchar_t * encodedName = reinterpret_cast<const wchar_t *>(manifest.utf16());
 +		
 +		act.lpSource = encodedName;
 +		act.lpResourceName = MAKEINTRESOURCE(101);
 +
 +		hctx = CreateActCtx (&act);
 +
 +		if (hctx != INVALID_HANDLE_VALUE) { 
 +			if (!ActivateActCtx(hctx, &ulCookie)) { 
 +				ReleaseActCtx(hctx);
 +				qDebug() << "SCCheckClientDLL says: Error activating SimConnect manifest";
 +			}
 +		}
 +		else {
 +			qDebug() << "SCCheckClientDLL says: Error INVALID_HANDLE: " << GetLastError();
 +			return false;
 +		}
 +
 +		//
 +		// Just try to load the DLL. Let Windows handle the PATH's and such trivialities...
 +		//
 +		aFileName = SC_CLIENT_FILENAME;
 +						
 +		//
 +		// Load the DLL.
 +		//
 +		SCClientLib.setFileName(aFileName);
 +		if (SCClientLib.load() != true) {
 +			qDebug() << "SCCheckClientDLL says: Error loading SimConnect DLL";
 +			return false;
 +		}
 +
 +		//
 +		// Deactivate the context again: the function-references should stay in-tact...
 +		//
 +		DeactivateActCtx(0, ulCookie);
 +		ReleaseActCtx(hctx);
 +
 +	} catch(...) {
 +		qDebug() << "SCCheckClientDLL says: Error loading SimConnect DLL";
 +		return false;
 +	}
 +
 +	//
 +	// Get the functions from the DLL.
 +	//
 +	simconnect_open = (importSimConnect_Open) SCClientLib.resolve("SimConnect_Open");
 +	if (simconnect_open == NULL) {
 +		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::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::checkServerInstallationOK() says: SimConnect_Close function not found in DLL!";
 +		return false;
 +	}
 +
 +	//return true;
 +
 +	simconnect_calldispatch = (importSimConnect_CallDispatch) SCClientLib.resolve("SimConnect_CallDispatch");
 +	if (simconnect_calldispatch == NULL) {
 +		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::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::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::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::checkServerInstallationOK() says: SimConnect_SetNotificationGroupPriority function not found in DLL!";
 +		return false;
 +	}
 +
 +	qDebug() << "FTNoIR_Protocol::checkServerInstallationOK() says: SimConnect functions resolved in DLL!";
 +
 +	return true;
 +}
 +
 +void CALLBACK FTNoIR_Protocol::processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext)
 +{
 +//    HRESULT hr;
 +
 +    switch(pData->dwID)
 +    {
 +        case SIMCONNECT_RECV_ID_EVENT:
 +        {
 +            SIMCONNECT_RECV_EVENT *evt = (SIMCONNECT_RECV_EVENT*)pData;
 +
 +			qDebug() << "FTNoIR_Protocol::processNextSimconnectEvent() says: SimConnect active!";
 +            //switch(evt->uEventID)
 +            //{
 +            //    //case EVENT_CAMERA_RIGHT:
 +
 +            //    //    cameraBank = normalize180( cameraBank + 5.0f);
 +
 +            //    //    hr = SimConnect_CameraSetRelative6DOF(hSimConnect, 0.0f, 0.0f, 0.0f,
 +            //    //            SIMCONNECT_CAMERA_IGNORE_FIELD,SIMCONNECT_CAMERA_IGNORE_FIELD, cameraBank);
 +
 +            //    //    printf("\nCamera Bank = %f", cameraBank);
 +            //    //    break;
 +
 +            //    //case EVENT_CAMERA_LEFT:
 +            //    //    
 +            //    //    cameraBank = normalize180( cameraBank - 5.0f);
 +
 +            //    //    hr = SimConnect_CameraSetRelative6DOF(hSimConnect, 0.0f, 0.0f, 0.0f,
 +            //    //            SIMCONNECT_CAMERA_IGNORE_FIELD,SIMCONNECT_CAMERA_IGNORE_FIELD, cameraBank);
 +            //    //    
 +            //    //    printf("\nCamera Bank = %f", cameraBank);
 +            //    //    break;
 +
 +            //    //default:
 +            //    //    break;
 +            //}
 +            //break;
 +        }
 +		case SIMCONNECT_RECV_ID_EVENT_FRAME:
 +		{
 +//			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::run() says: SimConnect data written!";
 +				}
 +			}
 +			prevSCPosX = virtSCPosX;
 +			prevSCPosY = virtSCPosY;
 +			prevSCPosZ = virtSCPosZ;
 +			prevSCRotX = virtSCRotX;
 +			prevSCRotY = virtSCRotY;
 +			prevSCRotZ = virtSCRotZ;
 +		}
 +
 +        case SIMCONNECT_RECV_ID_EXCEPTION:
 +        {
 +            SIMCONNECT_RECV_EXCEPTION *except = (SIMCONNECT_RECV_EXCEPTION*)pData;
 +            
 +            switch (except->dwException)
 +            {
 +            case SIMCONNECT_EXCEPTION_ERROR:
 +                printf("\nCamera error");
 +                break;
 +
 +            default:
 +                printf("\nException");
 +                break;
 +            }
 +            break;
 +        }
 +
 +        case SIMCONNECT_RECV_ID_QUIT:
 +        {
 +			qDebug() << "FTNoIR_Protocol::processNextSimconnectEvent() says: Quit event!";
 +//            quit = 1;
 +            break;
 +        }
 +
 +        default:
 +            break;
 +    }
 +}
 +
 +//
 +// Return a name, if present the name from the Game, that is connected...
 +//
 +void FTNoIR_Protocol::getNameFromGame( char *dest )
 +{   
 +	sprintf_s(dest, 99, "Microsoft FSX");
 +	return;
 +}
 +
 +////////////////////////////////////////////////////////////////////////////////
 +// Factory function that creates instances if the Protocol object.
 +
 +// Export both decorated and undecorated names.
 +//   GetProtocol     - Undecorated name, which can be easily used with GetProcAddress
 +//                Win32 API function.
 +//   _GetProtocol@0  - Common name decoration for __stdcall functions in C language.
 +#pragma comment(linker, "/export:GetProtocol=_GetProtocol@0")
 +
 +FTNOIR_PROTOCOL_BASE_EXPORT IProtocolPtr __stdcall GetProtocol()
 +{
 +	return new FTNoIR_Protocol;
 +}
 diff --git a/ftnoir_protocol_sc/FTNoIR_Protocol_SC.h b/ftnoir_protocol_sc/FTNoIR_Protocol_SC.h new file mode 100644 index 00000000..42eca457 --- /dev/null +++ b/ftnoir_protocol_sc/FTNoIR_Protocol_SC.h @@ -0,0 +1,183 @@ +/********************************************************************************
 +* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 +*					gamers from Holland, who don't like to pay much for			*
 +*					head-tracking.												*
 +*																				*
 +* Copyright (C) 2010-2011	Wim Vriend (Developing)								*
 +*							Ron Hendriks (Researching and Testing)				*
 +*																				*
 +* Homepage																		*
 +*																				*
 +* This program is free software; you can redistribute it and/or modify it		*
 +* under the terms of the GNU General Public License as published by the			*
 +* Free Software Foundation; either version 3 of the License, or (at your		*
 +* option) any later version.													*
 +*																				*
 +* This program is distributed in the hope that it will be useful, but			*
 +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 +* more details.																	*
 +*																				*
 +* You should have received a copy of the GNU General Public License along		*
 +* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 +*																				*
 +* SCServer		SCServer 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...										*
 +********************************************************************************/
 +#pragma once
 +#ifndef INCLUDED_SCSERVER_H
 +#define INCLUDED_SCSERVER_H
 +
 +//
 +// Prevent the SimConnect manifest from being merged in the application-manifest
 +// This is necessary to run FaceTrackNoIR on a PC without FSX
 +//
 +#define SIMCONNECT_H_NOMANIFEST 
 +#define _WIN32_WINNT 0x0502
 +
 +#include "Windows.h"
 +#include "SimConnect.h"
 +
 +#include "..\ftnoir_protocol_base\ftnoir_protocol_base.h"
 +#include "ui_FTNoIR_SCcontrols.h"
 +#include <QMessageBox>
 +#include <QSettings>
 +#include <QLibrary>
 +#include <QProcess>
 +#include <QDebug>
 +#include <QFile>
 +//#include "math.h"
 +
 +typedef HRESULT (WINAPI *importSimConnect_Open)(HANDLE * phSimConnect, LPCSTR szName, HWND hWnd, DWORD UserEventWin32, HANDLE hEventHandle, DWORD ConfigIndex);
 +typedef HRESULT (WINAPI *importSimConnect_Close)(HANDLE hSimConnect);
 +typedef HRESULT (WINAPI *importSimConnect_CameraSetRelative6DOF)(HANDLE hSimConnect, float fDeltaX, float fDeltaY, float fDeltaZ, float fPitchDeg, float fBankDeg, float fHeadingDeg);
 +typedef HRESULT (WINAPI *importSimConnect_CallDispatch)(HANDLE hSimConnect, DispatchProc pfcnDispatch, void * pContext);
 +typedef HRESULT (WINAPI *importSimConnect_SubscribeToSystemEvent)(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID, const char * SystemEventName);
 +typedef HRESULT (WINAPI *importSimConnect_MapClientEventToSimEvent)(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID, const char * EventName);
 +typedef HRESULT (WINAPI *importSimConnect_AddClientEventToNotificationGroup)(HANDLE hSimConnect, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID, SIMCONNECT_CLIENT_EVENT_ID EventID, BOOL bMaskable);
 +typedef HRESULT (WINAPI *importSimConnect_SetNotificationGroupPriority)(HANDLE hSimConnect, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID, DWORD uPriority);
 +
 +static const char* SC_CLIENT_FILENAME = "SimConnect.dll";
 +static const char* FT_PROGRAMID = "FT_ProgramID";				// For message to FaceTrackNoIR main-window.
 +
 +enum GROUP_ID
 +{
 +    GROUP0=0,
 +};
 +
 +enum EVENT_ID
 +{
 +	EVENT_PING=0,
 +	EVENT_INIT,
 +};
 +
 +enum INPUT_ID
 +{
 +    INPUT0=0,
 +};
 +
 +class FTNoIR_Protocol : public IProtocol
 +{
 +public:
 +	FTNoIR_Protocol();
 +	~FTNoIR_Protocol();
 +
 +	void Release();
 +    void Initialize();
 +
 +	bool checkServerInstallationOK( HANDLE handle );
 +	void sendHeadposeToGame( THeadPoseData *headpose, THeadPoseData *rawheadpose );
 +	void getNameFromGame( char *dest );					// Take care dest can handle up to 100 chars...
 +
 +private:
 +	// Private properties
 +	QString ProgramName;
 +	QLibrary SCClientLib;
 +
 +	static float virtSCPosX;
 +	static float virtSCPosY;
 +	static float virtSCPosZ;
 +	
 +	static float virtSCRotX;
 +	static float virtSCRotY;
 +	static float virtSCRotZ;
 +
 +	static float prevSCPosX;
 +	static float prevSCPosY;
 +	static float prevSCPosZ;
 +	
 +	static float prevSCRotX;
 +	static float prevSCRotY;
 +	static float prevSCRotZ;
 +
 +	bool blnSimConnectActive;
 +	HANDLE hMainWindow;												// Save the handle to FaceTrackNoIR main-window
 +
 +	importSimConnect_Open simconnect_open;							// SimConnect function(s) in DLL
 +	importSimConnect_Close simconnect_close;
 +	static importSimConnect_CameraSetRelative6DOF simconnect_set6DOF;
 +	importSimConnect_CallDispatch simconnect_calldispatch;
 +	importSimConnect_SubscribeToSystemEvent simconnect_subscribetosystemevent;
 +	importSimConnect_MapClientEventToSimEvent simconnect_mapclienteventtosimevent;
 +	importSimConnect_AddClientEventToNotificationGroup simconnect_addclienteventtonotificationgroup;
 +	importSimConnect_SetNotificationGroupPriority simconnect_setnotificationgrouppriority;
 +
 +	static HANDLE hSimConnect;										// Handle to SimConnect
 +	static void CALLBACK processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext);
 +	void loadSettings();
 +};
 +
 +// Widget that has controls for FTNoIR protocol client-settings.
 +class SCControls: public QWidget, Ui::UICSCControls, public IProtocolDialog
 +{
 +    Q_OBJECT
 +public:
 +
 +	explicit SCControls();
 +    virtual ~SCControls();
 +	void showEvent ( QShowEvent * event );
 +
 +	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;
 +	void loadSettings();
 +	void save();
 +
 +	/** helper **/
 +	bool settingsDirty;
 +	FTNoIR_Protocol *theProtocol;
 +
 +private slots:
 +	void doOK();
 +	void doCancel();
 +	void settingChanged() { settingsDirty = true; };
 +};
 +
 +//*******************************************************************************************************
 +// FaceTrackNoIR Protocol DLL. Functions used to get general info on the Protocol
 +//*******************************************************************************************************
 +class FTNoIR_ProtocolDll : public IProtocolDll
 +{
 +public:
 +	FTNoIR_ProtocolDll();
 +	~FTNoIR_ProtocolDll();
 +
 +	void getFullName(QString *strToBeFilled) { *strToBeFilled = QString("FSX SimConnect"); };
 +	void getShortName(QString *strToBeFilled) { *strToBeFilled = QString("SimConnect"); };
 +	void getDescription(QString *strToBeFilled) { *strToBeFilled = QString("Microsoft SimConnect protocol"); };
 +
 +	void getIcon(QIcon *icon) { *icon = QIcon(":/images/FSX.ico"); };
 +};
 +
 +#endif//INCLUDED_SCSERVER_H
 +//END
 diff --git a/ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc8.vcproj b/ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc8.vcproj new file mode 100644 index 00000000..0f3cfdb3 --- /dev/null +++ b/ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc8.vcproj @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="Windows-1252"?>
 +<VisualStudioProject
 +	ProjectType="Visual C++"
 +	Version="8,00"
 +	Name="FTNoIR_Protocol_SC"
 +	ProjectGUID="{B8F3B67B-6C25-4E06-8076-0513D2368A1F}"
 +	RootNamespace="FTNoIR_Protocol_SC"
 +	Keyword="Qt4VSv1.0"
 +	>
 +	<Platforms>
 +		<Platform
 +			Name="Win32"
 +		/>
 +	</Platforms>
 +	<ToolFiles>
 +	</ToolFiles>
 +	<Configurations>
 +		<Configuration
 +			Name="Release|Win32"
 +			OutputDirectory="$(SolutionDir)/bin"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\;"C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X SDK\SDK\Core Utilities Kit\SimConnect SDK\inc""
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;FTNOIR_PROTOCOL_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="2"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="0"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmain.lib QtCore4.lib QtGui4.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories=""$(QTDIR)\lib";"C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X SDK\SDK\Core Utilities Kit\SimConnect SDK\lib""
 +				GenerateDebugInformation="false"
 +				SubSystem="2"
 +				OptimizeReferences="1"
 +				EnableCOMDATFolding="1"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCWebDeploymentTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +				CommandLine="mt.exe -manifest "$(InputDir)SCServer.manifest" -outputresource:"$(OutDir)\$(TargetFileName)";^#101"
 +			/>
 +		</Configuration>
 +		<Configuration
 +			Name="Debug|Win32"
 +			OutputDirectory="$(SolutionDir)/bin_dbg"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				Optimization="0"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\;"C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X SDK\SDK\Core Utilities Kit\SimConnect SDK\inc""
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_CORE_LIB;FTNOIR_PROTOCOL_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="3"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="3"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmaind.lib QtCored4.lib QtGuid4.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories="$(QTDIR)\lib"
 +				GenerateDebugInformation="true"
 +				SubSystem="2"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCWebDeploymentTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +			/>
 +		</Configuration>
 +	</Configurations>
 +	<References>
 +	</References>
 +	<Files>
 +		<Filter
 +			Name="Source Files"
 +			Filter="cpp;cxx;c;def"
 +			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 +			>
 +			<File
 +				RelativePath=".\ftnoir_Protocol_SC.cpp"
 +				>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Header Files"
 +			Filter="h"
 +			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 +			>
 +			<File
 +				RelativePath="..\FTNoIR_Protocol_Base\ftnoir_Protocol_base.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath="..\FTNoIR_Protocol_Base\ftnoir_Protocol_base_global.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\FTNoIR_Protocol_SC.h"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"  "$(InputPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DFTNOIR_PROTOCOL_BASE_LIB -DQT_DLL -D_WINDLL  "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtGui" "-I." "-IC:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X SDK\SDK\Core Utilities Kit\SimConnect SDK\inc"
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"  "$(InputPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DFTNOIR_PROTOCOL_BASE_LIB -DQT_DLL -D_WINDLL  "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtGui" "-I." "-IC:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X SDK\SDK\Core Utilities Kit\SimConnect SDK\inc"
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Form Files"
 +			Filter="ui"
 +			UniqueIdentifier="{99349809-55BA-4b9d-BF79-8FDBB0286EB3}"
 +			>
 +			<File
 +				RelativePath=".\FTNoIR_SCcontrols.ui"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Resource Files"
 +			Filter="qrc;*"
 +			UniqueIdentifier="{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}"
 +			ParseFiles="false"
 +			>
 +			<File
 +				RelativePath=".\Protocol.qrc"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Rcc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\rcc.exe" -name "$(InputName)" -no-compress "$(InputPath)" -o .\GeneratedFiles\qrc_$(InputName).cpp
"
 +						AdditionalDependencies="$(InputPath);.\images\PPJoy.ico"
 +						Outputs=".\GeneratedFiles\qrc_$(InputName).cpp"
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Rcc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\rcc.exe" -name "$(InputName)" -no-compress "$(InputPath)" -o .\GeneratedFiles\qrc_$(InputName).cpp
"
 +						AdditionalDependencies="$(InputPath);.\images\PPJoy.ico"
 +						Outputs=".\GeneratedFiles\qrc_$(InputName).cpp"
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Generated Files"
 +			Filter="moc;h;cpp"
 +			UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
 +			SourceControlFiles="false"
 +			>
 +			<File
 +				RelativePath=".\generatedfiles\qrc_Protocol.cpp"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCLCompilerTool"
 +						UsePrecompiledHeader="0"
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCLCompilerTool"
 +						UsePrecompiledHeader="0"
 +					/>
 +				</FileConfiguration>
 +			</File>
 +			<File
 +				RelativePath=".\GeneratedFiles\ui_FTNoIR_SCcontrols.h"
 +				>
 +			</File>
 +			<Filter
 +				Name="Release"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Release\moc_FTNoIR_Protocol_SC.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Debug|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +			<Filter
 +				Name="Debug"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Debug\moc_FTNoIR_Protocol_SC.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Release|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +		</Filter>
 +	</Files>
 +	<Globals>
 +		<Global
 +			Name="lupdateOnBuild"
 +			Value="0"
 +		/>
 +		<Global
 +			Name="MocDir"
 +			Value=".\GeneratedFiles\$(ConfigurationName)"
 +		/>
 +		<Global
 +			Name="MocOptions"
 +			Value=""
 +		/>
 +		<Global
 +			Name="QtVersion Win32"
 +			Value="4.6.2"
 +		/>
 +		<Global
 +			Name="RccDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +		<Global
 +			Name="UicDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +	</Globals>
 +</VisualStudioProject>
 diff --git a/ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc9.vcproj b/ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc9.vcproj new file mode 100644 index 00000000..cd779d2b --- /dev/null +++ b/ftnoir_protocol_sc/FTNoIR_Protocol_SC_vc9.vcproj @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="Windows-1252"?>
 +<VisualStudioProject
 +	ProjectType="Visual C++"
 +	Version="9,00"
 +	Name="FTNoIR_Protocol_SC"
 +	ProjectGUID="{B8F3B67B-6C25-4E06-8076-0513D2368A1F}"
 +	RootNamespace="FTNoIR_Protocol_SC"
 +	Keyword="Qt4VSv1.0"
 +	TargetFrameworkVersion="131072"
 +	>
 +	<Platforms>
 +		<Platform
 +			Name="Win32"
 +		/>
 +	</Platforms>
 +	<ToolFiles>
 +	</ToolFiles>
 +	<Configurations>
 +		<Configuration
 +			Name="Release|Win32"
 +			OutputDirectory="$(SolutionDir)/bin"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\;"$(SIMCONNECT_DIR)\inc""
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;FTNOIR_PROTOCOL_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="2"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="0"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmain.lib QtCore4.lib QtGui4.lib SimConnect.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories=""$(QTDIR)\lib";"$(SIMCONNECT_DIR)\lib""
 +				GenerateDebugInformation="false"
 +				SubSystem="2"
 +				RandomizedBaseAddress="1"
 +				DataExecutionPrevention="0"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +				CommandLine="mt.exe -manifest "$(InputDir)SCServer.manifest" -outputresource:"$(OutDir)\$(TargetFileName)";^#101"
 +			/>
 +		</Configuration>
 +		<Configuration
 +			Name="Debug|Win32"
 +			OutputDirectory="$(SolutionDir)/bin_dbg"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				Optimization="0"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\;"$(SIMCONNECT_DIR)\inc""
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_CORE_LIB;FTNOIR_PROTOCOL_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="3"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="3"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmaind.lib QtCored4.lib QtGuid4.lib SimConnect.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories=""$(QTDIR)\lib";"$(SIMCONNECT_DIR)\lib""
 +				GenerateDebugInformation="true"
 +				SubSystem="2"
 +				RandomizedBaseAddress="1"
 +				DataExecutionPrevention="0"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +			/>
 +		</Configuration>
 +	</Configurations>
 +	<References>
 +	</References>
 +	<Files>
 +		<Filter
 +			Name="Source Files"
 +			Filter="cpp;cxx;c;def"
 +			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 +			>
 +			<File
 +				RelativePath=".\ftnoir_Protocol_SC.cpp"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\ftnoir_protocol_SC_dialog.cpp"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\ftnoir_protocol_SC_dll.cpp"
 +				>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Header Files"
 +			Filter="h"
 +			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 +			>
 +			<File
 +				RelativePath="..\FTNoIR_Protocol_Base\ftnoir_Protocol_base.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath="..\FTNoIR_Protocol_Base\ftnoir_Protocol_base_global.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\FTNoIR_Protocol_SC.h"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"  "$(InputPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DFTNOIR_PROTOCOL_BASE_LIB -DQT_DLL -D_WINDLL  "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtGui" "-I." "-I$(SIMCONNECT_DIR)\inc"
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"  "$(InputPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DFTNOIR_PROTOCOL_BASE_LIB -DQT_DLL -D_WINDLL  "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtGui" "-I." "-I$(SIMCONNECT_DIR)\inc"
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Form Files"
 +			Filter="ui"
 +			UniqueIdentifier="{99349809-55BA-4b9d-BF79-8FDBB0286EB3}"
 +			>
 +			<File
 +				RelativePath=".\FTNoIR_SCcontrols.ui"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Resource Files"
 +			Filter="qrc;*"
 +			UniqueIdentifier="{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}"
 +			ParseFiles="false"
 +			>
 +			<File
 +				RelativePath=".\Protocol.qrc"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Rcc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\rcc.exe" -name "$(InputName)" -no-compress "$(InputPath)" -o .\GeneratedFiles\qrc_$(InputName).cpp
"
 +						AdditionalDependencies="$(InputPath);.\images\PPJoy.ico"
 +						Outputs=".\GeneratedFiles\qrc_$(InputName).cpp"
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Rcc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\rcc.exe" -name "$(InputName)" -no-compress "$(InputPath)" -o .\GeneratedFiles\qrc_$(InputName).cpp
"
 +						AdditionalDependencies="$(InputPath);.\images\PPJoy.ico"
 +						Outputs=".\GeneratedFiles\qrc_$(InputName).cpp"
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Generated Files"
 +			Filter="moc;h;cpp"
 +			UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
 +			SourceControlFiles="false"
 +			>
 +			<File
 +				RelativePath=".\generatedfiles\qrc_Protocol.cpp"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCLCompilerTool"
 +						UsePrecompiledHeader="0"
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCLCompilerTool"
 +						UsePrecompiledHeader="0"
 +					/>
 +				</FileConfiguration>
 +			</File>
 +			<File
 +				RelativePath=".\GeneratedFiles\ui_FTNoIR_SCcontrols.h"
 +				>
 +			</File>
 +			<Filter
 +				Name="Release"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Release\moc_FTNoIR_Protocol_SC.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Debug|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +			<Filter
 +				Name="Debug"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Debug\moc_FTNoIR_Protocol_SC.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Release|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +		</Filter>
 +	</Files>
 +	<Globals>
 +		<Global
 +			Name="lupdateOnBuild"
 +			Value="0"
 +		/>
 +		<Global
 +			Name="MocDir"
 +			Value=".\GeneratedFiles\$(ConfigurationName)"
 +		/>
 +		<Global
 +			Name="MocOptions"
 +			Value=""
 +		/>
 +		<Global
 +			Name="QtVersion Win32"
 +			Value="$(DefaultQtVersion)"
 +		/>
 +		<Global
 +			Name="RccDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +		<Global
 +			Name="UicDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +	</Globals>
 +</VisualStudioProject>
 diff --git a/ftnoir_protocol_sc/FTNoIR_SCcontrols.ui b/ftnoir_protocol_sc/FTNoIR_SCcontrols.ui new file mode 100644 index 00000000..3e7a5062 --- /dev/null +++ b/ftnoir_protocol_sc/FTNoIR_SCcontrols.ui @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?>
 +<ui version="4.0">
 + <class>UICSCControls</class>
 + <widget class="QWidget" name="UICSCControls">
 +  <property name="geometry">
 +   <rect>
 +    <x>0</x>
 +    <y>0</y>
 +    <width>346</width>
 +    <height>104</height>
 +   </rect>
 +  </property>
 +  <property name="windowTitle">
 +   <string>SimConnect settings FaceTrackNoIR</string>
 +  </property>
 +  <property name="windowIcon">
 +   <iconset>
 +    <normaloff>images/FaceTrackNoIR.ico</normaloff>images/FaceTrackNoIR.ico</iconset>
 +  </property>
 +  <property name="layoutDirection">
 +   <enum>Qt::LeftToRight</enum>
 +  </property>
 +  <property name="autoFillBackground">
 +   <bool>false</bool>
 +  </property>
 +  <layout class="QVBoxLayout" name="_vertical_layout">
 +   <item>
 +    <layout class="QHBoxLayout">
 +     <item>
 +      <widget class="QLabel" name="textLabel2">
 +       <property name="sizePolicy">
 +        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
 +         <horstretch>0</horstretch>
 +         <verstretch>0</verstretch>
 +        </sizepolicy>
 +       </property>
 +       <property name="text">
 +        <string>There are no setting necessary for SimConnect</string>
 +       </property>
 +       <property name="alignment">
 +        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
 +       </property>
 +       <property name="wordWrap">
 +        <bool>false</bool>
 +       </property>
 +      </widget>
 +     </item>
 +    </layout>
 +   </item>
 +   <item>
 +    <spacer name="verticalSpacer">
 +     <property name="orientation">
 +      <enum>Qt::Vertical</enum>
 +     </property>
 +     <property name="sizeHint" stdset="0">
 +      <size>
 +       <width>20</width>
 +       <height>40</height>
 +      </size>
 +     </property>
 +    </spacer>
 +   </item>
 +   <item>
 +    <layout class="QHBoxLayout" name="horizontalLayout">
 +     <item>
 +      <spacer name="horizontalSpacer_2">
 +       <property name="orientation">
 +        <enum>Qt::Horizontal</enum>
 +       </property>
 +       <property name="sizeHint" stdset="0">
 +        <size>
 +         <width>40</width>
 +         <height>20</height>
 +        </size>
 +       </property>
 +      </spacer>
 +     </item>
 +     <item>
 +      <layout class="QHBoxLayout" name="horizontalLayout_2">
 +       <property name="sizeConstraint">
 +        <enum>QLayout::SetDefaultConstraint</enum>
 +       </property>
 +       <item>
 +        <widget class="QPushButton" name="btnOK">
 +         <property name="sizePolicy">
 +          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
 +           <horstretch>0</horstretch>
 +           <verstretch>0</verstretch>
 +          </sizepolicy>
 +         </property>
 +         <property name="minimumSize">
 +          <size>
 +           <width>100</width>
 +           <height>0</height>
 +          </size>
 +         </property>
 +         <property name="maximumSize">
 +          <size>
 +           <width>100</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="text">
 +          <string>OK</string>
 +         </property>
 +        </widget>
 +       </item>
 +       <item>
 +        <widget class="QPushButton" name="btnCancel">
 +         <property name="sizePolicy">
 +          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
 +           <horstretch>0</horstretch>
 +           <verstretch>0</verstretch>
 +          </sizepolicy>
 +         </property>
 +         <property name="minimumSize">
 +          <size>
 +           <width>100</width>
 +           <height>0</height>
 +          </size>
 +         </property>
 +         <property name="maximumSize">
 +          <size>
 +           <width>100</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="text">
 +          <string>Cancel</string>
 +         </property>
 +        </widget>
 +       </item>
 +      </layout>
 +     </item>
 +     <item>
 +      <spacer name="horizontalSpacer">
 +       <property name="orientation">
 +        <enum>Qt::Horizontal</enum>
 +       </property>
 +       <property name="sizeType">
 +        <enum>QSizePolicy::Fixed</enum>
 +       </property>
 +       <property name="sizeHint" stdset="0">
 +        <size>
 +         <width>10</width>
 +         <height>20</height>
 +        </size>
 +       </property>
 +      </spacer>
 +     </item>
 +    </layout>
 +   </item>
 +  </layout>
 + </widget>
 + <resources/>
 + <connections/>
 + <slots>
 +  <slot>startEngineClicked()</slot>
 +  <slot>stopEngineClicked()</slot>
 +  <slot>cameraSettingsClicked()</slot>
 + </slots>
 +</ui>
 diff --git a/ftnoir_protocol_sc/Protocol.qrc b/ftnoir_protocol_sc/Protocol.qrc new file mode 100644 index 00000000..de6018af --- /dev/null +++ b/ftnoir_protocol_sc/Protocol.qrc @@ -0,0 +1,5 @@ +<RCC> +    <qresource prefix="/"> +        <file>images/FSX.ico</file> +    </qresource> +</RCC> diff --git a/ftnoir_protocol_sc/SCServer.manifest b/ftnoir_protocol_sc/SCServer.manifest new file mode 100644 index 00000000..19b123ba --- /dev/null +++ b/ftnoir_protocol_sc/SCServer.manifest @@ -0,0 +1,13 @@ +<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
 +<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
 +  <dependency>
 +    <dependentAssembly>
 +      <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect ' version='10.0.60905.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
 +    </dependentAssembly>
 +  </dependency>
 +  <dependency>
 +    <dependentAssembly>
 +      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
 +    </dependentAssembly>
 +  </dependency>
 +</assembly>
 diff --git a/ftnoir_protocol_sc/SimConnect.aps b/ftnoir_protocol_sc/SimConnect.aps Binary files differnew file mode 100644 index 00000000..89c5a65a --- /dev/null +++ b/ftnoir_protocol_sc/SimConnect.aps diff --git a/ftnoir_protocol_sc/ftnoir_protocol_SC_dialog.cpp b/ftnoir_protocol_sc/ftnoir_protocol_SC_dialog.cpp new file mode 100644 index 00000000..9047fa61 --- /dev/null +++ b/ftnoir_protocol_sc/ftnoir_protocol_SC_dialog.cpp @@ -0,0 +1,157 @@ +/********************************************************************************
 +* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 +*					gamers from Holland, who don't like to pay much for			*
 +*					head-tracking.												*
 +*																				*
 +* Copyright (C) 2012	Wim Vriend (Developing)									*
 +*						Ron Hendriks (Researching and Testing)					*
 +*																				*
 +* Homepage																		*
 +*																				*
 +* This program is free software; you can redistribute it and/or modify it		*
 +* under the terms of the GNU General Public License as published by the			*
 +* Free Software Foundation; either version 3 of the License, or (at your		*
 +* option) any later version.													*
 +*																				*
 +* This program is distributed in the hope that it will be useful, but			*
 +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 +* more details.																	*
 +*																				*
 +* You should have received a copy of the GNU General Public License along		*
 +* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 +*																				*
 +********************************************************************************/
 +/*
 +	Modifications (last one on top):
 +		20120830 - WVR: The Dialog class was used to get general info on the DLL. This
 +						had a big disadvantage: the complete dialog was loaded, just to get
 +						some data and then it was deleted again (without ever showing the dialog).
 +						The ProtocolDll class solves this.
 +						The functions to get the name(s) and icon were removed from the two other classes.
 +*/
 +#include "ftnoir_protocol_SC.h"
 +#include <QDebug>
 +
 +//*******************************************************************************************************
 +// FaceTrackNoIR Client Settings-dialog.
 +//*******************************************************************************************************
 +
 +//
 +// Constructor for server-settings-dialog
 +//
 +SCControls::SCControls() :
 +QWidget()
 +{
 +	ui.setupUi( this );
 +
 +	// Connect Qt signals to member-functions
 +	connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
 +	connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
 +	//connect(ui.cbxSelectPPJoyNumber, SIGNAL(currentIndexChanged(int)), this, SLOT(virtualJoystickSelected( int )));
 +
 +	theProtocol = NULL;
 +
 +	// Load the settings from the current .INI-file
 +	loadSettings();
 +}
 +
 +//
 +// Destructor for server-dialog
 +//
 +SCControls::~SCControls() {
 +	qDebug() << "~SCControls() says: started";
 +}
 +
 +void SCControls::Release()
 +{
 +    delete this;
 +}
 +
 +//
 +// Initialize tracker-client-dialog
 +//
 +void SCControls::Initialize(QWidget *parent) {
 +
 +	QPoint offsetpos(100, 100);
 +	if (parent) {
 +		this->move(parent->pos() + offsetpos);
 +	}
 +	show();
 +}
 +
 +//
 +// OK clicked on server-dialog
 +//
 +void SCControls::doOK() {
 +	save();
 +	this->close();
 +}
 +
 +// override show event
 +void SCControls::showEvent ( QShowEvent * event ) {
 +	loadSettings();
 +}
 +
 +//
 +// Cancel clicked on server-dialog
 +//
 +void SCControls::doCancel() {
 +	//
 +	// Ask if changed Settings should be saved
 +	//
 +	if (settingsDirty) {
 +		int ret = QMessageBox::question ( this, "Settings have changed", "Do you want to save the settings?", QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Discard );
 +
 +		qDebug() << "doCancel says: answer =" << ret;
 +
 +		switch (ret) {
 +			case QMessageBox::Save:
 +				save();
 +				this->close();
 +				break;
 +			case QMessageBox::Discard:
 +				this->close();
 +				break;
 +			case QMessageBox::Cancel:
 +				// Cancel was clicked
 +				break;
 +			default:
 +				// should never be reached
 +			break;
 +		}
 +	}
 +	else {
 +		this->close();
 +	}
 +}
 +
 +//
 +// Load the current Settings from the currently 'active' INI-file.
 +//
 +void SCControls::loadSettings() {
 +
 +	settingsDirty = false;
 +}
 +
 +//
 +// Save the current Settings to the currently 'active' INI-file.
 +//
 +void SCControls::save() {
 +
 +	settingsDirty = false;
 +}
 +
 +////////////////////////////////////////////////////////////////////////////////
 +// Factory function that creates instances if the Protocol-settings dialog object.
 +
 +// Export both decorated and undecorated names.
 +//   GetProtocolDialog     - Undecorated name, which can be easily used with GetProcAddress
 +//                          Win32 API function.
 +//   _GetProtocolDialog@0  - Common name decoration for __stdcall functions in C language.
 +#pragma comment(linker, "/export:GetProtocolDialog=_GetProtocolDialog@0")
 +
 +FTNOIR_PROTOCOL_BASE_EXPORT IProtocolDialogPtr __stdcall GetProtocolDialog( )
 +{
 +	return new SCControls;
 +}
 diff --git a/ftnoir_protocol_sc/ftnoir_protocol_SC_dll.cpp b/ftnoir_protocol_sc/ftnoir_protocol_SC_dll.cpp new file mode 100644 index 00000000..f67f95db --- /dev/null +++ b/ftnoir_protocol_sc/ftnoir_protocol_SC_dll.cpp @@ -0,0 +1,56 @@ +/********************************************************************************
 +* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 +*					gamers from Holland, who don't like to pay much for			*
 +*					head-tracking.												*
 +*																				*
 +* Copyright (C) 2012	Wim Vriend (Developing)									*
 +*						Ron Hendriks (Researching and Testing)					*
 +*																				*
 +* Homepage																		*
 +*																				*
 +* This program is free software; you can redistribute it and/or modify it		*
 +* under the terms of the GNU General Public License as published by the			*
 +* Free Software Foundation; either version 3 of the License, or (at your		*
 +* option) any later version.													*
 +*																				*
 +* This program is distributed in the hope that it will be useful, but			*
 +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 +* more details.																	*
 +*																				*
 +* You should have received a copy of the GNU General Public License along		*
 +* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 +*																				*
 +********************************************************************************/
 +/*
 +	Modifications (last one on top):
 +		20120830 - WVR: The Dialog class was used to get general info on the DLL. This
 +						had a big disadvantage: the complete dialog was loaded, just to get
 +						some data and then it was deleted again (without ever showing the dialog).
 +						The ProtocolDll class solves this.
 +						The functions to get the name(s) and icon were removed from the two other classes.
 +*/
 +#include "ftnoir_protocol_SC.h"
 +#include <QDebug>
 +
 +FTNoIR_ProtocolDll::FTNoIR_ProtocolDll() {
 +}
 +
 +FTNoIR_ProtocolDll::~FTNoIR_ProtocolDll()
 +{
 +
 +}
 +
 +////////////////////////////////////////////////////////////////////////////////
 +// Factory function that creates instances if the Protocol object.
 +
 +// Export both decorated and undecorated names.
 +//   GetProtocolDll     - Undecorated name, which can be easily used with GetProcAddress
 +//						Win32 API function.
 +//   _GetProtocolDll@0  - Common name decoration for __stdcall functions in C language.
 +#pragma comment(linker, "/export:GetProtocolDll=_GetProtocolDll@0")
 +
 +FTNOIR_PROTOCOL_BASE_EXPORT IProtocolDllPtr __stdcall GetProtocolDll()
 +{
 +	return new FTNoIR_ProtocolDll;
 +}
 diff --git a/ftnoir_protocol_sc/images/FSX.ico b/ftnoir_protocol_sc/images/FSX.ico Binary files differnew file mode 100644 index 00000000..1c71d409 --- /dev/null +++ b/ftnoir_protocol_sc/images/FSX.ico  | 
