diff --git a/src/xbus/traffic.cpp b/src/xbus/traffic.cpp index 55af7927e..014b81872 100644 --- a/src/xbus/traffic.cpp +++ b/src/xbus/traffic.cpp @@ -223,6 +223,7 @@ namespace XBus if (id) { auto plane = new Plane(id, callsign, aircraftIcao, airlineIcao, livery); + plane->interpolator.setMode(m_interpolatorMode); m_planesByCallsign[callsign] = plane; m_planesById[id] = plane; } @@ -390,6 +391,19 @@ namespace XBus } } + void CTraffic::toggleInterpolatorMode() + { + switch (m_interpolatorMode) + { + case BlackMisc::Simulation::CInterpolatorMulti::ModeLinear: m_interpolatorMode = BlackMisc::Simulation::CInterpolatorMulti::ModeSpline; break; + case BlackMisc::Simulation::CInterpolatorMulti::ModeSpline: m_interpolatorMode = BlackMisc::Simulation::CInterpolatorMulti::ModeLinear; break; + } + for (auto plane : m_planesByCallsign) + { + plane->interpolator.setMode(m_interpolatorMode); + } + } + } //! \endcond diff --git a/src/xbus/traffic.h b/src/xbus/traffic.h index 6b90313f4..fdc7f99c2 100644 --- a/src/xbus/traffic.h +++ b/src/xbus/traffic.h @@ -14,6 +14,7 @@ #include "datarefs.h" #include "terrainprobe.h" +#include "command.h" #include "blackmisc/aviation/aircraftsituationlist.h" #include "blackmisc/aviation/aircraftpartslist.h" #include "blackmisc/simulation/interpolatormulti.h" @@ -140,6 +141,9 @@ namespace XBus }; QHash m_planesByCallsign; QHash m_planesById; + BlackMisc::Simulation::CInterpolatorMulti::Mode m_interpolatorMode = BlackMisc::Simulation::CInterpolatorMulti::ModeSpline; + CCommand m_interpolatorModeCommand { "org/swift-project/xbus/toggle_lerp_mode", "Toggle interpolation mode", [this] { toggleInterpolatorMode(); } }; + void toggleInterpolatorMode(); int getPlaneData(void *id, int dataType, void *io_data); static int getPlaneData(void *id, int dataType, void *io_data, void *self)