refs #836, elevation for own FSX/P3D aircraft in driver

plus some minor improvements such as const where applicable
This commit is contained in:
Klaus Basan
2016-12-16 22:08:41 +01:00
committed by Mathew Sutcliffe
parent 443658e317
commit 1a500340f0
5 changed files with 23 additions and 23 deletions

View File

@@ -38,8 +38,9 @@ namespace BlackSimPlugin
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "Plane Heading Degrees True", "Degrees"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "Plane Heading Degrees True", "Degrees");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "Plane Pitch Degrees", "Degrees"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "Plane Pitch Degrees", "Degrees");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "Plane Bank Degrees", "Degrees"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "Plane Bank Degrees", "Degrees");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GROUND VELOCITY", "knots"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GROUND VELOCITY", "Knots");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "SIM ON GROUND", "bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GROUND ALTITUDE", "Meters");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "SIM ON GROUND", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT STROBE", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT STROBE", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT LANDING", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT LANDING", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT TAXI", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT TAXI", "Bool");

View File

@@ -31,13 +31,14 @@ namespace BlackSimPlugin
//! \sa SimConnect events http://msdn.microsoft.com/en-us/library/cc526980.aspx //! \sa SimConnect events http://msdn.microsoft.com/en-us/library/cc526980.aspx
struct DataDefinitionOwnAircraft struct DataDefinitionOwnAircraft
{ {
double latitude; //!< Latitude double latitude; //!< Latitude (deg)
double longitude; //!< Longitude double longitude; //!< Longitude (deg)
double altitude; //!< Altitude double altitude; //!< Altitude (ft)
double trueHeading; //!< True heading double trueHeading; //!< True heading (deg)
double pitch; //!< Pitch double pitch; //!< Pitch (deg)
double bank; //!< Bank double bank; //!< Bank (deg)
double velocity; //!< Ground velocity double velocity; //!< Ground velocity
double elevation; //!< Elevation (m)
double simOnGround; //!< Is aircraft on ground? double simOnGround; //!< Is aircraft on ground?
double lightStrobe; //!< Is strobe light on? double lightStrobe; //!< Is strobe light on?
@@ -154,7 +155,7 @@ namespace BlackSimPlugin
RequestRemoveAircraft, RequestRemoveAircraft,
RequestOwnAircraftTitle, RequestOwnAircraftTitle,
RequestSimEnvironment, RequestSimEnvironment,
RequestSbData, // SB client area / XPDR mode .. RequestSbData, //!< SB client area / XPDR mode
}; };
//! Constructor //! Constructor

View File

@@ -372,7 +372,7 @@ namespace BlackSimPlugin
disconnectFrom(); disconnectFrom();
} }
void CSimulatorFsx::updateOwnAircraftFromSimulator(DataDefinitionOwnAircraft simulatorOwnAircraft) void CSimulatorFsx::updateOwnAircraftFromSimulator(const DataDefinitionOwnAircraft &simulatorOwnAircraft)
{ {
CSimulatedAircraft myAircraft(getOwnAircraft()); CSimulatedAircraft myAircraft(getOwnAircraft());
BlackMisc::Geo::CCoordinateGeodetic position; BlackMisc::Geo::CCoordinateGeodetic position;
@@ -386,12 +386,11 @@ namespace BlackSimPlugin
BlackMisc::Aviation::CAircraftSituation aircraftSituation; BlackMisc::Aviation::CAircraftSituation aircraftSituation;
aircraftSituation.setPosition(position); aircraftSituation.setPosition(position);
// MSFS has inverted pitch and bank angles // MSFS has inverted pitch and bank angles
simulatorOwnAircraft.pitch = -simulatorOwnAircraft.pitch; aircraftSituation.setPitch(CAngle(-simulatorOwnAircraft.pitch, CAngleUnit::deg()));
simulatorOwnAircraft.bank = -simulatorOwnAircraft.bank; aircraftSituation.setBank(CAngle(-simulatorOwnAircraft.bank, CAngleUnit::deg()));
aircraftSituation.setPitch(CAngle(simulatorOwnAircraft.pitch, CAngleUnit::deg()));
aircraftSituation.setBank(CAngle(simulatorOwnAircraft.bank, CAngleUnit::deg()));
aircraftSituation.setHeading(CHeading(simulatorOwnAircraft.trueHeading, CHeading::True, CAngleUnit::deg())); aircraftSituation.setHeading(CHeading(simulatorOwnAircraft.trueHeading, CHeading::True, CAngleUnit::deg()));
aircraftSituation.setGroundSpeed(CSpeed(simulatorOwnAircraft.velocity, CSpeedUnit::kts())); aircraftSituation.setGroundSpeed(CSpeed(simulatorOwnAircraft.velocity, CSpeedUnit::kts()));
aircraftSituation.setGroundElevation(CAltitude(simulatorOwnAircraft.elevation, CAltitude::MeanSeaLevel, CLengthUnit::m()));
aircraftSituation.setAltitude(CAltitude(simulatorOwnAircraft.altitude, CAltitude::MeanSeaLevel, CLengthUnit::ft())); aircraftSituation.setAltitude(CAltitude(simulatorOwnAircraft.altitude, CAltitude::MeanSeaLevel, CLengthUnit::ft()));
CAircraftLights lights(simulatorOwnAircraft.lightStrobe, CAircraftLights lights(simulatorOwnAircraft.lightStrobe,
@@ -464,7 +463,7 @@ namespace BlackSimPlugin
} }
} }
void CSimulatorFsx::updateOwnAircraftFromSimulator(DataDefinitionClientAreaSb sbDataArea) void CSimulatorFsx::updateOwnAircraftFromSimulator(const DataDefinitionClientAreaSb &sbDataArea)
{ {
CTransponder::TransponderMode newMode; CTransponder::TransponderMode newMode;
if (sbDataArea.isIdent()) if (sbDataArea.isIdent())
@@ -673,7 +672,7 @@ namespace BlackSimPlugin
if (simObject.isPendingAdded()) if (simObject.isPendingAdded())
{ {
// problem: we try to delete an aircraft just requested to be added // problem: we try to delete an aircraft just requested to be added
return false; //! \fixme improve return false; //! \fixme improve, since this scenario is not really covered
} }
simObject.setPendingRemoved(true); simObject.setPendingRemoved(true);

View File

@@ -106,10 +106,10 @@ namespace BlackSimPlugin
bool stillDisplayReceiveExceptions(); bool stillDisplayReceiveExceptions();
//! Called when data about our own aircraft are received //! Called when data about our own aircraft are received
void updateOwnAircraftFromSimulator(DataDefinitionOwnAircraft simulatorOwnAircraft); void updateOwnAircraftFromSimulator(const DataDefinitionOwnAircraft &simulatorOwnAircraft);
//! Update from SB client area //! Update from SB client area
void updateOwnAircraftFromSimulator(DataDefinitionClientAreaSb sbDataArea); void updateOwnAircraftFromSimulator(const DataDefinitionClientAreaSb &sbDataArea);
//! An AI aircraft was added in the simulator //! An AI aircraft was added in the simulator
bool simulatorReportedObjectAdded(DWORD objectID); bool simulatorReportedObjectAdded(DWORD objectID);

View File

@@ -173,15 +173,14 @@ namespace BlackSimPlugin
{ {
case CSimConnectDefinitions::RequestOwnAircraft: case CSimConnectDefinitions::RequestOwnAircraft:
{ {
static_assert(sizeof(DataDefinitionOwnAircraft) == 27 * sizeof(double), "DataDefinitionOwnAircraft has an incorrect size."); static_assert(sizeof(DataDefinitionOwnAircraft) == 28 * sizeof(double), "DataDefinitionOwnAircraft has an incorrect size.");
DataDefinitionOwnAircraft *ownAircaft; const DataDefinitionOwnAircraft *ownAircaft = (DataDefinitionOwnAircraft *)&pObjData->dwData;
ownAircaft = (DataDefinitionOwnAircraft *)&pObjData->dwData;
simulatorFsx->updateOwnAircraftFromSimulator(*ownAircaft); simulatorFsx->updateOwnAircraftFromSimulator(*ownAircaft);
break; break;
} }
case CSimConnectDefinitions::RequestOwnAircraftTitle: case CSimConnectDefinitions::RequestOwnAircraftTitle:
{ {
DataDefinitionOwnAircraftModel *dataDefinitionModel = (DataDefinitionOwnAircraftModel *) &pObjData->dwData; const DataDefinitionOwnAircraftModel *dataDefinitionModel = (DataDefinitionOwnAircraftModel *) &pObjData->dwData;
CAircraftModel model; CAircraftModel model;
model.setModelString(dataDefinitionModel->title); model.setModelString(dataDefinitionModel->title);
model.setModelType(CAircraftModel::TypeOwnSimulatorModel); model.setModelType(CAircraftModel::TypeOwnSimulatorModel);
@@ -190,7 +189,7 @@ namespace BlackSimPlugin
} }
case CSimConnectDefinitions::RequestSimEnvironment: case CSimConnectDefinitions::RequestSimEnvironment:
{ {
DataDefinitionSimEnvironment *simEnv = (DataDefinitionSimEnvironment *) &pObjData->dwData; const DataDefinitionSimEnvironment *simEnv = (DataDefinitionSimEnvironment *) &pObjData->dwData;
if (simulatorFsx->isTimeSynchronized()) if (simulatorFsx->isTimeSynchronized())
{ {
const int zh = simEnv->zuluTimeSeconds / 3600; const int zh = simEnv->zuluTimeSeconds / 3600;