#include "config.h"
#endif
-#include <simgear/structure/exception.hxx>
-#include <simgear/debug/logstream.hxx>
-
#include <Navaids/markerbeacon.hxx>
-#include <Airports/runways.hxx>
-#include <Navaids/navdb.hxx>
using std::string;
-FGPositioned::Type
-FGMarkerBeaconRecord::mapType(int aTy)
-{
- switch (aTy) {
- case 7: return FGPositioned::OM;
- case 8: return FGPositioned::MM;
- case 9: return FGPositioned::IM;
- default:
- throw sg_range_exception("Got a non-marker-beacon-type",
- "FGMarkerBeaconRecord::mapType");
- }
-}
-
-FGMarkerBeaconRecord*
-FGMarkerBeaconRecord::create(int aTy, const string& aName, const SGGeod& aPos)
-{
- Type fgpTy = mapType(aTy);
- FGRunway* runway = getRunwayFromName(aName);
- if (!runway)
- {
- SG_LOG(SG_GENERAL, SG_ALERT, "Failed to create beacon for unknown runway '" << aName << "'.");
- return NULL;
- }
- SGGeod pos(aPos);
- // fudge elevation to the runway elevation if it's not specified
- if (fabs(pos.getElevationFt()) < 0.01) {
- pos.setElevationFt(runway->elevation());
- }
-
- return new FGMarkerBeaconRecord(fgpTy, runway, pos);
-}
-
-
-FGMarkerBeaconRecord::FGMarkerBeaconRecord(Type aTy, FGRunway* aRunway, const SGGeod& aPos) :
- FGPositioned(aTy, string(), aPos),
+FGMarkerBeaconRecord::FGMarkerBeaconRecord(PositionedID aGuid, Type aTy,
+ PositionedID aRunway, const SGGeod& aPos) :
+ FGPositioned(aGuid, aTy, string(), aPos),
_runway(aRunway)
{
- init(true); // init FGPositioned
}