From aa6370c3253295a55d601212433a002b0bcbafc2 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 4 Apr 2016 12:57:40 +0200 Subject: [PATCH] refs #614, moved model set cache and matcher to simulator common class * removed from FS common class * formatting --- src/blackcore/simulatorcommon.cpp | 10 ++++ src/blackcore/simulatorcommon.h | 48 +++++-------------- .../simulator/fscommon/simulatorfscommon.cpp | 19 ++------ .../simulator/fscommon/simulatorfscommon.h | 6 --- .../simulator/xplane/simulatorxplane.cpp | 8 ---- .../simulator/xplane/simulatorxplane.h | 46 ++---------------- 6 files changed, 30 insertions(+), 107 deletions(-) diff --git a/src/blackcore/simulatorcommon.cpp b/src/blackcore/simulatorcommon.cpp index 7b01b55eb..3f2c144bd 100644 --- a/src/blackcore/simulatorcommon.cpp +++ b/src/blackcore/simulatorcommon.cpp @@ -54,6 +54,11 @@ namespace BlackCore connect(&m_oneSecondTimer, &QTimer::timeout, this, &CSimulatorCommon::ps_oneSecondTimer); this->m_oneSecondTimer.start(1000); + // init mapper + const CSimulatorInfo sim(info.getIdentifier()); + this->m_modelSetLoader.changeSimulator(sim); + this->m_modelMatcher.setModelSet(this->m_modelSetLoader.getAircraftModels()); + // info CLogMessage(this).info("Initialized simulator driver %1") << m_simulatorPluginInfo.toQString(); } @@ -229,6 +234,11 @@ namespace BlackCore this->m_remoteAircraftProviderConnections.disconnectAll(); // disconnect signals from provider } + void CSimulatorCommon::reloadInstalledModels() + { + // currently we do nothing here + } + CLength CSimulatorCommon::getRenderedDistanceBoundary() const { return CLength(20.0, CLengthUnit::NM()); diff --git a/src/blackcore/simulatorcommon.h b/src/blackcore/simulatorcommon.h index fba68759c..d853b54f0 100644 --- a/src/blackcore/simulatorcommon.h +++ b/src/blackcore/simulatorcommon.h @@ -18,7 +18,8 @@ #include "blackmisc/simulation/simulatorplugininfo.h" #include "blackmisc/simulation/simulatorsetup.h" #include "blackmisc/simulation/simulatedaircraftlist.h" -#include "blackmisc/simulation/aircraftmodellist.h" +#include "blackmisc/simulation/aircraftmodelsetloader.h" +#include "blackmisc/simulation/aircraftmatcher.h" #include "blackmisc/simulation/ownaircraftprovider.h" #include "blackmisc/simulation/remoteaircraftprovider.h" #include "blackmisc/pluginstorageprovider.h" @@ -47,56 +48,27 @@ namespace BlackCore //! Destructor virtual ~CSimulatorCommon(); - //! \copydoc ISimulator::getMaxRenderedAircraft + //! \name ISimulator implementations + //! @{ virtual int getMaxRenderedAircraft() const override; - - //! \copydoc ISimulator::setMaxRenderedAircraft virtual void setMaxRenderedAircraft(int maxRenderedAircraft) override; - - //! \copydoc ISimulator::setMaxRenderedDistance virtual void setMaxRenderedDistance(const BlackMisc::PhysicalQuantities::CLength &distance) override; - - //! \copydoc ISimulator::getMaxRenderedDistance virtual BlackMisc::PhysicalQuantities::CLength getMaxRenderedDistance() const override; - - //! \copydoc ISimulator::getRenderedDistanceBoundary virtual BlackMisc::PhysicalQuantities::CLength getRenderedDistanceBoundary() const override; - - //! \copydoc ISimulator::isMaxAircraftRestricted virtual bool isMaxAircraftRestricted() const override; - - //! \copydoc ISimulator::isMaxDistanceRestricted virtual bool isMaxDistanceRestricted() const override; - - //! \copydoc ISimulator::enableDebugMessages virtual void enableDebugMessages(bool driverMessages, bool interpolatorMessages) override; - - //! \copydoc ISimulator::getInstalledModelsCount virtual int getInstalledModelsCount() const override; - - //! \copydoc ISimulator::highlightAircraft virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override; - - //! \copydoc ISimulator::isRenderingEnabled virtual bool isRenderingEnabled() const override; - - //! \copydoc ISimulator::isRenderingRestricted virtual bool isRenderingRestricted() const override; - - //! \copydoc ISimulator::getSimulatorPluginInfo virtual const BlackMisc::Simulation::CSimulatorPluginInfo &getSimulatorPluginInfo() const override; - - //! \copydoc ISimulator::getSimulatorSetup virtual const BlackMisc::Simulation::CSimulatorSetup &getSimulatorSetup() const override; - - //! \copydoc ISimulator::unload virtual void unload() override; - - //! \copydoc IContextSimulator::deleteAllRenderingRestrictions + virtual void reloadInstalledModels() override; virtual void deleteAllRenderingRestrictions() override; - - //! \copydoc ISimulator::physicallyRemoveMultipleRemoteAircraft virtual int physicallyRemoveMultipleRemoteAircraft(const BlackMisc::Aviation::CCallsignSet &callsigns) override; + //! @} protected slots: //! Slow timer used to highlight aircraft, can be used for other things too @@ -143,13 +115,17 @@ namespace BlackCore bool m_pausedSimFreezesInterpolation = false; //!< paused simulator will also pause interpolation (so AI aircraft will hold) BlackMisc::Simulation::CSimulatorSetup m_simulatorSetup; //!< setup object + //! \todo unclear if this is valid for all simulators or for MS/P3D simulators only + BlackMisc::Simulation::CAircraftMatcher m_modelMatcher; //!< Model matcher + BlackMisc::Simulation::CAircraftModelSetLoader m_modelSetLoader { BlackMisc::Simulation::CSimulatorInfo(BlackMisc::Simulation::CSimulatorInfo::FSX), this }; //!< load model set from caches + private: bool m_debugMessages = false; //!< Display debug messages bool m_blinkCycle = false; //!< use for highlighting qint64 m_highlightEndTimeMsEpoch = 0; //!< end highlighting int m_timerCounter = 0; //!< allows to calculate n seconds - QTimer m_oneSecondTimer {this}; //!< timer - BlackMisc::Simulation::CSimulatorPluginInfo m_simulatorPluginInfo; //!< info object + QTimer m_oneSecondTimer {this}; //!< multi purpose timer + BlackMisc::Simulation::CSimulatorPluginInfo m_simulatorPluginInfo; //!< info object BlackMisc::Simulation::CSimulatedAircraftList m_highlightedAircraft; //!< all other aircraft are to be ignored BlackMisc::Aviation::CCallsignSet m_callsignsToBeRendered; //!< callsigns which will be rendered int m_maxRenderedAircraft = MaxAircraftInfinite; //!< max.rendered aircraft diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.cpp b/src/plugins/simulator/fscommon/simulatorfscommon.cpp index a8d4420f0..a65a40c71 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.cpp +++ b/src/plugins/simulator/fscommon/simulatorfscommon.cpp @@ -9,7 +9,6 @@ #include "simulatorfscommon.h" #include "blackmisc/logmessage.h" -#include "blackmisc/simulation/modelmappingsprovider.h" using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Simulation; @@ -32,15 +31,8 @@ namespace BlackSimPlugin Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent) : CSimulatorCommon(info, ownAircraftProvider, renderedAircraftProvider, pluginStorageProvider, weatherGridProvider, parent), - m_fsuipc(new CFsuipc()), - m_modelMatcher(CAircraftMatcher::AllModes, this) - { - // init mapper - CSimulatorInfo sim(info.getIdentifier()); - this->m_modelMatcher.setModelMappingProvider( - std::make_unique(sim, this) - ); - } + m_fsuipc(new CFsuipc()) + { } CSimulatorFsCommon::~CSimulatorFsCommon() { } @@ -101,12 +93,7 @@ namespace BlackSimPlugin CAircraftModelList CSimulatorFsCommon::getInstalledModels() const { - return m_modelMatcher.getMatchingModels(); - } - - void CSimulatorFsCommon::reloadInstalledModels() - { - this->m_modelMatcher.reload(); + return m_modelMatcher.getModelSet(); } CPixmap CSimulatorFsCommon::iconForModel(const QString &modelString) const diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.h b/src/plugins/simulator/fscommon/simulatorfscommon.h index 2909cebf4..ea031f94d 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.h +++ b/src/plugins/simulator/fscommon/simulatorfscommon.h @@ -58,9 +58,6 @@ namespace BlackSimPlugin //! \copydoc BlackCore::ISimulator::getInstalledModels virtual BlackMisc::Simulation::CAircraftModelList getInstalledModels() const override; - //! \copydoc BlackCore::ISimulator::reloadInstalledModels - virtual void reloadInstalledModels() override; - //! \copydoc BlackCore::IContextSimulator::iconForModel virtual BlackMisc::CPixmap iconForModel(const QString &modelString) const override; @@ -95,9 +92,6 @@ namespace BlackSimPlugin BlackMisc::Aviation::CComSystem m_simCom2; //!< cockpit COM2 state in simulator BlackMisc::Aviation::CTransponder m_simTransponder; //!< cockpit xpdr state in simulator - // parser / matcher - BlackMisc::Simulation::CAircraftMatcher m_modelMatcher; //!< Model matcher - //! Set own model void setOwnAircraftModel(const BlackMisc::Simulation::CAircraftModel &model); diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index 9ef431263..331c3a66e 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -13,7 +13,6 @@ #include "xbusweatherproxy.h" #include "blackmisc/dbusserver.h" #include "blackmisc/logmessage.h" -#include "blackmisc/simulation/modelmappingsprovider.h" #include "blackmisc/geo/coordinategeodetic.h" #include #include @@ -65,7 +64,6 @@ namespace BlackSimPlugin m_fastTimer->start(100); m_slowTimer->start(1000); - m_modelMatcher.setModelMappingProvider(std::make_unique(CSimulatorInfo::XPLANE, this)); m_modelMatcher.setDefaultModel(CAircraftModel( "__XPFW_Jets/A320_a/A320_a_Austrian_Airlines.obj __XPFW_Jets/A320_a/A320_a_Austrian_Airlines.png", CAircraftModel::TypeModelMatchingDefaultModel, @@ -319,12 +317,6 @@ namespace BlackSimPlugin return m_installedModels; } - void CSimulatorXPlane::reloadInstalledModels() - { - //! \todo XP driver, function not available - CLogMessage(this).error("Function not avialable"); - } - void CSimulatorXPlane::ps_setAirportsInRange(const QStringList &icaos, const QStringList &names, const BlackMisc::CSequence &lats, const BlackMisc::CSequence &lons, const BlackMisc::CSequence &alts) { m_airportsInRange.clear(); diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h index 223b72086..903d1680d 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.h +++ b/src/plugins/simulator/xplane/simulatorxplane.h @@ -45,62 +45,27 @@ namespace BlackSimPlugin BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent = nullptr); - //! \copydoc BlackCore::ISimulator::isTimeSynchronized + //! ISimulator implementations + //! @{ virtual bool isTimeSynchronized() const override { return false; } // TODO: Can we query the XP intrinisc feature? - - //! \copydoc BlackCore::ISimulator::connectTo virtual bool connectTo() override; - - //! \copydoc BlackCore::ISimulator::disconnectFrom virtual bool disconnectFrom() override; - - //! \copydoc BlackCore::ISimulator::physicallyAddRemoteAircraft() virtual bool physicallyAddRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &newRemoteAircraft) override; - - //! \copydoc BlackCore::ISimulator::physicallyRemoveRemoteAircraft virtual bool physicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override; - - //! \copydoc BlackCore::ISimulator::physicallyRemoveAllRemoteAircraft virtual int physicallyRemoveAllRemoteAircraft() override; - - //! \copydoc BlackCore::ISimulator::physicallyRenderedAircraft virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override; - - //! \copydoc BlackCore::ISimulator::isPhysicallyRenderedAircraft virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override; - - //! \copydoc BlackCore::ISimulator::changeRemoteAircraftModel virtual bool changeRemoteAircraftModel(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator) override; - - //! \copydoc BlackCore::ISimulator::changeRemoteAircraftEnabled virtual bool changeRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator) override; - - //! \copydoc BlackCore::ISimulator::updateOwnSimulatorCockpit virtual bool updateOwnSimulatorCockpit(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator) override; - - //! \copydoc BlackCore::ISimulator::displayStatusMessage virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override; - - //! \copydoc BlackCore::ISimulator::displayTextMessage virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override; - - //! \copydoc BlackCore::ISimulator::getInstalledModels virtual BlackMisc::Simulation::CAircraftModelList getInstalledModels() const override; - - //! \copydoc BlackCore::ISimulator::reloadInstalledModels - virtual void reloadInstalledModels() override; - - //! \copydoc BlackCore::ISimulator::getAirportsInRange virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override; - - //! \copydoc BlackCore::ISimulator::setTimeSynchronization virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override; - - //! \copydoc BlackCore::ISimulator::getTimeSynchronizationOffset virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); } - - //! \copydoc BlackCore::ISimulator::iconForModel virtual BlackMisc::CPixmap iconForModel(const QString &modelString) const override; + //! @} //! Creates an appropriate dbus connection from the string describing it static QDBusConnection connectionFromString(const QString &str); @@ -148,9 +113,8 @@ namespace BlackSimPlugin CXBusWeatherProxy *m_weather { nullptr }; QTimer *m_fastTimer { nullptr }; QTimer *m_slowTimer { nullptr }; - BlackMisc::Aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft - BlackMisc::Simulation::CAircraftModelList m_installedModels; - BlackMisc::Simulation::CAircraftMatcher m_modelMatcher { BlackMisc::Simulation::CAircraftMatcher::AllModes, this }; //!< Model matcher + BlackMisc::Aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft + BlackMisc::Simulation::CAircraftModelList m_installedModels; //!< \todo Do we still need this, as we now focus on model set BlackMisc::Geo::CCoordinateGeodetic m_lastWeatherPosition; //!< Own aircraft position at which weather was fetched and injected last