refs #895, renamed data structure to DataDefinitionRemoteAircraftPartsWithoutLights

This commit is contained in:
Klaus Basan
2017-03-03 23:40:50 +01:00
committed by Mathew Sutcliffe
parent a737b27ce8
commit 4a0ddfb5d1
5 changed files with 43 additions and 43 deletions

View File

@@ -184,7 +184,7 @@ namespace BlackSimPlugin
return hr;
}
bool DataDefinitionRemoteAircraftParts::operator==(const DataDefinitionRemoteAircraftParts &rhs) const
bool DataDefinitionRemoteAircraftPartsWithoutLights::operator==(const DataDefinitionRemoteAircraftPartsWithoutLights &rhs) const
{
return std::tie(flapsLeadingEdgeLeftPercent, flapsLeadingEdgeRightPercent, flapsTrailingEdgeLeftPercent, flapsTrailingEdgeRightPercent,
gearHandlePosition, spoilersHandlePosition,
@@ -194,7 +194,7 @@ namespace BlackSimPlugin
rhs.engine1Combustion, rhs.engine2Combustion, rhs.engine3Combustion, rhs.engine4Combustion);
}
void DataDefinitionRemoteAircraftParts::setAllEngines(bool on)
void DataDefinitionRemoteAircraftPartsWithoutLights::setAllEngines(bool on)
{
engine1Combustion = on ? 1 : 0;
engine2Combustion = on ? 1 : 0;
@@ -202,7 +202,7 @@ namespace BlackSimPlugin
engine4Combustion = on ? 1 : 0;
}
void DataDefinitionRemoteAircraftParts::resetAllFlaps()
void DataDefinitionRemoteAircraftPartsWithoutLights::resetAllFlaps()
{
flapsLeadingEdgeLeftPercent = 0;
flapsLeadingEdgeRightPercent = 0;
@@ -210,7 +210,7 @@ namespace BlackSimPlugin
flapsTrailingEdgeRightPercent = 0;
}
void DataDefinitionRemoteAircraftParts::resetSpoilers()
void DataDefinitionRemoteAircraftPartsWithoutLights::resetSpoilers()
{
spoilersHandlePosition = 0;
}

View File

@@ -75,7 +75,7 @@ namespace BlackSimPlugin
};
//! Data struct of remote aircraft parts
struct DataDefinitionRemoteAircraftParts
struct DataDefinitionRemoteAircraftPartsWithoutLights
{
double flapsLeadingEdgeLeftPercent; //!< Leading edge left in percent
double flapsLeadingEdgeRightPercent; //!< Leading edge right in percent
@@ -89,7 +89,7 @@ namespace BlackSimPlugin
double engine4Combustion; //!< Engine 4 combustion flag
//! Equal to other parts
bool operator==(const DataDefinitionRemoteAircraftParts &rhs) const;
bool operator==(const DataDefinitionRemoteAircraftPartsWithoutLights &rhs) const;
//! All engines on/off
void setAllEngines(bool on);

View File

@@ -63,10 +63,10 @@ namespace BlackSimPlugin
void setCurrentLightsInSimulator(const BlackMisc::Aviation::CAircraftLights &lights) { m_currentLightsInSim = lights; }
//! Parts as sent to simulator
const DataDefinitionRemoteAircraftParts &getPartsAsSent() const { return m_partsAsSent; }
const DataDefinitionRemoteAircraftPartsWithoutLights &getPartsAsSent() const { return m_partsAsSent; }
//! Parts as sent to simulator
void setPartsAsSent(const DataDefinitionRemoteAircraftParts &parts) { m_partsAsSent = parts; }
void setPartsAsSent(const DataDefinitionRemoteAircraftPartsWithoutLights &parts) { m_partsAsSent = parts; }
//! Lights as sent to simulator
const BlackMisc::Aviation::CAircraftLights &getLightsAsSent() const { return m_lightsAsSent; }
@@ -128,7 +128,7 @@ namespace BlackSimPlugin
bool m_confirmedAdded = false;
bool m_pendingRemoved = false;
int m_lightsRequestedAt = -1;
DataDefinitionRemoteAircraftParts m_partsAsSent {}; //!< parts as sent
DataDefinitionRemoteAircraftPartsWithoutLights m_partsAsSent {}; //!< parts as sent
BlackMisc::Aviation::CAircraftLights m_currentLightsInSim { nullptr }; //!< current lights to know state for toggling
BlackMisc::Aviation::CAircraftLights m_lightsAsSent { nullptr }; //!< lights as sent to simulator
SIMCONNECT_PERIOD m_requestSimDataPeriod = SIMCONNECT_PERIOD_NEVER; //!< how often do we query ground elevation

View File

@@ -43,10 +43,10 @@ namespace BlackSimPlugin
namespace FsxCommon
{
CSimulatorFsxCommon::CSimulatorFsxCommon(const CSimulatorPluginInfo &info,
IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider,
IWeatherGridProvider *weatherGridProvider,
QObject *parent) :
IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider,
IWeatherGridProvider *weatherGridProvider,
QObject *parent) :
CSimulatorFsCommon(info, ownAircraftProvider, remoteAircraftProvider, weatherGridProvider, parent)
{
Q_ASSERT_X(ownAircraftProvider, Q_FUNC_INFO, "Missing provider");
@@ -868,7 +868,7 @@ namespace BlackSimPlugin
void CSimulatorFsxCommon::updateRemoteAircraft()
{
static_assert(sizeof(DataDefinitionRemoteAircraftParts) == sizeof(double) * 10, "DataDefinitionRemoteAircraftParts has an incorrect size.");
static_assert(sizeof(DataDefinitionRemoteAircraftPartsWithoutLights) == sizeof(double) * 10, "DataDefinitionRemoteAircraftParts has an incorrect size.");
Q_ASSERT_X(CThreadUtils::isCurrentThreadObjectThread(this), Q_FUNC_INFO, "thread");
// nothing to do, reset request id and exit
@@ -953,17 +953,17 @@ namespace BlackSimPlugin
if (!interpolationStatus.didInterpolationSucceed()) { return false; }
CAircraftLights lights;
DataDefinitionRemoteAircraftParts ddRemoteAircraftParts = {}; // init members
DataDefinitionRemoteAircraftPartsWithoutLights ddRemoteAircraftPartsWintoutLights = {}; // init members
const bool isOnGround = interpolatedSituation.isOnGround() == CAircraftSituation::OnGround;
const double gsKts = interpolatedSituation.getGroundSpeed().value(CSpeedUnit::kts());
ddRemoteAircraftParts.setAllEngines(true);
ddRemoteAircraftPartsWintoutLights.setAllEngines(true);
lights.setCabinOn(true);
lights.setRecognitionOn(true);
// when first detected moving, lights on
if (isOnGround)
{
ddRemoteAircraftParts.gearHandlePosition = 1;
ddRemoteAircraftPartsWintoutLights.gearHandlePosition = 1;
lights.setTaxiOn(true);
lights.setBeaconOn(true);
lights.setNavOn(true);
@@ -985,13 +985,13 @@ namespace BlackSimPlugin
// slow movements or parking
lights.setTaxiOn(false);
lights.setLandingOn(false);
ddRemoteAircraftParts.setAllEngines(false);
ddRemoteAircraftPartsWintoutLights.setAllEngines(false);
}
}
else
{
// not on ground
ddRemoteAircraftParts.gearHandlePosition = 0;
ddRemoteAircraftPartsWintoutLights.gearHandlePosition = 0;
lights.setTaxiOn(false);
lights.setBeaconOn(true);
lights.setNavOn(true);
@@ -1002,20 +1002,20 @@ namespace BlackSimPlugin
{
if (interpolatedSituation.getHeightAboveGround().value(CLengthUnit::ft()) < 1000)
{
ddRemoteAircraftParts.gearHandlePosition = 1;
ddRemoteAircraftParts.flapsTrailingEdgeRightPercent = 25;
ddRemoteAircraftParts.flapsTrailingEdgeLeftPercent = 25;
ddRemoteAircraftPartsWintoutLights.gearHandlePosition = 1;
ddRemoteAircraftPartsWintoutLights.flapsTrailingEdgeRightPercent = 25;
ddRemoteAircraftPartsWintoutLights.flapsTrailingEdgeLeftPercent = 25;
}
else if (interpolatedSituation.getHeightAboveGround().value(CLengthUnit::ft()) < 2000)
{
ddRemoteAircraftParts.gearHandlePosition = 1;
ddRemoteAircraftParts.flapsTrailingEdgeRightPercent = 10;
ddRemoteAircraftParts.flapsTrailingEdgeLeftPercent = 10;
ddRemoteAircraftPartsWintoutLights.gearHandlePosition = 1;
ddRemoteAircraftPartsWintoutLights.flapsTrailingEdgeRightPercent = 10;
ddRemoteAircraftPartsWintoutLights.flapsTrailingEdgeLeftPercent = 10;
}
}
}
return this->sendRemoteAircraftPartsToSimulator(simObj, ddRemoteAircraftParts, lights);
return this->sendRemoteAircraftPartsToSimulator(simObj, ddRemoteAircraftPartsWintoutLights, lights);
}
bool CSimulatorFsxCommon::updateRemoteAircraftParts(const CSimConnectObject &simObj, const CAircraftParts &parts, const CPartsStatus &partsStatus)
@@ -1023,44 +1023,44 @@ namespace BlackSimPlugin
if (!simObj.hasValidRequestAndObjectId()) { return false; }
if (!partsStatus.isSupportingParts()) { return false; }
DataDefinitionRemoteAircraftParts ddRemoteAircraftParts; // no init, all values will be set
ddRemoteAircraftParts.flapsLeadingEdgeLeftPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftParts.flapsLeadingEdgeRightPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftParts.flapsTrailingEdgeLeftPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftParts.flapsTrailingEdgeRightPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftParts.spoilersHandlePosition = parts.isSpoilersOut() ? 1 : 0;
ddRemoteAircraftParts.gearHandlePosition = parts.isGearDown() ? 1 : 0;
ddRemoteAircraftParts.engine1Combustion = parts.isEngineOn(1) ? 1 : 0;
ddRemoteAircraftParts.engine2Combustion = parts.isEngineOn(2) ? 1 : 0;
ddRemoteAircraftParts.engine3Combustion = parts.isEngineOn(3) ? 1 : 0;
ddRemoteAircraftParts.engine4Combustion = parts.isEngineOn(4) ? 1 : 0;
DataDefinitionRemoteAircraftPartsWithoutLights ddRemoteAircraftPartsWithoutLights; // no init, all values will be set
ddRemoteAircraftPartsWithoutLights.flapsLeadingEdgeLeftPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftPartsWithoutLights.flapsLeadingEdgeRightPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftPartsWithoutLights.flapsTrailingEdgeLeftPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftPartsWithoutLights.flapsTrailingEdgeRightPercent = parts.getFlapsPercent() / 100.0;
ddRemoteAircraftPartsWithoutLights.spoilersHandlePosition = parts.isSpoilersOut() ? 1 : 0;
ddRemoteAircraftPartsWithoutLights.gearHandlePosition = parts.isGearDown() ? 1 : 0;
ddRemoteAircraftPartsWithoutLights.engine1Combustion = parts.isEngineOn(1) ? 1 : 0;
ddRemoteAircraftPartsWithoutLights.engine2Combustion = parts.isEngineOn(2) ? 1 : 0;
ddRemoteAircraftPartsWithoutLights.engine3Combustion = parts.isEngineOn(3) ? 1 : 0;
ddRemoteAircraftPartsWithoutLights.engine4Combustion = parts.isEngineOn(4) ? 1 : 0;
CAircraftLights lights = parts.getLights();
lights.setRecognitionOn(parts.isAnyEngineOn());
lights.setCabinOn(parts.isAnyEngineOn());
return this->sendRemoteAircraftPartsToSimulator(simObj, ddRemoteAircraftParts, parts.getLights());
return this->sendRemoteAircraftPartsToSimulator(simObj, ddRemoteAircraftPartsWithoutLights, parts.getLights());
}
bool CSimulatorFsxCommon::sendRemoteAircraftPartsToSimulator(const CSimConnectObject &simObj, DataDefinitionRemoteAircraftParts &ddRemoteAircraftParts, const CAircraftLights &lights)
bool CSimulatorFsxCommon::sendRemoteAircraftPartsToSimulator(const CSimConnectObject &simObj, DataDefinitionRemoteAircraftPartsWithoutLights &ddRemoteAircraftPartsWithoutLights, const CAircraftLights &lights)
{
Q_ASSERT(m_hSimConnect);
const DWORD objectId = simObj.getObjectId();
// same as in simulator or same as already send to simulator?
const CAircraftLights sentLights(simObj.getLightsAsSent());
if (simObj.getPartsAsSent() == ddRemoteAircraftParts && sentLights == lights) { return true; }
if (simObj.getPartsAsSent() == ddRemoteAircraftPartsWithoutLights && sentLights == lights) { return true; }
// in case we sent, we sent everything
const HRESULT hr = SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts,
objectId, SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0,
sizeof(DataDefinitionRemoteAircraftParts), &ddRemoteAircraftParts);
sizeof(DataDefinitionRemoteAircraftPartsWithoutLights), &ddRemoteAircraftPartsWithoutLights);
if (hr == S_OK)
{
// Update data
CSimConnectObject &objUdpate = m_simConnectObjects[simObj.getCallsign()];
objUdpate.setPartsAsSent(ddRemoteAircraftParts);
objUdpate.setPartsAsSent(ddRemoteAircraftPartsWithoutLights);
}
else
{

View File

@@ -196,7 +196,7 @@ namespace BlackSimPlugin
const BlackMisc::Aviation::CAircraftSituation &interpolatedSituation, const BlackMisc::Simulation::CInterpolationStatus &interpolationStatus);
//! Send parts to simulator
bool sendRemoteAircraftPartsToSimulator(const CSimConnectObject &simObj, DataDefinitionRemoteAircraftParts &ddRemoteAircraftParts, const BlackMisc::Aviation::CAircraftLights &lights);
bool sendRemoteAircraftPartsToSimulator(const CSimConnectObject &simObj, DataDefinitionRemoteAircraftPartsWithoutLights &ddRemoteAircraftParts, const BlackMisc::Aviation::CAircraftLights &lights);
//! Send lights to simulator (those which have to be toggled)
//! \remark challenge here is that I can only sent those value if I have already obtained the current light state from simulator