mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-04 17:30:12 +08:00
Ref T259, Ref T243 pass the providers along the hierarchy
This commit is contained in:
@@ -37,6 +37,9 @@ namespace BlackMisc
|
|||||||
//! Has provider?
|
//! Has provider?
|
||||||
bool hasProvider() const { return m_provider; }
|
bool hasProvider() const { return m_provider; }
|
||||||
|
|
||||||
|
//! Provider
|
||||||
|
PROVIDER *getProvider() const { return m_provider; }
|
||||||
|
|
||||||
//! Set the provider
|
//! Set the provider
|
||||||
//! \remark use individual names to disambiguate
|
//! \remark use individual names to disambiguate
|
||||||
void setProvider(PROVIDER *provider)
|
void setProvider(PROVIDER *provider)
|
||||||
|
|||||||
@@ -460,6 +460,9 @@ namespace BlackMisc
|
|||||||
//! Set remote aircraft provider
|
//! Set remote aircraft provider
|
||||||
void setRemoteAircraftProvider(IRemoteAircraftProvider *remoteAircraftProvider) { this->setProvider(remoteAircraftProvider); }
|
void setRemoteAircraftProvider(IRemoteAircraftProvider *remoteAircraftProvider) { this->setProvider(remoteAircraftProvider); }
|
||||||
|
|
||||||
|
//! Get the aircraft provider
|
||||||
|
IRemoteAircraftProvider *getRemoteAircraftProvider() const { return this->getProvider(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Default constructor
|
//! Default constructor
|
||||||
CRemoteAircraftAware() {}
|
CRemoteAircraftAware() {}
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ namespace BlackSimPlugin
|
|||||||
CSimulatedAircraft aircraft(remoteAircraft);
|
CSimulatedAircraft aircraft(remoteAircraft);
|
||||||
aircraft.setRendered(true);
|
aircraft.setRendered(true);
|
||||||
const CCallsign cs = aircraft.getCallsign();
|
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
|
m_renderedAircraft.push_back(aircraft); // my simulator list
|
||||||
this->updateAircraftRendered(cs, true); // in provider
|
this->updateAircraftRendered(cs, true); // in provider
|
||||||
emit this->aircraftRenderingChanged(aircraft);
|
emit this->aircraftRenderingChanged(aircraft);
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ namespace BlackSimPlugin
|
|||||||
namespace Fs9
|
namespace Fs9
|
||||||
{
|
{
|
||||||
CFs9Client::CFs9Client(const CCallsign &callsign, const QString &modelName, const CTime &updateInterval,
|
CFs9Client::CFs9Client(const CCallsign &callsign, const QString &modelName, const CTime &updateInterval,
|
||||||
CInterpolationLogger *logger, ISimulator *owner) :
|
CInterpolationLogger *logger, ISimulator *simulator) :
|
||||||
CDirectPlayPeer(owner, callsign),
|
CDirectPlayPeer(simulator, callsign),
|
||||||
m_updateInterval(updateInterval),
|
m_updateInterval(updateInterval),
|
||||||
m_interpolator(callsign),
|
m_interpolator(callsign, simulator, simulator, simulator->getRemoteAircraftProvider(), logger),
|
||||||
m_modelName(modelName)
|
m_modelName(modelName)
|
||||||
{
|
{
|
||||||
m_interpolator.attachLogger(logger);
|
m_interpolator.attachLogger(logger);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace BlackSimPlugin
|
|||||||
const QString &modelName,
|
const QString &modelName,
|
||||||
const BlackMisc::PhysicalQuantities::CTime &updateInterval,
|
const BlackMisc::PhysicalQuantities::CTime &updateInterval,
|
||||||
BlackMisc::Simulation::CInterpolationLogger *logger,
|
BlackMisc::Simulation::CInterpolationLogger *logger,
|
||||||
BlackCore::ISimulator *owner);
|
BlackCore::ISimulator *simulator);
|
||||||
|
|
||||||
//! Destructor
|
//! Destructor
|
||||||
virtual ~CFs9Client();
|
virtual ~CFs9Client();
|
||||||
|
|||||||
@@ -8,11 +8,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "simconnectobject.h"
|
#include "simconnectobject.h"
|
||||||
#include "simconnectobject.h"
|
#include "blackcore/simulator.h"
|
||||||
#include "blackmisc/simulation/interpolatormulti.h"
|
#include "blackmisc/simulation/interpolatormulti.h"
|
||||||
|
|
||||||
using namespace BlackMisc::Aviation;
|
using namespace BlackMisc::Aviation;
|
||||||
using namespace BlackMisc::Simulation;
|
using namespace BlackMisc::Simulation;
|
||||||
|
using namespace BlackCore;
|
||||||
|
|
||||||
namespace BlackSimPlugin
|
namespace BlackSimPlugin
|
||||||
{
|
{
|
||||||
@@ -23,12 +24,11 @@ namespace BlackSimPlugin
|
|||||||
|
|
||||||
CSimConnectObject::CSimConnectObject(const CSimulatedAircraft &aircraft,
|
CSimConnectObject::CSimConnectObject(const CSimulatedAircraft &aircraft,
|
||||||
DWORD requestId,
|
DWORD requestId,
|
||||||
|
ISimulationEnvironmentProvider *p1, IInterpolationSetupProvider *p2, IRemoteAircraftProvider *p3,
|
||||||
CInterpolationLogger *logger) :
|
CInterpolationLogger *logger) :
|
||||||
m_aircraft(aircraft), m_requestId(requestId), m_validRequestId(true),
|
m_aircraft(aircraft), m_requestId(requestId), m_validRequestId(true),
|
||||||
m_interpolator(QSharedPointer<CInterpolatorMulti>::create(aircraft.getCallsign()))
|
m_interpolator(QSharedPointer<CInterpolatorMulti>::create(aircraft.getCallsign(), p1, p2, p3, logger))
|
||||||
{
|
{ }
|
||||||
m_interpolator->attachLogger(logger);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CSimConnectObject::invalidatePartsAsSent()
|
void CSimConnectObject::invalidatePartsAsSent()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ namespace BlackSimPlugin
|
|||||||
//! Constructor providing initial situation/parts
|
//! Constructor providing initial situation/parts
|
||||||
CSimConnectObject(const BlackMisc::Simulation::CSimulatedAircraft &aircraft,
|
CSimConnectObject(const BlackMisc::Simulation::CSimulatedAircraft &aircraft,
|
||||||
DWORD requestId,
|
DWORD requestId,
|
||||||
|
BlackMisc::Simulation::ISimulationEnvironmentProvider *p1, BlackMisc::Simulation::IInterpolationSetupProvider *p2, BlackMisc::Simulation::IRemoteAircraftProvider *p3,
|
||||||
BlackMisc::Simulation::CInterpolationLogger *logger);
|
BlackMisc::Simulation::CInterpolationLogger *logger);
|
||||||
|
|
||||||
//! Destructor
|
//! Destructor
|
||||||
|
|||||||
@@ -1527,7 +1527,7 @@ namespace BlackSimPlugin
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
simObject = CSimConnectObject(aircraft, requestId, &m_interpolationLogger);
|
simObject = CSimConnectObject(aircraft, requestId, this, this, this->getRemoteAircraftProvider(), &m_interpolationLogger);
|
||||||
}
|
}
|
||||||
m_simConnectObjects.insert(aircraft.getCallsign(), simObject);
|
m_simConnectObjects.insert(aircraft.getCallsign(), simObject);
|
||||||
return simObject;
|
return simObject;
|
||||||
|
|||||||
@@ -490,7 +490,7 @@ namespace BlackSimPlugin
|
|||||||
Q_ASSERT_X(!newRemoteAircraft.getCallsign().isEmpty(), Q_FUNC_INFO, "empty callsign");
|
Q_ASSERT_X(!newRemoteAircraft.getCallsign().isEmpty(), Q_FUNC_INFO, "empty callsign");
|
||||||
Q_ASSERT_X(newRemoteAircraft.hasModelString(), Q_FUNC_INFO, "missing model string");
|
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();
|
CAircraftModel aircraftModel = newRemoteAircraft.getModel();
|
||||||
QString livery = aircraftModel.getLivery().getCombinedCode(); //! \todo livery resolution for XP
|
QString livery = aircraftModel.getLivery().getCombinedCode(); //! \todo livery resolution for XP
|
||||||
m_trafficProxy->addPlane(newRemoteAircraft.getCallsign().asString(), aircraftModel.getModelString(),
|
m_trafficProxy->addPlane(newRemoteAircraft.getCallsign().asString(), aircraftModel.getModelString(),
|
||||||
|
|||||||
@@ -8,8 +8,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "xplanempaircraft.h"
|
#include "xplanempaircraft.h"
|
||||||
|
#include "blackcore/simulator.h"
|
||||||
#include "blackmisc/simulation/interpolatormulti.h"
|
#include "blackmisc/simulation/interpolatormulti.h"
|
||||||
|
|
||||||
|
using namespace BlackCore;
|
||||||
using namespace BlackMisc::Aviation;
|
using namespace BlackMisc::Aviation;
|
||||||
using namespace BlackMisc::Simulation;
|
using namespace BlackMisc::Simulation;
|
||||||
|
|
||||||
@@ -20,22 +22,14 @@ namespace BlackSimPlugin
|
|||||||
CXPlaneMPAircraft::CXPlaneMPAircraft()
|
CXPlaneMPAircraft::CXPlaneMPAircraft()
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
CXPlaneMPAircraft::CXPlaneMPAircraft(const CSimulatedAircraft &aircraft,
|
CXPlaneMPAircraft::CXPlaneMPAircraft(
|
||||||
CInterpolationLogger *logger) :
|
const CSimulatedAircraft &aircraft, ISimulator *simulator, CInterpolationLogger *logger) :
|
||||||
m_aircraft(aircraft),
|
m_aircraft(aircraft),
|
||||||
m_interpolator(QSharedPointer<CInterpolatorMulti>::create(aircraft.getCallsign()))
|
m_interpolator(QSharedPointer<CInterpolatorMulti>::create(aircraft.getCallsign(), simulator, simulator, simulator->getRemoteAircraftProvider(), logger))
|
||||||
{
|
{
|
||||||
m_interpolator->attachLogger(logger);
|
m_interpolator->attachLogger(logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
CXPlaneMPAircraft::CXPlaneMPAircraft(const CAircraftSituation &situation) :
|
|
||||||
m_interpolator(QSharedPointer<CInterpolatorMulti>::create(situation.getCallsign()))
|
|
||||||
{ }
|
|
||||||
|
|
||||||
CXPlaneMPAircraft::CXPlaneMPAircraft(const CAircraftParts &parts, const CCallsign &callsign) :
|
|
||||||
m_interpolator(QSharedPointer<CInterpolatorMulti>::create(callsign))
|
|
||||||
{ }
|
|
||||||
|
|
||||||
bool CXPlaneMPAircraft::isSameAsSent(const CAircraftSituation &position) const
|
bool CXPlaneMPAircraft::isSameAsSent(const CAircraftSituation &position) const
|
||||||
{
|
{
|
||||||
return m_positionAsSent == position;
|
return m_positionAsSent == position;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#include <QSharedPointer>
|
#include <QSharedPointer>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
|
||||||
|
namespace BlackCore { class ISimulator; }
|
||||||
namespace BlackSimPlugin
|
namespace BlackSimPlugin
|
||||||
{
|
{
|
||||||
namespace XPlane
|
namespace XPlane
|
||||||
@@ -30,14 +31,9 @@ namespace BlackSimPlugin
|
|||||||
|
|
||||||
//! Constructor providing initial situation/parts
|
//! Constructor providing initial situation/parts
|
||||||
CXPlaneMPAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraft,
|
CXPlaneMPAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraft,
|
||||||
|
BlackCore::ISimulator *simulator,
|
||||||
BlackMisc::Simulation::CInterpolationLogger *logger);
|
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
|
//! Destructor
|
||||||
~CXPlaneMPAircraft() {}
|
~CXPlaneMPAircraft() {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user