From 31a01d74c62862449f688a7c590267e44e9f181f Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 15 Mar 2017 22:12:48 +0000 Subject: [PATCH] refs #896 Enable toggle of interpolator mode in X-Plane. --- src/xbus/traffic.cpp | 14 ++++++++++++++ src/xbus/traffic.h | 4 ++++ 2 files changed, 18 insertions(+) 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)