From 8df4024bdea5a7a15d408dfbd8ee20981a49cc75 Mon Sep 17 00:00:00 2001 From: Roland Rossgotterer Date: Mon, 7 Jan 2019 16:22:47 +0100 Subject: [PATCH] Regularly update X-Plane simulated aircraft The simulated aircraft object has been set only once for each X-Plane aircraft as soon as adding to the simulator succeeded. Any updates to transponder codes, modes etc. were missed and never updated. To make sure we always have the latest information available, we update all known X-Plane aircraft every second in the slow timer tasks. Manifest Tasks: T502 --- src/plugins/simulator/xplane/simulatorxplane.cpp | 7 +++++++ src/plugins/simulator/xplane/xplanempaircraft.cpp | 5 +++++ src/plugins/simulator/xplane/xplanempaircraft.h | 3 +++ 3 files changed, 15 insertions(+) diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index ec8b1cb9e..fcfd25397 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -308,6 +308,13 @@ namespace BlackSimPlugin this->updateOwnParts(parts); this->requestRemoteAircraftDataFromXPlane(); + + for (CXPlaneMPAircraft &xplaneAircraft : m_xplaneAircraftObjects) + { + // Update remote aircraft to have the latest transponder modes, codes etc. + CSimulatedAircraft simulatedAircraft = this->getAircraftInRangeForCallsign(xplaneAircraft.getCallsign()); + xplaneAircraft.setSimulatedAircraft(simulatedAircraft); + } } } diff --git a/src/plugins/simulator/xplane/xplanempaircraft.cpp b/src/plugins/simulator/xplane/xplanempaircraft.cpp index 15a87ee3b..92f89a728 100644 --- a/src/plugins/simulator/xplane/xplanempaircraft.cpp +++ b/src/plugins/simulator/xplane/xplanempaircraft.cpp @@ -32,6 +32,11 @@ namespace BlackSimPlugin m_interpolator->initCorrespondingModel(aircraft.getModel()); } + void CXPlaneMPAircraft::setSimulatedAircraft(const CSimulatedAircraft &simulatedAircraft) + { + m_aircraft = simulatedAircraft; + } + QString CXPlaneMPAircraft::getInterpolatorInfo(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const { Q_ASSERT(m_interpolator); diff --git a/src/plugins/simulator/xplane/xplanempaircraft.h b/src/plugins/simulator/xplane/xplanempaircraft.h index b87e38745..5d4328a96 100644 --- a/src/plugins/simulator/xplane/xplanempaircraft.h +++ b/src/plugins/simulator/xplane/xplanempaircraft.h @@ -37,6 +37,9 @@ namespace BlackSimPlugin //! Destructor ~CXPlaneMPAircraft() {} + //! Set simulated aircraft + void setSimulatedAircraft(const BlackMisc::Simulation::CSimulatedAircraft &simulatedAircraft); + //! Get callsign const BlackMisc::Aviation::CCallsign &getCallsign() const { return m_aircraft.getCallsign(); }