Use "GEAR HANDLE POSITION" instead of single gear positions

refs #224
This commit is contained in:
Roland Winklmeier
2014-04-27 18:45:31 +02:00
committed by Roland Winklmeier
parent 7c890c51d8
commit e42cbbe834
3 changed files with 17 additions and 29 deletions

View File

@@ -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;
}
}

View File

@@ -6,6 +6,8 @@
#ifndef BLACKSIMPLUGIN_FSX_SIMCONNECT_DATADEFINITION_H
#define BLACKSIMPLUGIN_FSX_SIMCONNECT_DATADEFINITION_H
#include <QtGlobal>
#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);
};
}
}

View File

@@ -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);
}
}
}