mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 12:55:33 +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)
|
||||
{
|
||||
if (this->isShuttingDown()) { return; }
|
||||
if (plane.isNull()) { return; }
|
||||
|
||||
ISimulationEnvironmentProvider::rememberGroundElevation(callsign, plane); // in simulator
|
||||
const int updated = CRemoteAircraftAware::updateAircraftGroundElevation(callsign, plane, CAircraftSituation::FromProvider);
|
||||
|
||||
@@ -322,7 +322,11 @@ namespace BlackMisc
|
||||
}
|
||||
|
||||
//! 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
|
||||
static CCoordinateGeodetic fromWgs84(const QString &latitudeWgs84, const QString &longitudeWgs84, const Aviation::CAltitude &geodeticHeight = {});
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "xswiftbustrafficproxy.h"
|
||||
#include <QLatin1String>
|
||||
#include <QDBusConnection>
|
||||
#include <cmath>
|
||||
|
||||
#define XSWIFTBUS_SERVICENAME "org.swift-project.xswiftbus"
|
||||
|
||||
@@ -170,7 +171,7 @@ namespace BlackSimPlugin
|
||||
{
|
||||
const CCallsign cs(reply.argumentAt<0>());
|
||||
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()),
|
||||
CLongitude(longitudeDeg, CAngleUnit::deg()),
|
||||
elevationAlt, CElevationPlane::singlePointRadius());
|
||||
|
||||
Reference in New Issue
Block a user