Ref T421, function to get interpolation messages from the simulator drivers

This commit is contained in:
Klaus Basan
2018-10-31 15:30:15 +01:00
parent 41685df4ee
commit 93bcbc0755
15 changed files with 70 additions and 3 deletions

View File

@@ -271,6 +271,9 @@ namespace BlackCore
//! \copydoc BlackMisc::Simulation::IInterpolationSetupProvider::setInterpolationSetupGlobal
virtual bool setInterpolationSetupGlobal(const BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal &setup) override;
//! Interpolation messages for callsign
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
//! Counter added aircraft
int getStatisticsPhysicallyAddedAircraft() const { return m_statsPhysicallyAddedAircraft; }

View File

@@ -173,6 +173,14 @@ namespace BlackSimPlugin
return m_renderedAircraft.getCallsigns();
}
CStatusMessageList CSimulatorEmulated::getInterpolationMessages(const CCallsign &callsign) const
{
if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO); }
if (!m_interpolators.contains(callsign)) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign); // threadsafe copy
return m_interpolators[callsign]->getInterpolationMessages(setup.getInterpolatorMode());
}
void CSimulatorEmulated::highlightAircraft(const CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const CTime &displayTime)
{
if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, aircraftToHighlight.toQString(), boolToTrueFalse(enableHighlight), displayTime.toQString()); }

View File

@@ -68,6 +68,7 @@ namespace BlackSimPlugin
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
// ----- functions just logged -------
virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override;

View File

@@ -168,6 +168,12 @@ namespace BlackSimPlugin
}
}
CStatusMessageList CFs9Client::getInterpolationMessages(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
{
if (!this->getInterpolator()) { return CStatusMessageList(); }
return this->getInterpolator()->getInterpolationMessages(mode);
}
void CFs9Client::timerEvent(QTimerEvent *event)
{
Q_UNUSED(event);

View File

@@ -47,13 +47,18 @@ namespace BlackSimPlugin
BlackCore::ISimulator *simulator);
//! Destructor
virtual ~CFs9Client();
virtual ~CFs9Client() override;
//! Set DirectPlay host address
void setHostAddress(const QString &hostAddress);
//! Get interpolator
//! Get interpolator @{
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() { return &m_interpolator; }
const BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return &m_interpolator; }
//! @}
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolationMessages
BlackMisc::CStatusMessageList getInterpolationMessages(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
public slots:
//! Send new text message

View File

@@ -14,7 +14,6 @@
#include "multiplayerpackets.h"
#include "multiplayerpacketparser.h"
#include "registermetadata.h"
#include "blackmisc/simulation/interpolatorlinear.h"
#include "blackmisc/network/textmessage.h"
#include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/logmessage.h"
@@ -281,6 +280,15 @@ namespace BlackSimPlugin
this->displayStatusMessage(message.asStatusMessage(true, true));
}
CStatusMessageList CSimulatorFs9::getInterpolationMessages(const CCallsign &callsign) const
{
if (!m_hashFs9Clients.contains(callsign)) { return CStatusMessageList(); }
const CFs9Client *client = m_hashFs9Clients[callsign].data();
if (!client) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign);
return client->getInterpolationMessages(setup.getInterpolatorMode());
}
bool CSimulatorFs9::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
{
return m_hashFs9Clients.contains(callsign);

View File

@@ -64,6 +64,7 @@ namespace BlackSimPlugin
virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
//! \@}
protected:

View File

@@ -224,6 +224,13 @@ namespace BlackSimPlugin
return m_interpolator->getLastInterpolatedSituation(mode);
}
const CStatusMessageList &CSimConnectObject::getInterpolationMessages(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
{
static const CStatusMessageList empty;
if (!m_interpolator) { return empty; }
return m_interpolator->getInterpolationMessages(mode);
}
QString CSimConnectObject::toQString() const
{
static const QString s("CS: '%1' obj: %2 req: %3 conf.added: %4 pend.rem.: %5 rwa: %6 awr: %7 aEx: %8 aRem: %9");

View File

@@ -254,6 +254,9 @@ namespace BlackSimPlugin
//! \copydoc BlackMisc::Simulation::CInterpolator::getLastInterpolatedSituation
const BlackMisc::Aviation::CAircraftSituation &getLastInterpolatedSituation(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolationMessages
const BlackMisc::CStatusMessageList &getInterpolationMessages(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
//! Interpolator
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); }

View File

@@ -355,6 +355,13 @@ namespace BlackSimPlugin
ISimulator::setFlightNetworkConnected(connected);
}
CStatusMessageList CSimulatorFsxCommon::getInterpolationMessages(const CCallsign &callsign) const
{
if (!m_simConnectObjects.contains(callsign)) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupConsolidated(callsign);
return (m_simConnectObjects[callsign]).getInterpolationMessages(setup.getInterpolatorMode());
}
CSimConnectDefinitions::SimObjectRequest CSimulatorFsxCommon::requestToSimObjectRequest(DWORD requestId)
{
DWORD v = static_cast<DWORD>(CSimConnectDefinitions::SimObjectEndMarker);

View File

@@ -151,6 +151,7 @@ namespace BlackSimPlugin
virtual QString getStatisticsSimulatorSpecific() const override;
virtual void resetAircraftStatistics() override;
virtual void setFlightNetworkConnected(bool connected) override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
//! @}
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation

View File

@@ -145,6 +145,13 @@ namespace BlackSimPlugin
m_statsAddCurrentTimeMs = -1;
}
CStatusMessageList CSimulatorXPlane::getInterpolationMessages(const CCallsign &callsign) const
{
if (!m_xplaneAircraftObjects.contains(callsign)) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupConsolidated(callsign);
return m_xplaneAircraftObjects[callsign].getInterpolationMessages(setup.getInterpolatorMode());
}
void CSimulatorXPlane::clearAllRemoteAircraftData()
{
m_aircraftAddedFailed.clear();

View File

@@ -138,6 +138,7 @@ namespace BlackSimPlugin
virtual void unload() override;
virtual QString getStatisticsSimulatorSpecific() const override;
virtual void resetAircraftStatistics() override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
//! @}
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation

View File

@@ -12,6 +12,7 @@
#include "blackmisc/simulation/interpolatormulti.h"
using namespace BlackCore;
using namespace BlackMisc;
using namespace BlackMisc::Aviation;
using namespace BlackMisc::Simulation;
@@ -49,6 +50,11 @@ namespace BlackSimPlugin
return m_interpolator->getInterpolation(currentTimeSinceEpoc, setup, aircraftNumber);
}
CStatusMessageList CXPlaneMPAircraft::getInterpolationMessages(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
{
return this->getInterpolator() ? this->getInterpolator()->getInterpolationMessages(mode) : CStatusMessageList();
}
CCallsignSet CXPlaneMPAircraftObjects::getAllCallsigns() const
{
return CCallsignSet(this->keys());

View File

@@ -55,6 +55,9 @@ namespace BlackSimPlugin
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolation
BlackMisc::Simulation::CInterpolationResult getInterpolation(qint64 currentTimeSinceEpoc, const BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign &setup, int aircraftNumber) const;
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolationMessages
BlackMisc::CStatusMessageList getInterpolationMessages(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
//! Interpolator
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); }