diff --git a/src/blackmisc/aviation/aircraftsituation.cpp b/src/blackmisc/aviation/aircraftsituation.cpp index 1173bd28e..9f6b9e06e 100644 --- a/src/blackmisc/aviation/aircraftsituation.cpp +++ b/src/blackmisc/aviation/aircraftsituation.cpp @@ -617,6 +617,14 @@ namespace BlackMisc return altCor; } + CAltitude CAircraftSituation::addAltitudeOffset(const CLength &offset) + { + if (offset.isNull()) { return this->getAltitude(); } + const CAltitude alt = this->getAltitude().withOffset(offset); + this->setAltitude(alt); + return alt; + } + 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 7a09e2e48..720513b73 100644 --- a/src/blackmisc/aviation/aircraftsituation.h +++ b/src/blackmisc/aviation/aircraftsituation.h @@ -293,6 +293,9 @@ namespace BlackMisc //! Set altitude void setAltitude(const CAltitude &altitude) { m_position.setGeodeticHeight(altitude); } + //! Add offset + CAltitude addAltitudeOffset(const PhysicalQuantities::CLength &offset); + //! 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 c3d618309..929874e02 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -480,10 +480,17 @@ namespace BlackMisc bool CRemoteAircraftProvider::testAddAltitudeOffsetToSituation(CAircraftSituation &situation) const { - if (!this->hasTestAltitudeOffset(situation.getCallsign())) { return false; } - const CCallsign cs(situation.getCallsign()); + // for global offset testing set "true" + constexpr bool globalOffsetTest = false; + const CCallsign cs(situation.getCallsign()); + if (!globalOffsetTest && !this->hasTestAltitudeOffset(cs)) { return false; } CLength os; + if (globalOffsetTest) + { + os = CLength(100, CLengthUnit::ft()); + } + else { QReadLocker l(&m_lockSituations); os = m_testOffset.value(cs);