From e0fe7ab1d0aefba80ce8e5374442c0f201a1c72b Mon Sep 17 00:00:00 2001 From: Roland Rossgotterer Date: Tue, 12 Mar 2019 15:22:03 +0100 Subject: [PATCH] [FS9] Ignore DirectPlay position updates Those position updates to not contain pressure altitude. --- src/plugins/simulator/fs9/simulatorfs9.cpp | 38 ++++++++++------------ 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/plugins/simulator/fs9/simulatorfs9.cpp b/src/plugins/simulator/fs9/simulatorfs9.cpp index 0fc2ed1cf..b12b29bd3 100644 --- a/src/plugins/simulator/fs9/simulatorfs9.cpp +++ b/src/plugins/simulator/fs9/simulatorfs9.cpp @@ -341,25 +341,6 @@ namespace BlackSimPlugin } case CFs9Sdk::MULTIPLAYER_PACKET_ID_POSITION_VELOCITY: { - MPPositionVelocity mpPositionVelocity; - MultiPlayerPacketParser::readMessage(message, mpPositionVelocity); - auto aircraftSituation = aircraftSituationFromFS9(mpPositionVelocity); - updateOwnSituation(aircraftSituation); - - if (m_isWeatherActivated) - { - const auto currentPosition = CCoordinateGeodetic { aircraftSituation.latitude(), aircraftSituation.longitude() }; - if (CWeatherScenario::isRealWeatherScenario(m_weatherScenarioSettings.get())) - { - if (m_lastWeatherPosition.isNull() || - calculateGreatCircleDistance(m_lastWeatherPosition, currentPosition).value(CLengthUnit::mi()) > 20) - { - m_lastWeatherPosition = currentPosition; - const auto weatherGrid = CWeatherGrid { { "GLOB", currentPosition } }; - requestWeatherGrid(weatherGrid, { this, &CSimulatorFs9::injectWeatherGrid }); - } - } - } break; } case CFs9Sdk::MPCHAT_PACKET_ID_CHAT_TEXT_SEND: @@ -390,7 +371,24 @@ namespace BlackSimPlugin m_skipCockpitUpdateCycles--; } - this->updateOwnSituation(simDataOwnAircraft.getSituation()); + CAircraftSituation aircraftSituation = simDataOwnAircraft.getSituation(); + this->updateOwnSituation(aircraftSituation); + + if (m_isWeatherActivated) + { + const auto currentPosition = CCoordinateGeodetic { aircraftSituation.latitude(), aircraftSituation.longitude() }; + if (CWeatherScenario::isRealWeatherScenario(m_weatherScenarioSettings.get())) + { + if (m_lastWeatherPosition.isNull() || + calculateGreatCircleDistance(m_lastWeatherPosition, currentPosition).value(CLengthUnit::mi()) > 20) + { + m_lastWeatherPosition = currentPosition; + const auto weatherGrid = CWeatherGrid { { "GLOB", currentPosition } }; + requestWeatherGrid(weatherGrid, { this, &CSimulatorFs9::injectWeatherGrid }); + } + } + } + reverseLookupAndUpdateOwnAircraftModel(simDataOwnAircraft.getModelString()); }