_speed = 0.0;
_altRestrict = RESTRICT_NONE;
_altitude = 0.0;
+ _overflightWaypt = false; // default to Fly-by
} else if (tag == "Approach") {
_ident = atts.getValue("Name");
_waypoints.clear();
_transition = new Transition(_transIdent, PROCEDURE_RUNWAY_TRANSITION, _procedure);
_transWaypts.clear();
} else {
-
+ // nothing here, we warn on unrecognized in endElement
}
}
_dmeDistance = atof(_text.c_str());
} else if (tag == "RadialtoIntercept") {
_radial = atof(_text.c_str());
+ } else if (tag == "Flytype") {
+ // values are 'Fly-by' and 'Fly-over'
+ _overflightWaypt = (_text == "Fly-over");
} else {
-
+ SG_LOG(SG_IO, SG_INFO, "unrecognized Level-D XML element:" << tag);
}
}
wp->setSpeed(_speed, RESTRICT_AT); // or _BELOW?
}
+ if (_overflightWaypt) {
+ wp->setFlag(WPT_OVERFLIGHT);
+ }
+
return wp;
}
std::string _transIdent;
double _longitude, _latitude, _altitude, _speed;
RouteRestriction _altRestrict;
+ bool _overflightWaypt;
double _holdRadial; // inbound hold radial, or -1 if radial is 'inbound'
double _holdTD; ///< hold time (seconds) or distance (nm), based on flag below