diff --git a/src/blackmisc/aviation/aircraftpartslist.cpp b/src/blackmisc/aviation/aircraftpartslist.cpp index 40cc71919..fbd761d46 100644 --- a/src/blackmisc/aviation/aircraftpartslist.cpp +++ b/src/blackmisc/aviation/aircraftpartslist.cpp @@ -22,5 +22,9 @@ namespace BlackMisc CSequence(other) { } + CAircraftPartsList::CAircraftPartsList(std::initializer_list il) : + CSequence(il) + { } + } // namespace } // namespace diff --git a/src/blackmisc/aviation/aircraftpartslist.h b/src/blackmisc/aviation/aircraftpartslist.h index d6d90cc38..f8011d589 100644 --- a/src/blackmisc/aviation/aircraftpartslist.h +++ b/src/blackmisc/aviation/aircraftpartslist.h @@ -39,6 +39,9 @@ namespace BlackMisc //! Construct from a base class object. CAircraftPartsList(const CSequence &other); + + //! Construct from initializer list. + CAircraftPartsList(std::initializer_list il); }; } //namespace diff --git a/src/blackmisc/aviation/aircraftsituationlist.cpp b/src/blackmisc/aviation/aircraftsituationlist.cpp index 97d306369..48df03809 100644 --- a/src/blackmisc/aviation/aircraftsituationlist.cpp +++ b/src/blackmisc/aviation/aircraftsituationlist.cpp @@ -27,5 +27,9 @@ namespace BlackMisc CSequence(other) { } + CAircraftSituationList::CAircraftSituationList(std::initializer_list il) : + CSequence(il) + { } + } // namespace } // namespace diff --git a/src/blackmisc/aviation/aircraftsituationlist.h b/src/blackmisc/aviation/aircraftsituationlist.h index 712ad1d65..bdb0856e8 100644 --- a/src/blackmisc/aviation/aircraftsituationlist.h +++ b/src/blackmisc/aviation/aircraftsituationlist.h @@ -45,6 +45,8 @@ namespace BlackMisc //! Construct from a base class object. CAircraftSituationList(const CSequence &other); + //! Construct from initializer list. + CAircraftSituationList(std::initializer_list il); }; } // namespace } // namespace diff --git a/src/blackmisc/simulation/interpolator.cpp b/src/blackmisc/simulation/interpolator.cpp index f403bac46..9d16b8243 100644 --- a/src/blackmisc/simulation/interpolator.cpp +++ b/src/blackmisc/simulation/interpolator.cpp @@ -265,12 +265,26 @@ namespace BlackMisc template void CInterpolator::addAircraftSituation(const CAircraftSituation &situation) { + if (m_aircraftSituations.isEmpty()) + { + // make sure we have enough situations to do start interpolating immediately without waiting for more updates + m_aircraftSituations = { situation, situation }; + m_aircraftSituations.back().addMsecs(-10000); // number here does + m_aircraftSituations.front().addMsecs(-5000); // not really matter + } m_aircraftSituations.push_frontMaxElements(situation, IRemoteAircraftProvider::MaxSituationsPerCallsign); } template void CInterpolator::addAircraftParts(const CAircraftParts &parts) { + if (m_aircraftParts.isEmpty()) + { + // make sure we have enough parts to do start interpolating immediately without waiting for more updates + m_aircraftParts = { parts, parts }; + m_aircraftParts.back().addMsecs(-10000); // number here does + m_aircraftParts.front().addMsecs(-5000); // not really matter + } m_aircraftParts.push_front(parts); IRemoteAircraftProvider::removeOutdatedParts(m_aircraftParts); diff --git a/src/blackmisc/timestampbased.cpp b/src/blackmisc/timestampbased.cpp index ee2125732..3191f58da 100644 --- a/src/blackmisc/timestampbased.cpp +++ b/src/blackmisc/timestampbased.cpp @@ -137,6 +137,11 @@ namespace BlackMisc this->m_timestampMSecsSinceEpoch = QDateTime::currentMSecsSinceEpoch(); } + void ITimestampBased::addMsecs(qint64 ms) + { + this->m_timestampMSecsSinceEpoch += ms; + } + QString ITimestampBased::getFormattedUtcTimestampDhms() const { return this->hasValidTimestamp() ? diff --git a/src/blackmisc/timestampbased.h b/src/blackmisc/timestampbased.h index 3bad7a44d..872c645ac 100644 --- a/src/blackmisc/timestampbased.h +++ b/src/blackmisc/timestampbased.h @@ -86,6 +86,9 @@ namespace BlackMisc //! Set the current time as timestamp void setCurrentUtcTime(); + //! Add the given number of milliseconds to the timestamp. + void addMsecs(qint64 ms); + //! Formatted timestamp QString getFormattedUtcTimestampDhms() const;