mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-27 02:55:44 +08:00
Ref T260, utility functions to set provider, plane ctor
This commit is contained in:
committed by
Roland Winklmeier
parent
6e908db52e
commit
056c257182
@@ -97,6 +97,12 @@ namespace BlackCore
|
||||
return this;
|
||||
}
|
||||
|
||||
void CContextNetwork::setSimulationEnvironmentProvider(ISimulationEnvironmentProvider *provider)
|
||||
{
|
||||
if (m_airspace) { m_airspace->setSimulationEnvironmentProvider(provider); }
|
||||
if (m_network) { m_network->setSimulationEnvironmentProvider(provider); }
|
||||
}
|
||||
|
||||
CContextNetwork::~CContextNetwork()
|
||||
{
|
||||
this->gracefulShutdown();
|
||||
@@ -438,17 +444,14 @@ namespace BlackCore
|
||||
void CContextNetwork::xCtxSimulatorStatusChanged(int 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();
|
||||
m_network->setSimulationEnvironmentProvider(sim ? sim->simulator() : nullptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_network->setSimulationEnvironmentProvider(nullptr);
|
||||
}
|
||||
const CContextSimulator *sim = this->getRuntime()->getCContextSimulator();
|
||||
this->setSimulationEnvironmentProvider(sim ? sim->simulator() : nullptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->setSimulationEnvironmentProvider(nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -217,6 +217,9 @@ namespace BlackCore
|
||||
//! \remarks normally only for core facade internal usage
|
||||
CAirspaceMonitor *airspace() const { return m_airspace; }
|
||||
|
||||
//! Set the provider
|
||||
void setSimulationEnvironmentProvider(BlackMisc::Simulation::ISimulationEnvironmentProvider *provider);
|
||||
|
||||
private:
|
||||
CAirspaceMonitor *m_airspace = nullptr;
|
||||
INetwork *m_network = nullptr;
|
||||
|
||||
@@ -72,6 +72,11 @@ namespace BlackCore
|
||||
return s.join(", ");
|
||||
}
|
||||
|
||||
bool ISimulator::isAnyConnectedStatus(SimulatorStatus status)
|
||||
{
|
||||
return (status.testFlag(Connected) || status.testFlag(Simulating) || status.testFlag(Paused));
|
||||
}
|
||||
|
||||
ISimulator::ISimulator(
|
||||
const CSimulatorPluginInfo &pluginInfo, IOwnAircraftProvider *ownAircraftProvider,
|
||||
IRemoteAircraftProvider *remoteAircraftProvider, IWeatherGridProvider *weatherGridProvider, QObject *parent) :
|
||||
|
||||
@@ -207,6 +207,9 @@ namespace BlackCore
|
||||
//! Status to string
|
||||
static QString statusToString(SimulatorStatus status);
|
||||
|
||||
//! Any connected status?
|
||||
static bool isAnyConnectedStatus(SimulatorStatus status);
|
||||
|
||||
signals:
|
||||
//! Simulator combined status
|
||||
void simulatorStatusChanged(SimulatorStatus status);
|
||||
|
||||
@@ -34,6 +34,10 @@ namespace BlackMisc
|
||||
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
|
||||
{
|
||||
return (isWithinRange(coordinate)) ? geodeticHeight() : CAltitude::null();
|
||||
|
||||
@@ -36,6 +36,9 @@ namespace BlackMisc
|
||||
//! Plane at given coordinates with range to 2nd coordinate
|
||||
CElevationPlane(const ICoordinateGeodetic &coordinate, const ICoordinateGeodetic &rangeCoordinate);
|
||||
|
||||
//! Plane at given coordinates with radius
|
||||
CElevationPlane(const ICoordinateGeodetic &coordinate, const PhysicalQuantities::CLength &radius);
|
||||
|
||||
//! Constructors from CCoordinateGeodetic
|
||||
using CCoordinateGeodetic::CCoordinateGeodetic;
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace BlackMisc
|
||||
//! \remark use individual names to disambiguate
|
||||
void setProvider(PROVIDER *provider)
|
||||
{
|
||||
if (m_provider == provider) { return; }
|
||||
if (m_provider) { m_lastProviderConnections.disconnectAll(); }
|
||||
m_provider = provider; // new provider
|
||||
IProvider *iProvider = dynamic_cast<IProvider *>(provider);
|
||||
|
||||
Reference in New Issue
Block a user