mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 02:45:33 +08:00
Ref T180, get interpolated situation utility function in CSimConnectObject, returning the aircraft situation if there is no interpolation value
This commit is contained in:
@@ -98,6 +98,19 @@ namespace BlackSimPlugin
|
|||||||
return m_interpolator->getInterpolatorInfo();
|
return m_interpolator->getInterpolatorInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftSituation CSimConnectObject::getInterpolatedSituation(
|
||||||
|
qint64 currentTimeSinceEpoc,
|
||||||
|
const CInterpolationAndRenderingSetup &setup,
|
||||||
|
const CInterpolationHints &hints, CInterpolationStatus &status) const
|
||||||
|
{
|
||||||
|
Q_ASSERT(m_interpolator);
|
||||||
|
const CAircraftSituation s = m_interpolator->getInterpolatedSituation(currentTimeSinceEpoc, setup, hints, status);
|
||||||
|
|
||||||
|
// return original position if interpolation fails for some reason
|
||||||
|
const bool valid = status.allTrue() && !s.isPositionNull() && !s.isGeodeticHeightNull();
|
||||||
|
return valid ? m_aircraft.getSituation() : s;
|
||||||
|
}
|
||||||
|
|
||||||
bool CSimConnectObjects::setSimConnectObjectIdForRequestId(DWORD requestId, DWORD objectId, bool resetSentParts)
|
bool CSimConnectObjects::setSimConnectObjectIdForRequestId(DWORD requestId, DWORD objectId, bool resetSentParts)
|
||||||
{
|
{
|
||||||
// First check, if this request id belongs to us
|
// First check, if this request id belongs to us
|
||||||
|
|||||||
@@ -45,9 +45,6 @@ namespace BlackSimPlugin
|
|||||||
//! Simulated aircraft model string
|
//! Simulated aircraft model string
|
||||||
const QString &getAircraftModelString() const { return m_aircraft.getModelString(); }
|
const QString &getAircraftModelString() const { return m_aircraft.getModelString(); }
|
||||||
|
|
||||||
//! Interpolator
|
|
||||||
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); }
|
|
||||||
|
|
||||||
//! Add parts for interpolator
|
//! Add parts for interpolator
|
||||||
void addAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts);
|
void addAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts);
|
||||||
|
|
||||||
@@ -132,6 +129,16 @@ namespace BlackSimPlugin
|
|||||||
//! Interpolator info
|
//! Interpolator info
|
||||||
QString getInterpolatorInfo() const;
|
QString getInterpolatorInfo() const;
|
||||||
|
|
||||||
|
//! Interpolator
|
||||||
|
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); }
|
||||||
|
|
||||||
|
//! Get interpolated situation
|
||||||
|
//! \remark return original position if interpolation fails for some reason
|
||||||
|
BlackMisc::Aviation::CAircraftSituation getInterpolatedSituation(
|
||||||
|
qint64 currentTimeSinceEpoc,
|
||||||
|
const BlackMisc::Simulation::CInterpolationAndRenderingSetup &setup,
|
||||||
|
const BlackMisc::Simulation::CInterpolationHints &hints, BlackMisc::Simulation::CInterpolationStatus &status) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BlackMisc::Simulation::CSimulatedAircraft m_aircraft; //!< corresponding aircraft
|
BlackMisc::Simulation::CSimulatedAircraft m_aircraft; //!< corresponding aircraft
|
||||||
DWORD m_requestId = 0;
|
DWORD m_requestId = 0;
|
||||||
|
|||||||
@@ -1068,7 +1068,7 @@ namespace BlackSimPlugin
|
|||||||
CInterpolationHints hints(m_hints[callsign]);
|
CInterpolationHints hints(m_hints[callsign]);
|
||||||
hints.setAircraftParts(useAircraftParts ? parts : CAircraftParts(), useAircraftParts);
|
hints.setAircraftParts(useAircraftParts ? parts : CAircraftParts(), useAircraftParts);
|
||||||
hints.setLoggingInterpolation(logInterpolationAndParts);
|
hints.setLoggingInterpolation(logInterpolationAndParts);
|
||||||
const CAircraftSituation interpolatedSituation = simObj.getInterpolator()->getInterpolatedSituation(currentTimestamp, setup, hints, interpolatorStatus);
|
const CAircraftSituation interpolatedSituation = simObj.getInterpolatedSituation(currentTimestamp, setup, hints, interpolatorStatus);
|
||||||
|
|
||||||
if (interpolatorStatus.allTrue())
|
if (interpolatorStatus.allTrue())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user