diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp index 7a2692e73..05b04cdbf 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp @@ -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; } diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h index 40a5f3d36..efc56489a 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h @@ -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); diff --git a/src/plugins/simulator/fsxcommon/simconnectobject.h b/src/plugins/simulator/fsxcommon/simconnectobject.h index 329166beb..2872d9d23 100644 --- a/src/plugins/simulator/fsxcommon/simconnectobject.h +++ b/src/plugins/simulator/fsxcommon/simconnectobject.h @@ -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 diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index 36f231d70..2a2af8706 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -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 { diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h index 33ff42558..884787cd8 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h @@ -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