refs #863 Each aircraft gets its own interpolator instance,

so each one can cache calculations from one frame to the next.
The recent situations and parts are members of the interpolator.
This commit is contained in:
Mathew Sutcliffe
2017-02-05 15:54:39 +00:00
parent 2181702c5c
commit a167cc8e43
17 changed files with 108 additions and 87 deletions

View File

@@ -11,7 +11,7 @@
#define DIRECTPLAY_CLIENT_H
#include "directplaypeer.h"
#include "blackmisc/simulation/interpolator.h"
#include "blackmisc/simulation/interpolatorlinear.h"
#include "blackmisc/aviation/aircraftsituation.h"
#include "blackmisc/pq/time.h"
#include "blackmisc/aviation/callsign.h"
@@ -41,8 +41,7 @@ namespace BlackSimPlugin
//! Constructor
CFs9Client(const BlackMisc::Aviation::CCallsign &callsign, const QString &modelName,
BlackMisc::Simulation::IInterpolator *interpolator, const BlackMisc::PhysicalQuantities::CTime &updateInterval,
QObject *owner);
const BlackMisc::PhysicalQuantities::CTime &updateInterval, QObject *owner);
//! Destructor
virtual ~CFs9Client();
@@ -50,6 +49,9 @@ namespace BlackSimPlugin
//! Set DirectPlay host address
void setHostAddress(const QString &hostAddress);
//! Get interpolator
BlackMisc::Simulation::IInterpolator *getInterpolator() { return &m_interpolator; }
//! Set interpolation setup
//! \threadsafe
void setInterpolationSetup(const BlackMisc::Simulation::CInterpolationAndRenderingSetup &setup);
@@ -95,7 +97,7 @@ namespace BlackSimPlugin
BlackMisc::Simulation::CInterpolationAndRenderingSetup getInterpolationSetup() const;
BlackMisc::PhysicalQuantities::CTime m_updateInterval;
BlackMisc::Simulation::IInterpolator *m_interpolator = nullptr;
BlackMisc::Simulation::CInterpolatorLinear m_interpolator;
BlackMisc::Simulation::CInterpolationAndRenderingSetup m_interpolationSetup;
mutable QReadWriteLock m_interpolationSetupMutex;
QString m_modelName;