From 3e70ab1207b7326779291fd08b0220c5e627f69a Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Mon, 9 Jan 2017 01:42:17 +0000 Subject: [PATCH] refs #852 Add a time offset to CAircraftParts. --- src/blackcore/airspacemonitor.cpp | 10 ++++++++++ src/blackmisc/aviation/aircraftparts.h | 13 ++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/blackcore/airspacemonitor.cpp b/src/blackcore/airspacemonitor.cpp index a093711c5..1383239ad 100644 --- a/src/blackcore/airspacemonitor.cpp +++ b/src/blackcore/airspacemonitor.cpp @@ -1227,11 +1227,21 @@ namespace BlackCore BLACK_VERIFY_X(!callsign.isEmpty(), Q_FUNC_INFO, "empty callsign"); if (callsign.isEmpty()) { return; } + // get time offset from situation + qint64 timeOffsetMs = 6000; //! \fixme 6000 is assumed default offset, copied from CNetworkVatlib::onPilotPositionUpdate + { + QReadLocker lock(&m_lockSituations); + const CAircraftSituationList &situationList = this->m_situationsByCallsign[callsign]; + if (!situationList.isEmpty()) { timeOffsetMs = situationList[0].getTimeOffsetMs(); } + } + // list sorted from new to old QWriteLocker lock(&m_lockParts); CAircraftPartsList &partsList = this->m_partsByCallsign[callsign]; partsList.push_frontMaxElements(parts, MaxPartsPerCallsign); + partsList.front().setTimeOffsetMs(timeOffsetMs); + if (!m_aircraftSupportingParts.contains(callsign)) { m_aircraftSupportingParts.push_back(callsign); // mark as callsign which supports parts diff --git a/src/blackmisc/aviation/aircraftparts.h b/src/blackmisc/aviation/aircraftparts.h index f41af9485..416aa0d1e 100644 --- a/src/blackmisc/aviation/aircraftparts.h +++ b/src/blackmisc/aviation/aircraftparts.h @@ -116,6 +116,15 @@ namespace BlackMisc //! Set aircraft on ground void setOnGround(bool onGround) { m_isOnGround = onGround; } + //! Milliseconds to add to timestamp for interpolation + void setTimeOffsetMs(qint64 offset) { this->m_timeOffsetMs = offset; } + + //! Milliseconds to add to timestamp for interpolation + qint64 getTimeOffsetMs() const { return this->m_timeOffsetMs; } + + //! Timestamp with offset added for interpolation + qint64 getAdjustedMSecsSinceEpoch() const { return this->getMSecsSinceEpoch() + this->getTimeOffsetMs(); } + //! \copydoc BlackMisc::Mixin::String::toQString QString convertToQString(bool i18n = false) const; @@ -126,6 +135,7 @@ namespace BlackMisc bool m_gearDown = false; bool m_spoilersOut = false; bool m_isOnGround = false; + qint64 m_timeOffsetMs = 0; BLACK_METACLASS( CAircraftParts, @@ -135,7 +145,8 @@ namespace BlackMisc BLACK_METAMEMBER_NAMED(spoilersOut, "spoilers_out"), BLACK_METAMEMBER_NAMED(engines, "engines"), BLACK_METAMEMBER_NAMED(isOnGround, "on_ground"), - BLACK_METAMEMBER(timestampMSecsSinceEpoch, 0, DisabledForJson | DisabledForComparison) + BLACK_METAMEMBER(timestampMSecsSinceEpoch, 0, DisabledForJson | DisabledForComparison), + BLACK_METAMEMBER(timeOffsetMs, 0, DisabledForJson | DisabledForComparison) ); }; } // namespace