diff --git a/src/blackmisc/simulation/interpolator.cpp b/src/blackmisc/simulation/interpolator.cpp index 7102ba058..8d109a0ef 100644 --- a/src/blackmisc/simulation/interpolator.cpp +++ b/src/blackmisc/simulation/interpolator.cpp @@ -36,19 +36,7 @@ namespace BlackMisc } template - BlackMisc::Aviation::CAircraftSituation CInterpolator::getInterpolatedSituation( - qint64 currentTimeSinceEpoc, const CInterpolationAndRenderingSetup &setup, - const CInterpolationHints &hints, CInterpolationStatus &status) const - { - status.reset(); - - auto currentSituation = derived()->getInterpolatedSituation(callsign, this->m_aircraftSituations, currentTimeSinceEpoc, setup, hints, status); - currentSituation.setCallsign(callsign); // make sure callsign is correct - return currentSituation; - } - - template - CAircraftParts CInterpolator::getInterpolatedParts(const CCallsign &callsign, const CAircraftPartsList &parts, qint64 currentTimeMsSinceEpoch, + CAircraftParts CInterpolator::getInterpolatedParts(const CCallsign &callsign, qint64 currentTimeMsSinceEpoch, const CInterpolationAndRenderingSetup &setup, CPartsStatus &partsStatus, bool log) const { Q_UNUSED(setup); @@ -56,9 +44,8 @@ namespace BlackMisc if (currentTimeMsSinceEpoch < 0) { currentTimeMsSinceEpoch = QDateTime::currentMSecsSinceEpoch(); } // find the first parts not in the correct order, keep only the parts before that one - if (parts.isEmpty()) { return {}; } - const auto end = std::is_sorted_until(parts.begin(), parts.end(), [](auto && a, auto && b) { return b.getAdjustedMSecsSinceEpoch() < a.getAdjustedMSecsSinceEpoch(); }); - const auto validParts = makeRange(parts.begin(), end); + const auto end = std::is_sorted_until(m_aircraftParts.begin(), m_aircraftParts.end(), [](auto && a, auto && b) { return b.getAdjustedMSecsSinceEpoch() < a.getAdjustedMSecsSinceEpoch(); }); + const auto validParts = makeRange(m_aircraftParts.begin(), end); // stop if we don't have any parts if (validParts.isEmpty()) { return {}; } @@ -112,14 +99,6 @@ namespace BlackMisc return currentParts; } - template - CAircraftParts CInterpolator::getInterpolatedParts(const CCallsign &callsign, qint64 currentTimeMsSinceEpoch, - const CInterpolationAndRenderingSetup &setup, CPartsStatus &partsStatus, bool log) const - { - partsStatus.reset(); - return this->getInterpolatedParts(callsign, this->m_aircraftParts, currentTimeMsSinceEpoch, setup, partsStatus, log); - } - template void CInterpolator::addAircraftSituation(const CAircraftSituation &situation) { diff --git a/src/blackmisc/simulation/interpolator.h b/src/blackmisc/simulation/interpolator.h index 36781fda9..3a6829262 100644 --- a/src/blackmisc/simulation/interpolator.h +++ b/src/blackmisc/simulation/interpolator.h @@ -44,12 +44,6 @@ namespace BlackMisc //! Current interpolated situation BlackMisc::Aviation::CAircraftSituation getInterpolatedSituation( const BlackMisc::Aviation::CCallsign &callsign, qint64 currentTimeSinceEpoc, - const CInterpolationAndRenderingSetup &setup, const CInterpolationHints &hints, CInterpolationStatus &status) const; - - //! Current interpolated situation, to be implemented by subclass - BlackMisc::Aviation::CAircraftSituation getInterpolatedSituation( - const BlackMisc::Aviation::CCallsign &callsign, - const BlackMisc::Aviation::CAircraftSituationList &situations, qint64 currentTimeSinceEpoc, const CInterpolationAndRenderingSetup &setup, const CInterpolationHints &hints, CInterpolationStatus &status) const { qFatal("Not implemented"); @@ -58,13 +52,7 @@ namespace BlackMisc //! Parts before given offset time (aka pending parts) BlackMisc::Aviation::CAircraftParts getInterpolatedParts( - const Aviation::CCallsign &callsign, - const BlackMisc::Aviation::CAircraftPartsList &parts, qint64 cutoffTime, - const CInterpolationAndRenderingSetup &setup, CPartsStatus &partsStatus, bool log = false) const; - - //! Parts before given offset time (aka pending parts) - BlackMisc::Aviation::CAircraftParts getInterpolatedParts( - const BlackMisc::Aviation::CCallsign &callsign, qint64 cutoffTime, + const Aviation::CCallsign &callsign, qint64 cutoffTime, const CInterpolationAndRenderingSetup &setup, CPartsStatus &partsStatus, bool log = false) const; //! Add a new aircraft situation diff --git a/src/blackmisc/simulation/interpolatorlinear.cpp b/src/blackmisc/simulation/interpolatorlinear.cpp index 04a0c5de7..4491c8ba4 100644 --- a/src/blackmisc/simulation/interpolatorlinear.cpp +++ b/src/blackmisc/simulation/interpolatorlinear.cpp @@ -40,7 +40,7 @@ namespace BlackMisc { namespace Simulation { - CAircraftSituation CInterpolatorLinear::getInterpolatedSituation(const CCallsign &callsign, const CAircraftSituationList &situations, qint64 currentTimeMsSinceEpoc, + CAircraftSituation CInterpolatorLinear::getInterpolatedSituation(const CCallsign &callsign, qint64 currentTimeMsSinceEpoc, const CInterpolationAndRenderingSetup &setup, const CInterpolationHints &hints, CInterpolationStatus &status) const { status.reset(); @@ -53,8 +53,8 @@ namespace BlackMisc // find the first situation not in the correct order, keep only the situations before that one // any updates in wrong chronological order are discounted - const auto end = std::is_sorted_until(situations.begin(), situations.end(), [](auto && a, auto && b) { return b.getAdjustedMSecsSinceEpoch() < a.getAdjustedMSecsSinceEpoch(); }); - const auto validSituations = makeRange(situations.begin(), end); + const auto end = std::is_sorted_until(m_aircraftSituations.begin(), m_aircraftSituations.end(), [](auto && a, auto && b) { return b.getAdjustedMSecsSinceEpoch() < a.getAdjustedMSecsSinceEpoch(); }); + const auto validSituations = makeRange(m_aircraftSituations.begin(), end); // find the first situation earlier than the current time const auto pivot = std::partition_point(validSituations.begin(), validSituations.end(), [ = ](auto && s) { return s.getAdjustedMSecsSinceEpoch() > currentTimeMsSinceEpoc; }); diff --git a/src/blackmisc/simulation/interpolatorlinear.h b/src/blackmisc/simulation/interpolatorlinear.h index c6623c6b3..fc7bbfcf0 100644 --- a/src/blackmisc/simulation/interpolatorlinear.h +++ b/src/blackmisc/simulation/interpolatorlinear.h @@ -36,13 +36,9 @@ namespace BlackMisc CInterpolator("CInterpolatorLinear", parent) {} - // public base class signature - using CInterpolator::getInterpolatedSituation; - //! \copydoc IInterpolator::getInterpolatedSituation BlackMisc::Aviation::CAircraftSituation getInterpolatedSituation( - const BlackMisc::Aviation::CCallsign &callsign, - const BlackMisc::Aviation::CAircraftSituationList &situations, qint64 currentTimeSinceEpoc, const CInterpolationAndRenderingSetup &setup, + const BlackMisc::Aviation::CCallsign &callsign, qint64 currentTimeSinceEpoc, const CInterpolationAndRenderingSetup &setup, const BlackMisc::Simulation::CInterpolationHints &hints, CInterpolationStatus &status) const; //! Log category