From 1755463ec4038e462ce988c11b925c79d731858a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 23 Aug 2018 01:45:42 +0200 Subject: [PATCH] Improved way to get situation with altitude offset --- src/blackmisc/aviation/aircraftsituation.cpp | 8 ++++++++ src/blackmisc/aviation/aircraftsituation.h | 3 +++ src/blackmisc/simulation/remoteaircraftprovider.cpp | 5 +---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/aviation/aircraftsituation.cpp b/src/blackmisc/aviation/aircraftsituation.cpp index 5f2f6a47e..f60231a4d 100644 --- a/src/blackmisc/aviation/aircraftsituation.cpp +++ b/src/blackmisc/aviation/aircraftsituation.cpp @@ -965,6 +965,14 @@ namespace BlackMisc return alt; } + CAircraftSituation CAircraftSituation::withAltitudeOffset(const CLength &offset) const + { + if (offset.isNull()) { return *this; } + CAircraftSituation copy(*this); + copy.addAltitudeOffset(offset); + return copy; + } + void CAircraftSituation::setPressureAltitude(const CAltitude &altitude) { Q_ASSERT(altitude.getAltitudeType() == CAltitude::PressureAltitude); diff --git a/src/blackmisc/aviation/aircraftsituation.h b/src/blackmisc/aviation/aircraftsituation.h index 9555761fc..5dca456bb 100644 --- a/src/blackmisc/aviation/aircraftsituation.h +++ b/src/blackmisc/aviation/aircraftsituation.h @@ -392,6 +392,9 @@ namespace BlackMisc //! Add offset to altitude CAltitude addAltitudeOffset(const PhysicalQuantities::CLength &offset); + //! Situation with altitude offset + CAircraftSituation withAltitudeOffset(const PhysicalQuantities::CLength &offset) const; + //! Get pressure altitude const CAltitude &getPressureAltitude() const { return m_pressureAltitude; } diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index aca5f18f3..f92c9fdf8 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -630,10 +630,7 @@ namespace BlackMisc os = m_testOffset.value(cs); } if (os.isNull() || os.isZeroEpsilonConsidered()) { return situation; } - const CAltitude newAlt = situation.getAltitude().withOffset(os); - CAircraftSituation newSituation(situation); - newSituation.setAltitude(newAlt); - return newSituation; + return situation.withAltitudeOffset(os); } CStatusMessageList CRemoteAircraftProvider::getAircraftPartsHistory(const CCallsign &callsign) const