diff --git a/src/blackcore/interpolator.h b/src/blackcore/interpolator.h index 5f9988b73..dd9c1d8e5 100644 --- a/src/blackcore/interpolator.h +++ b/src/blackcore/interpolator.h @@ -7,6 +7,7 @@ #define BLACKCORE_INTERPOLATOR_H #include "blackmisc/avaircraftsituation.h" +#include namespace BlackCore { @@ -40,6 +41,12 @@ namespace BlackCore * \return */ virtual BlackMisc::Aviation::CAircraftSituation getCurrentSituation() = 0; + + /*! + * \brief Get timestamp of the last received aircraft situation + * \return + */ + virtual const QDateTime &getTimeOfLastReceivedSituation() const = 0; }; } // namespace BlackCore diff --git a/src/blackcore/interpolator_linear.cpp b/src/blackcore/interpolator_linear.cpp index e7ea12ac8..d1db3a768 100644 --- a/src/blackcore/interpolator_linear.cpp +++ b/src/blackcore/interpolator_linear.cpp @@ -104,4 +104,9 @@ namespace BlackCore return currentSituation; } + + const QDateTime &CInterpolatorLinear::getTimeOfLastReceivedSituation() const + { + return m_aircraftSituationList.back().getTimestamp(); + } } diff --git a/src/blackcore/interpolator_linear.h b/src/blackcore/interpolator_linear.h index 9e8c565ba..9e79fbdbd 100644 --- a/src/blackcore/interpolator_linear.h +++ b/src/blackcore/interpolator_linear.h @@ -36,6 +36,9 @@ namespace BlackCore //! \copydoc IInterpolator::getCurrentSituation() virtual BlackMisc::Aviation::CAircraftSituation getCurrentSituation() override; + //! \copydoc IInterpolator::getTimeOfLastReceivedSituation() + virtual const QDateTime &getTimeOfLastReceivedSituation() const override; + private: BlackMisc::Aviation::CAircraftSituationList m_aircraftSituationList; diff --git a/src/plugins/simulator/fsx/simulator_fsx.cpp b/src/plugins/simulator/fsx/simulator_fsx.cpp index e3fbe7c4d..23ac23824 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.cpp +++ b/src/plugins/simulator/fsx/simulator_fsx.cpp @@ -388,6 +388,8 @@ namespace BlackSimPlugin { foreach(CSimConnectObject simObj, m_simConnectObjects) { + if (simObj.getInterpolator()->getTimeOfLastReceivedSituation().secsTo(QDateTime::currentDateTimeUtc()) > 15) + removeRemoteAircraft(simObj); if (simObj.getInterpolator()->hasEnoughAircraftSituations()) {