refs #840, add support for interpolation hints

This commit is contained in:
Klaus Basan
2016-12-23 23:30:00 +00:00
committed by Mathew Sutcliffe
parent 534b9fb09e
commit 46fafde7a0
13 changed files with 58 additions and 30 deletions

View File

@@ -16,6 +16,7 @@
#include "blackmisc/interpolator.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/airspaceaircraftsnapshot.h"
#include "blackmisc/simulation/interpolationhints.h"
#include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/pq/physicalquantity.h"
#include "blackmisc/simplecommandparser.h"
@@ -169,7 +170,7 @@ namespace BlackCore
}
}
bool CSimulatorCommon::setInitialAircraftSituation(CSimulatedAircraft &aircraft) const
bool CSimulatorCommon::setInitialAircraftSituation(CSimulatedAircraft &aircraft)
{
if (!this->m_interpolator) { return false; }
const CCallsign callsign(aircraft.getCallsign());
@@ -179,7 +180,9 @@ namespace BlackCore
// to avoid position jittering when displayed
const qint64 time = QDateTime::currentMSecsSinceEpoch();
IInterpolator::InterpolationStatus interpolationStatus;
const CAircraftSituation as(m_interpolator->getInterpolatedSituation(callsign, time, aircraft.isVtol(), interpolationStatus));
CInterpolationHints &hints = m_hints[aircraft.getCallsign()];
hints.setVtolAircraft(aircraft.isVtol());
const CAircraftSituation as(m_interpolator->getInterpolatedSituation(callsign, time, hints, interpolationStatus));
if (interpolationStatus.didInterpolationSucceed())
{
aircraft.setSituation(as);

View File

@@ -28,6 +28,7 @@
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/simulation/simulatorinternals.h"
#include "blackmisc/simulation/interpolationhints.h"
#include "blackmisc/weather/weathergridprovider.h"
#include "blackmisc/pq/length.h"
#include "blackmisc/pq/time.h"
@@ -146,7 +147,7 @@ namespace BlackCore
void resetAircraftFromProvider(const BlackMisc::Aviation::CCallsign &callsign);
//! Override situation from current interpolator values, if any!
bool setInitialAircraftSituation(BlackMisc::Simulation::CSimulatedAircraft &aircraft) const;
bool setInitialAircraftSituation(BlackMisc::Simulation::CSimulatedAircraft &aircraft);
//! Set own model
void reverseLookupAndUpdateOwnAircraftModel(const BlackMisc::Simulation::CAircraftModel &model);
@@ -165,6 +166,7 @@ namespace BlackCore
// some optional functionality which can be used by the sims as needed
BlackMisc::Simulation::CSimulatedAircraftList m_aircraftToAddAgainWhenRemoved; //!< add this model again when removed, normally used to change model
QHash<BlackMisc::Aviation::CCallsign, BlackMisc::Simulation::CInterpolationHints> m_hints; //!< last ground elevation fetched
//! Lookup against DB data
static BlackMisc::Simulation::CAircraftModel reverseLookupModel(const BlackMisc::Simulation::CAircraftModel &model);