Ref T260, utility functions to set provider, plane ctor

This commit is contained in:
Klaus Basan
2018-04-09 22:53:16 +02:00
committed by Roland Winklmeier
parent 6e908db52e
commit 056c257182
7 changed files with 32 additions and 10 deletions

View File

@@ -97,6 +97,12 @@ namespace BlackCore
return this; return this;
} }
void CContextNetwork::setSimulationEnvironmentProvider(ISimulationEnvironmentProvider *provider)
{
if (m_airspace) { m_airspace->setSimulationEnvironmentProvider(provider); }
if (m_network) { m_network->setSimulationEnvironmentProvider(provider); }
}
CContextNetwork::~CContextNetwork() CContextNetwork::~CContextNetwork()
{ {
this->gracefulShutdown(); this->gracefulShutdown();
@@ -438,17 +444,14 @@ namespace BlackCore
void CContextNetwork::xCtxSimulatorStatusChanged(int status) void CContextNetwork::xCtxSimulatorStatusChanged(int status)
{ {
const ISimulator::SimulatorStatus simStatus = static_cast<ISimulator::SimulatorStatus>(status); const ISimulator::SimulatorStatus simStatus = static_cast<ISimulator::SimulatorStatus>(status);
if (m_network) if (ISimulator::isAnyConnectedStatus(simStatus))
{ {
if (simStatus.testFlag(ISimulator::Connected)) const CContextSimulator *sim = this->getRuntime()->getCContextSimulator();
{ this->setSimulationEnvironmentProvider(sim ? sim->simulator() : nullptr);
const CContextSimulator *sim = this->getRuntime()->getCContextSimulator(); }
m_network->setSimulationEnvironmentProvider(sim ? sim->simulator() : nullptr); else
} {
else this->setSimulationEnvironmentProvider(nullptr);
{
m_network->setSimulationEnvironmentProvider(nullptr);
}
} }
} }

View File

@@ -217,6 +217,9 @@ namespace BlackCore
//! \remarks normally only for core facade internal usage //! \remarks normally only for core facade internal usage
CAirspaceMonitor *airspace() const { return m_airspace; } CAirspaceMonitor *airspace() const { return m_airspace; }
//! Set the provider
void setSimulationEnvironmentProvider(BlackMisc::Simulation::ISimulationEnvironmentProvider *provider);
private: private:
CAirspaceMonitor *m_airspace = nullptr; CAirspaceMonitor *m_airspace = nullptr;
INetwork *m_network = nullptr; INetwork *m_network = nullptr;

View File

@@ -72,6 +72,11 @@ namespace BlackCore
return s.join(", "); return s.join(", ");
} }
bool ISimulator::isAnyConnectedStatus(SimulatorStatus status)
{
return (status.testFlag(Connected) || status.testFlag(Simulating) || status.testFlag(Paused));
}
ISimulator::ISimulator( ISimulator::ISimulator(
const CSimulatorPluginInfo &pluginInfo, IOwnAircraftProvider *ownAircraftProvider, const CSimulatorPluginInfo &pluginInfo, IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider, IWeatherGridProvider *weatherGridProvider, QObject *parent) : IRemoteAircraftProvider *remoteAircraftProvider, IWeatherGridProvider *weatherGridProvider, QObject *parent) :

View File

@@ -207,6 +207,9 @@ namespace BlackCore
//! Status to string //! Status to string
static QString statusToString(SimulatorStatus status); static QString statusToString(SimulatorStatus status);
//! Any connected status?
static bool isAnyConnectedStatus(SimulatorStatus status);
signals: signals:
//! Simulator combined status //! Simulator combined status
void simulatorStatusChanged(SimulatorStatus status); void simulatorStatusChanged(SimulatorStatus status);

View File

@@ -34,6 +34,10 @@ namespace BlackMisc
m_radius = this->calculateGreatCircleDistance(rangeCoordinate); m_radius = this->calculateGreatCircleDistance(rangeCoordinate);
} }
CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const CLength &radius) :
CCoordinateGeodetic(coordinate), m_radius(radius)
{ }
const CAltitude &CElevationPlane::getAltitudeIfWithinRadius(const ICoordinateGeodetic &coordinate) const const CAltitude &CElevationPlane::getAltitudeIfWithinRadius(const ICoordinateGeodetic &coordinate) const
{ {
return (isWithinRange(coordinate)) ? geodeticHeight() : CAltitude::null(); return (isWithinRange(coordinate)) ? geodeticHeight() : CAltitude::null();

View File

@@ -36,6 +36,9 @@ namespace BlackMisc
//! Plane at given coordinates with range to 2nd coordinate //! Plane at given coordinates with range to 2nd coordinate
CElevationPlane(const ICoordinateGeodetic &coordinate, const ICoordinateGeodetic &rangeCoordinate); CElevationPlane(const ICoordinateGeodetic &coordinate, const ICoordinateGeodetic &rangeCoordinate);
//! Plane at given coordinates with radius
CElevationPlane(const ICoordinateGeodetic &coordinate, const PhysicalQuantities::CLength &radius);
//! Constructors from CCoordinateGeodetic //! Constructors from CCoordinateGeodetic
using CCoordinateGeodetic::CCoordinateGeodetic; using CCoordinateGeodetic::CCoordinateGeodetic;

View File

@@ -44,6 +44,7 @@ namespace BlackMisc
//! \remark use individual names to disambiguate //! \remark use individual names to disambiguate
void setProvider(PROVIDER *provider) void setProvider(PROVIDER *provider)
{ {
if (m_provider == provider) { return; }
if (m_provider) { m_lastProviderConnections.disconnectAll(); } if (m_provider) { m_lastProviderConnections.disconnectAll(); }
m_provider = provider; // new provider m_provider = provider; // new provider
IProvider *iProvider = dynamic_cast<IProvider *>(provider); IProvider *iProvider = dynamic_cast<IProvider *>(provider);