refs #366, passing Simulator plugin info to drivers

Add. some finetuning
This commit is contained in:
Klaus Basan
2015-04-10 00:16:00 +02:00
parent 1f5eb16bb1
commit f7b50b3f5a
15 changed files with 221 additions and 150 deletions

View File

@@ -38,17 +38,22 @@ namespace BlackSimPlugin
{
namespace Fsx
{
CSimulatorFsx::CSimulatorFsx(IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) :
CSimulatorFsCommon(ownAircraftProvider, remoteAircraftProvider, parent)
CSimulatorFsx::CSimulatorFsx(
const CSimulatorPluginInfo &info,
IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider,
QObject *parent) :
CSimulatorFsCommon(info, ownAircraftProvider, remoteAircraftProvider, parent)
{
Q_ASSERT(ownAircraftProvider);
Q_ASSERT(remoteAircraftProvider);
CFsxSimulatorSetup setup;
setup.init(); // this fetches important settings on local side
this->m_simulatorPluginInfo.setSimulatorSetup(setup.getSettings());
m_useFsuipc = false; // do not use FSUIPC at the moment with FSX
this->m_interpolator = new CInterpolatorLinear(remoteAircraftProvider, this);
this->m_interpolator->start();
this->m_simulatorInfo.setSimulatorSetup(setup.getSettings());
}
CSimulatorFsx::~CSimulatorFsx()
@@ -334,7 +339,8 @@ namespace BlackSimPlugin
void CSimulatorFsx::onSimStopped()
{
if (m_simRunning) {
if (m_simRunning)
{
m_simRunning = false;
mapperInstance()->gracefulShutdown(); // stop background reading if ongoing
}
@@ -814,7 +820,8 @@ namespace BlackSimPlugin
Q_CONSTEXPR int QueryInterval = 5 * 1000; // 5 seconds
m_timer->setInterval(QueryInterval);
connect(m_timer, &QTimer::timeout, [this]() {
connect(m_timer, &QTimer::timeout, [this]()
{
HANDLE hSimConnect;
HRESULT result = SimConnect_Open(&hSimConnect, BlackMisc::CProject::systemNameAndVersionChar(), nullptr, 0, 0, 0);
SimConnect_Close(hSimConnect);

View File

@@ -74,6 +74,7 @@ namespace BlackSimPlugin
public:
//! Constructor, parameters as in \sa BlackCore::ISimulatorFactory::create
CSimulatorFsx(
const BlackMisc::Simulation::CSimulatorPluginInfo &info,
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
QObject *parent = nullptr);
@@ -195,7 +196,6 @@ namespace BlackSimPlugin
uint m_nextObjID = 1; //!< object ID TODO: also used as request id, where to we place other request ids as for facilities
QHash<BlackMisc::Aviation::CCallsign, CSimConnectObject> m_simConnectObjects;
QFutureWatcher<bool> m_watcherConnect;
BlackMisc::Simulation::CSimulatorPluginInfo m_simulatorInfo;
// statistics
qint64 m_statsUpdateAircraftTimeTotal = 0;
@@ -204,12 +204,13 @@ namespace BlackSimPlugin
};
//! Listener for FSX
class CSimulatorFsxListener : public BlackCore::ISimulatorListener {
class CSimulatorFsxListener : public BlackCore::ISimulatorListener
{
Q_OBJECT
public:
//! Constructor
CSimulatorFsxListener(QObject* parent);
CSimulatorFsxListener(QObject *parent);
public slots:
//! \copydoc BlackCore::ISimulatorListener::start
@@ -219,7 +220,7 @@ namespace BlackSimPlugin
virtual void stop() override;
private:
QTimer* m_timer;
QTimer *m_timer;
};
}

View File

@@ -18,10 +18,10 @@ namespace BlackSimPlugin
{
namespace Fsx
{
BlackCore::ISimulator *CSimulatorFsxFactory::create(BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *renderedAircraftProvider, QObject *parent)
BlackCore::ISimulator *CSimulatorFsxFactory::create(const BlackMisc::Simulation::CSimulatorPluginInfo &info, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *renderedAircraftProvider, QObject *parent)
{
Q_ASSERT(ownAircraftProvider);
return new CSimulatorFsx(ownAircraftProvider, renderedAircraftProvider, parent);
return new CSimulatorFsx(info, ownAircraftProvider, renderedAircraftProvider, parent);
}
BlackCore::ISimulatorListener *CSimulatorFsxFactory::createListener(QObject *parent)

View File

@@ -27,16 +27,15 @@ namespace BlackSimPlugin
class CSimulatorFsxFactory : public QObject, public BlackCore::ISimulatorFactory
{
Q_OBJECT
// TODO: @RW, move this string into CProject please
Q_PLUGIN_METADATA(IID "org.swift.pilotclient.BlackCore.SimulatorInterface" FILE "simulator_fsx.json")
Q_INTERFACES(BlackCore::ISimulatorFactory)
public:
//! \copydoc BlackCore::ISimulatorFactory::create
virtual BlackCore::ISimulator *create(
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
BlackMisc::Simulation::IRemoteAircraftProvider *renderedAircraftProvider,
QObject *parent) override;
virtual BlackCore::ISimulator *create(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
BlackMisc::Simulation::IRemoteAircraftProvider *renderedAircraftProvider,
QObject *parent) override;
//! \copydoc BlackCore::ISimulatorFactory::getListener
virtual BlackCore::ISimulatorListener *createListener(QObject *parent = nullptr) override;