mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-27 11:05:44 +08:00
Fix assert due to NaN in CXSwiftBusTrafficProxy::getElevationAtPosition
This commit is contained in:
@@ -360,6 +360,7 @@ namespace BlackCore
|
|||||||
void ISimulator::callbackReceivedRequestedElevation(const CElevationPlane &plane, const CCallsign &callsign)
|
void ISimulator::callbackReceivedRequestedElevation(const CElevationPlane &plane, const CCallsign &callsign)
|
||||||
{
|
{
|
||||||
if (this->isShuttingDown()) { return; }
|
if (this->isShuttingDown()) { return; }
|
||||||
|
if (plane.isNull()) { return; }
|
||||||
|
|
||||||
ISimulationEnvironmentProvider::rememberGroundElevation(callsign, plane); // in simulator
|
ISimulationEnvironmentProvider::rememberGroundElevation(callsign, plane); // in simulator
|
||||||
const int updated = CRemoteAircraftAware::updateAircraftGroundElevation(callsign, plane, CAircraftSituation::FromProvider);
|
const int updated = CRemoteAircraftAware::updateAircraftGroundElevation(callsign, plane, CAircraftSituation::FromProvider);
|
||||||
|
|||||||
@@ -322,7 +322,11 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Is null?
|
//! Is null?
|
||||||
virtual bool isNull() const override { return Math::CMathUtils::epsilonZeroLimits(m_x) && Math::CMathUtils::epsilonZeroLimits(m_y) && Math::CMathUtils::epsilonZeroLimits(m_z); }
|
virtual bool isNull() const override
|
||||||
|
{
|
||||||
|
if (m_geodeticHeight.isNull()) { return true; }
|
||||||
|
return Math::CMathUtils::epsilonZeroLimits(m_x) && Math::CMathUtils::epsilonZeroLimits(m_y) && Math::CMathUtils::epsilonZeroLimits(m_z);
|
||||||
|
}
|
||||||
|
|
||||||
//! Coordinate by WGS84 position data
|
//! Coordinate by WGS84 position data
|
||||||
static CCoordinateGeodetic fromWgs84(const QString &latitudeWgs84, const QString &longitudeWgs84, const Aviation::CAltitude &geodeticHeight = {});
|
static CCoordinateGeodetic fromWgs84(const QString &latitudeWgs84, const QString &longitudeWgs84, const Aviation::CAltitude &geodeticHeight = {});
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include "xswiftbustrafficproxy.h"
|
#include "xswiftbustrafficproxy.h"
|
||||||
#include <QLatin1String>
|
#include <QLatin1String>
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
#define XSWIFTBUS_SERVICENAME "org.swift-project.xswiftbus"
|
#define XSWIFTBUS_SERVICENAME "org.swift-project.xswiftbus"
|
||||||
|
|
||||||
@@ -170,7 +171,7 @@ namespace BlackSimPlugin
|
|||||||
{
|
{
|
||||||
const CCallsign cs(reply.argumentAt<0>());
|
const CCallsign cs(reply.argumentAt<0>());
|
||||||
const double elevationMeters = reply.argumentAt<1>();
|
const double elevationMeters = reply.argumentAt<1>();
|
||||||
const CAltitude elevationAlt(elevationMeters, CLengthUnit::m(), CLengthUnit::ft());
|
const CAltitude elevationAlt = std::isnan(elevationMeters) ? CAltitude::null() : CAltitude(elevationMeters, CLengthUnit::m(), CLengthUnit::ft());
|
||||||
const CElevationPlane elevation(CLatitude(latitudeDeg, CAngleUnit::deg()),
|
const CElevationPlane elevation(CLatitude(latitudeDeg, CAngleUnit::deg()),
|
||||||
CLongitude(longitudeDeg, CAngleUnit::deg()),
|
CLongitude(longitudeDeg, CAngleUnit::deg()),
|
||||||
elevationAlt, CElevationPlane::singlePointRadius());
|
elevationAlt, CElevationPlane::singlePointRadius());
|
||||||
|
|||||||
Reference in New Issue
Block a user