#include <simgear/compiler.h>
+#include <simgear/props/props.hxx>
+
#include <string>
#include "runways.hxx"
_airport(aAirport),
_reciprocal(reciprocal),
_displ_thresh(displ_thresh),
- _stopway(stopway)
+ _stopway(stopway),
+ _ils(NULL)
{
}
return pointOnCenterline(_displ_thresh * SG_FEET_TO_METER);
}
+void FGRunway::processThreshold(SGPropertyNode* aThreshold)
+{
+ assert(ident() == aThreshold->getStringValue("rwy"));
+
+ double lon = aThreshold->getDoubleValue("lon"),
+ lat = aThreshold->getDoubleValue("lat");
+ SGGeod newThreshold(SGGeod::fromDegM(lon, lat, mPosition.getElevationM()));
+
+ _heading = aThreshold->getDoubleValue("hdg-deg");
+ _displ_thresh = aThreshold->getDoubleValue("displ-m") * SG_METER_TO_FEET;
+ _stopway = aThreshold->getDoubleValue("stopw-m") * SG_METER_TO_FEET;
+
+ // compute the new runway center, based on the threshold lat/lon, length,
+ // and any displaced threshold.
+ double offsetFt = (0.5 * _length) - _displ_thresh;
+ SGGeod newCenter;
+ double dummy;
+ SGGeodesy::direct(newThreshold, _heading, offsetFt * SG_FEET_TO_METER, newCenter, dummy);
+ mPosition = newCenter;
+}