mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 02:45:33 +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;
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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) :
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user