[xswiftbus] log message when terrain probe fails to find ground elevation

This commit is contained in:
Mat Sutcliffe
2020-01-19 18:09:17 +00:00
parent e1a894f81a
commit 90b307d868
3 changed files with 17 additions and 5 deletions

View File

@@ -7,6 +7,7 @@
*/
#include "terrainprobe.h"
#include "utils.h"
#include <XPLM/XPLMGraphics.h>
#include <limits>
@@ -16,7 +17,7 @@ namespace XSwiftBus
CTerrainProbe::~CTerrainProbe() { XPLMDestroyProbe(m_ref); }
double CTerrainProbe::getElevation(double degreesLatitude, double degreesLongitude, double metersAltitude) const
double CTerrainProbe::getElevation(double degreesLatitude, double degreesLongitude, double metersAltitude, const std::string &callsign) const
{
double x, y, z;
XPLMWorldToLocal(degreesLatitude, degreesLongitude, metersAltitude, &x, &y, &z);
@@ -26,8 +27,18 @@ namespace XSwiftBus
auto result = XPLMProbeTerrainXYZ(m_ref, static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), &probe);
if (result != xplm_ProbeHitTerrain)
{
std::string error;
if (result == xplm_ProbeError) { error = "probe error"; }
else if (result == xplm_ProbeMissed) { error = "probe missed"; }
else { error = "unknown probe result"; }
WARNING_LOG(callsign + " " + error + " at " + std::to_string(degreesLatitude) + ", " + std::to_string(degreesLongitude) + ", " + std::to_string(metersAltitude));
return std::numeric_limits<double>::quiet_NaN();
}
if (probe.is_wet)
{
DEBUG_LOG(callsign + " probe hit water at " + std::to_string(degreesLatitude) + ", " + std::to_string(degreesLongitude) + ", " + std::to_string(metersAltitude));
}
XPLMLocalToWorld(probe.locationX, probe.locationY, probe.locationZ, &degreesLatitude, &degreesLongitude, &metersAltitude);
return metersAltitude;