mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-27 02:55:44 +08:00
refs #836, elevation for own FSX/P3D aircraft in driver
plus some minor improvements such as const where applicable
This commit is contained in:
committed by
Mathew Sutcliffe
parent
443658e317
commit
1a500340f0
@@ -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");
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user