From e42cbbe83426d5bfe1ccf79443c7d02a31bc199e Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Sun, 27 Apr 2014 18:45:31 +0200 Subject: [PATCH] Use "GEAR HANDLE POSITION" instead of single gear positions refs #224 --- .../fsx/simconnect_datadefinition.cpp | 10 +++------ .../simulator/fsx/simconnect_datadefinition.h | 14 +++++------- src/plugins/simulator/fsx/simulator_fsx.cpp | 22 +++++++------------ 3 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/plugins/simulator/fsx/simconnect_datadefinition.cpp b/src/plugins/simulator/fsx/simconnect_datadefinition.cpp index 87fc6821c..0aac761da 100644 --- a/src/plugins/simulator/fsx/simconnect_datadefinition.cpp +++ b/src/plugins/simulator/fsx/simconnect_datadefinition.cpp @@ -19,7 +19,7 @@ namespace BlackSimPlugin HRESULT hr = S_OK; hr = initOwnAircraft(hSimConnect); hr = initRemoteAircraftSituation(hSimConnect); - hr = initAircraftConfiguration(hSimConnect); + hr = initGearHandlePosition(hSimConnect); return hr; } @@ -50,14 +50,10 @@ namespace BlackSimPlugin return hr; } - HRESULT CSimConnectDataDefinition::initAircraftConfiguration(const HANDLE hSimConnect) + HRESULT CSimConnectDataDefinition::initGearHandlePosition(const HANDLE hSimConnect) { HRESULT hr = S_OK; - hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataAircraftConfiguration, "GEAR CENTER POSITION", "Percent Over 100"); - hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataAircraftConfiguration, "GEAR LEFT POSITION", "Percent Over 100"); - hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataAircraftConfiguration, "GEAR RIGHT POSITION", "Percent Over 100"); - hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataAircraftConfiguration, "GEAR TAIL POSITION", "Percent Over 100"); - hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataAircraftConfiguration, "GEAR AUX POSITION", "Percent Over 100"); + hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataDefinitionGearHandlePosition, "GEAR HANDLE POSITION", "BOOL", SIMCONNECT_DATATYPE_INT32); return hr; } } diff --git a/src/plugins/simulator/fsx/simconnect_datadefinition.h b/src/plugins/simulator/fsx/simconnect_datadefinition.h index 0afc3be7d..5e8e9a7ed 100644 --- a/src/plugins/simulator/fsx/simconnect_datadefinition.h +++ b/src/plugins/simulator/fsx/simconnect_datadefinition.h @@ -6,6 +6,8 @@ #ifndef BLACKSIMPLUGIN_FSX_SIMCONNECT_DATADEFINITION_H #define BLACKSIMPLUGIN_FSX_SIMCONNECT_DATADEFINITION_H +#include + #ifndef NOMINMAX #define NOMINMAX #endif @@ -41,13 +43,9 @@ namespace BlackSimPlugin }; //! \brief Data struct of aircraft position - struct DataDefinitionAircraftConfiguration + struct DataDefinitionGearHandlePosition { - double gearCenter; //!< Gear center - double gearLeft; //!< Gear left - double gearRight; //!< Gear right - double gearTail; //!< Gear tail - double gearAux; //!< Gear aux + qint32 gearHandlePosition; //!< Bool, 1 if gear handle is applied otherwise 0 }; //! \brief Handles SimConnect data definitions @@ -59,7 +57,7 @@ namespace BlackSimPlugin enum DataDefiniton { DataOwnAircraft, DataDefinitionRemoteAircraftSituation, - DataAircraftConfiguration + DataDefinitionGearHandlePosition }; //! \brief SimConnect request ID's @@ -96,7 +94,7 @@ namespace BlackSimPlugin * \param hSimConnect * \return */ - static HRESULT initAircraftConfiguration(const HANDLE hSimConnect); + static HRESULT initGearHandlePosition(const HANDLE hSimConnect); }; } } diff --git a/src/plugins/simulator/fsx/simulator_fsx.cpp b/src/plugins/simulator/fsx/simulator_fsx.cpp index 6c93fc83c..bc1e10d7e 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.cpp +++ b/src/plugins/simulator/fsx/simulator_fsx.cpp @@ -293,13 +293,10 @@ namespace BlackSimPlugin SimConnect_TransmitClientEvent(m_hSimConnect, objectID, EVENT_FREEZEATT, 1, SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY); - DataDefinitionAircraftConfiguration configuration; - configuration.gearCenter = 100.0; - configuration.gearLeft = 100.0; - configuration.gearRight = 100.0; - configuration.gearTail = 100.0; - configuration.gearAux = 100.0; - SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::DataAircraftConfiguration, objectID, SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(DataDefinitionAircraftConfiguration), &configuration); + DataDefinitionGearHandlePosition gearHandle; + gearHandle.gearHandlePosition = 1; + + SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::DataDefinitionGearHandlePosition, objectID, SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(gearHandle), &gearHandle); SimConnectObject simObject; foreach(simObject, m_simConnectObjects) @@ -364,19 +361,16 @@ namespace BlackSimPlugin DataDefinitionRemoteAircraftSituation ddAircraftSituation; ddAircraftSituation.position = position; - DataDefinitionAircraftConfiguration configuration; - configuration.gearCenter = 100.0; - configuration.gearLeft = 100.0; - configuration.gearRight = 100.0; - configuration.gearTail = 100.0; - configuration.gearAux = 100.0; + + DataDefinitionGearHandlePosition gearHandle; + gearHandle.gearHandlePosition = 1; if (simObj.m_objectId != 0) { SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::DataDefinitionRemoteAircraftSituation, simObj.m_objectId, SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(ddAircraftSituation), &ddAircraftSituation); // With the following SimConnect call all aircrafts loose their red tag. No idea why though. - SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::DataAircraftConfiguration, simObj.m_objectId, SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(DataDefinitionAircraftConfiguration), &configuration); + SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::DataDefinitionGearHandlePosition, simObj.m_objectId, SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(gearHandle), &gearHandle); } } }