From a7f1e15f39f20de1816c0215a31d9f0f0eaeb91a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 28 Mar 2018 03:50:51 +0200 Subject: [PATCH] Ref T259, Ref T243 pass the providers along the hierarchy --- src/blackmisc/provider.h | 3 +++ .../simulation/remoteaircraftprovider.h | 3 +++ .../simulator/emulated/simulatoremulated.cpp | 2 +- src/plugins/simulator/fs9/fs9client.cpp | 6 +++--- src/plugins/simulator/fs9/fs9client.h | 2 +- .../simulator/fsxcommon/simconnectobject.cpp | 10 +++++----- .../simulator/fsxcommon/simconnectobject.h | 1 + .../simulator/fsxcommon/simulatorfsxcommon.cpp | 2 +- src/plugins/simulator/xplane/simulatorxplane.cpp | 2 +- .../simulator/xplane/xplanempaircraft.cpp | 16 +++++----------- src/plugins/simulator/xplane/xplanempaircraft.h | 8 ++------ 11 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/blackmisc/provider.h b/src/blackmisc/provider.h index b559a9f93..ee54c5b0c 100644 --- a/src/blackmisc/provider.h +++ b/src/blackmisc/provider.h @@ -37,6 +37,9 @@ namespace BlackMisc //! Has provider? bool hasProvider() const { return m_provider; } + //! Provider + PROVIDER *getProvider() const { return m_provider; } + //! Set the provider //! \remark use individual names to disambiguate void setProvider(PROVIDER *provider) diff --git a/src/blackmisc/simulation/remoteaircraftprovider.h b/src/blackmisc/simulation/remoteaircraftprovider.h index 26ef69ec3..d8c1b5b68 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.h +++ b/src/blackmisc/simulation/remoteaircraftprovider.h @@ -460,6 +460,9 @@ namespace BlackMisc //! Set remote aircraft provider void setRemoteAircraftProvider(IRemoteAircraftProvider *remoteAircraftProvider) { this->setProvider(remoteAircraftProvider); } + //! Get the aircraft provider + IRemoteAircraftProvider *getRemoteAircraftProvider() const { return this->getProvider(); } + protected: //! Default constructor CRemoteAircraftAware() {} diff --git a/src/plugins/simulator/emulated/simulatoremulated.cpp b/src/plugins/simulator/emulated/simulatoremulated.cpp index 2d32e1874..fa1180e6f 100644 --- a/src/plugins/simulator/emulated/simulatoremulated.cpp +++ b/src/plugins/simulator/emulated/simulatoremulated.cpp @@ -285,7 +285,7 @@ namespace BlackSimPlugin CSimulatedAircraft aircraft(remoteAircraft); aircraft.setRendered(true); const CCallsign cs = aircraft.getCallsign(); - m_interpolators.insert(cs, CInterpolatorMultiWrapper(cs, &m_interpolationLogger, this)); + m_interpolators.insert(cs, CInterpolatorMultiWrapper(cs, this, this, this->getRemoteAircraftProvider(), &m_interpolationLogger)); m_renderedAircraft.push_back(aircraft); // my simulator list this->updateAircraftRendered(cs, true); // in provider emit this->aircraftRenderingChanged(aircraft); diff --git a/src/plugins/simulator/fs9/fs9client.cpp b/src/plugins/simulator/fs9/fs9client.cpp index 97db0a8a8..d60dce23e 100644 --- a/src/plugins/simulator/fs9/fs9client.cpp +++ b/src/plugins/simulator/fs9/fs9client.cpp @@ -32,10 +32,10 @@ namespace BlackSimPlugin namespace Fs9 { CFs9Client::CFs9Client(const CCallsign &callsign, const QString &modelName, const CTime &updateInterval, - CInterpolationLogger *logger, ISimulator *owner) : - CDirectPlayPeer(owner, callsign), + CInterpolationLogger *logger, ISimulator *simulator) : + CDirectPlayPeer(simulator, callsign), m_updateInterval(updateInterval), - m_interpolator(callsign), + m_interpolator(callsign, simulator, simulator, simulator->getRemoteAircraftProvider(), logger), m_modelName(modelName) { m_interpolator.attachLogger(logger); diff --git a/src/plugins/simulator/fs9/fs9client.h b/src/plugins/simulator/fs9/fs9client.h index 8ec10fc35..0a904e0ec 100644 --- a/src/plugins/simulator/fs9/fs9client.h +++ b/src/plugins/simulator/fs9/fs9client.h @@ -44,7 +44,7 @@ namespace BlackSimPlugin const QString &modelName, const BlackMisc::PhysicalQuantities::CTime &updateInterval, BlackMisc::Simulation::CInterpolationLogger *logger, - BlackCore::ISimulator *owner); + BlackCore::ISimulator *simulator); //! Destructor virtual ~CFs9Client(); diff --git a/src/plugins/simulator/fsxcommon/simconnectobject.cpp b/src/plugins/simulator/fsxcommon/simconnectobject.cpp index df69518c3..8a87e4c31 100644 --- a/src/plugins/simulator/fsxcommon/simconnectobject.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectobject.cpp @@ -8,11 +8,12 @@ */ #include "simconnectobject.h" -#include "simconnectobject.h" +#include "blackcore/simulator.h" #include "blackmisc/simulation/interpolatormulti.h" using namespace BlackMisc::Aviation; using namespace BlackMisc::Simulation; +using namespace BlackCore; namespace BlackSimPlugin { @@ -23,12 +24,11 @@ namespace BlackSimPlugin CSimConnectObject::CSimConnectObject(const CSimulatedAircraft &aircraft, DWORD requestId, + ISimulationEnvironmentProvider *p1, IInterpolationSetupProvider *p2, IRemoteAircraftProvider *p3, CInterpolationLogger *logger) : m_aircraft(aircraft), m_requestId(requestId), m_validRequestId(true), - m_interpolator(QSharedPointer::create(aircraft.getCallsign())) - { - m_interpolator->attachLogger(logger); - } + m_interpolator(QSharedPointer::create(aircraft.getCallsign(), p1, p2, p3, logger)) + { } void CSimConnectObject::invalidatePartsAsSent() { diff --git a/src/plugins/simulator/fsxcommon/simconnectobject.h b/src/plugins/simulator/fsxcommon/simconnectobject.h index 5732f97ad..f3340d3ef 100644 --- a/src/plugins/simulator/fsxcommon/simconnectobject.h +++ b/src/plugins/simulator/fsxcommon/simconnectobject.h @@ -32,6 +32,7 @@ namespace BlackSimPlugin //! Constructor providing initial situation/parts CSimConnectObject(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, DWORD requestId, + BlackMisc::Simulation::ISimulationEnvironmentProvider *p1, BlackMisc::Simulation::IInterpolationSetupProvider *p2, BlackMisc::Simulation::IRemoteAircraftProvider *p3, BlackMisc::Simulation::CInterpolationLogger *logger); //! Destructor diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index caa43999c..6a3070a53 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -1527,7 +1527,7 @@ namespace BlackSimPlugin } else { - simObject = CSimConnectObject(aircraft, requestId, &m_interpolationLogger); + simObject = CSimConnectObject(aircraft, requestId, this, this, this->getRemoteAircraftProvider(), &m_interpolationLogger); } m_simConnectObjects.insert(aircraft.getCallsign(), simObject); return simObject; diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index 47581567f..ad4314ff8 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -490,7 +490,7 @@ namespace BlackSimPlugin Q_ASSERT_X(!newRemoteAircraft.getCallsign().isEmpty(), Q_FUNC_INFO, "empty callsign"); Q_ASSERT_X(newRemoteAircraft.hasModelString(), Q_FUNC_INFO, "missing model string"); - m_xplaneAircraftObjects.insert(newRemoteAircraft.getCallsign(), CXPlaneMPAircraft(newRemoteAircraft, &m_interpolationLogger)); + m_xplaneAircraftObjects.insert(newRemoteAircraft.getCallsign(), CXPlaneMPAircraft(newRemoteAircraft, this, &m_interpolationLogger)); CAircraftModel aircraftModel = newRemoteAircraft.getModel(); QString livery = aircraftModel.getLivery().getCombinedCode(); //! \todo livery resolution for XP m_trafficProxy->addPlane(newRemoteAircraft.getCallsign().asString(), aircraftModel.getModelString(), diff --git a/src/plugins/simulator/xplane/xplanempaircraft.cpp b/src/plugins/simulator/xplane/xplanempaircraft.cpp index f9a245cbd..792ea3ebe 100644 --- a/src/plugins/simulator/xplane/xplanempaircraft.cpp +++ b/src/plugins/simulator/xplane/xplanempaircraft.cpp @@ -8,8 +8,10 @@ */ #include "xplanempaircraft.h" +#include "blackcore/simulator.h" #include "blackmisc/simulation/interpolatormulti.h" +using namespace BlackCore; using namespace BlackMisc::Aviation; using namespace BlackMisc::Simulation; @@ -20,22 +22,14 @@ namespace BlackSimPlugin CXPlaneMPAircraft::CXPlaneMPAircraft() { } - CXPlaneMPAircraft::CXPlaneMPAircraft(const CSimulatedAircraft &aircraft, - CInterpolationLogger *logger) : + CXPlaneMPAircraft::CXPlaneMPAircraft( + const CSimulatedAircraft &aircraft, ISimulator *simulator, CInterpolationLogger *logger) : m_aircraft(aircraft), - m_interpolator(QSharedPointer::create(aircraft.getCallsign())) + m_interpolator(QSharedPointer::create(aircraft.getCallsign(), simulator, simulator, simulator->getRemoteAircraftProvider(), logger)) { m_interpolator->attachLogger(logger); } - CXPlaneMPAircraft::CXPlaneMPAircraft(const CAircraftSituation &situation) : - m_interpolator(QSharedPointer::create(situation.getCallsign())) - { } - - CXPlaneMPAircraft::CXPlaneMPAircraft(const CAircraftParts &parts, const CCallsign &callsign) : - m_interpolator(QSharedPointer::create(callsign)) - { } - bool CXPlaneMPAircraft::isSameAsSent(const CAircraftSituation &position) const { return m_positionAsSent == position; diff --git a/src/plugins/simulator/xplane/xplanempaircraft.h b/src/plugins/simulator/xplane/xplanempaircraft.h index 7cc29c64e..937a8783a 100644 --- a/src/plugins/simulator/xplane/xplanempaircraft.h +++ b/src/plugins/simulator/xplane/xplanempaircraft.h @@ -17,6 +17,7 @@ #include #include +namespace BlackCore { class ISimulator; } namespace BlackSimPlugin { namespace XPlane @@ -30,14 +31,9 @@ namespace BlackSimPlugin //! Constructor providing initial situation/parts CXPlaneMPAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, + BlackCore::ISimulator *simulator, BlackMisc::Simulation::CInterpolationLogger *logger); - //! Constructor providing initial situation - CXPlaneMPAircraft(const BlackMisc::Aviation::CAircraftSituation &situation); - - //! Constructor providing initial parts - CXPlaneMPAircraft(const BlackMisc::Aviation::CAircraftParts &parts, const BlackMisc::Aviation::CCallsign &callsign); - //! Destructor ~CXPlaneMPAircraft() {}