#include <simgear/compiler.h>
-#include "Airports/runwaybase.hxx"
+#include <Airports/runwaybase.hxx>
// forward decls
class FGAirport;
+class FGNavRecord;
+class SGPropertyNode;
+
+namespace flightgear {
+ class SID;
+ class STAR;
+ class Approach;
+}
class FGRunway : public FGRunwayBase
{
- FGAirport* _airport;
- bool _reciprocal;
+ PositionedID _airport;
+ bool _isReciprocal;
+ PositionedID _reciprocal;
double _displ_thresh;
double _stopway;
+ PositionedID _ils;
public:
- FGRunway(FGAirport* aAirport, const std::string& rwy_no,
+ FGRunway(PositionedID aGuid,
+ PositionedID aAirport, const std::string& rwy_no,
const SGGeod& aGeod,
const double heading, const double length,
const double width,
* over runways to avoid counting runways twice, if desired.
*/
bool isReciprocal() const
- { return _reciprocal; }
+ { return _isReciprocal; }
/**
- * Get the runway threshold point - this is syntatic sugar, equivalent to
+ * Get the runway beginning point - this is syntatic sugar, equivalent to
* calling pointOnCenterline(0.0);
*/
- SGGeod threshold() const;
+ SGGeod begin() const;
/**
* Get the (possibly displaced) threshold point.
*/
- SGGeod displacedThreshold() const;
+ SGGeod threshold() const;
/**
- * Get the opposite threshold - this is equivalent to calling
+ * Get the 'far' end - this is equivalent to calling
* pointOnCenterline(lengthFt());
*/
- SGGeod reverseThreshold() const;
+ SGGeod end() const;
double displacedThresholdM() const
{ return _displ_thresh * SG_FEET_TO_METER; }
double stopwayM() const
{ return _stopway * SG_FEET_TO_METER; }
- /**
+ /**
* Airport this runway is located at
*/
- FGAirport* airport() const
- { return _airport; }
+ FGAirport* airport() const;
+
+ FGNavRecord* ILS() const;
+
+ /**
+ * retrieve the associated glideslope transmitter, if one is defined.
+ */
+ FGNavRecord* glideslope() const;
+
+ void setILS(PositionedID nav) { _ils = nav; }
+
+ FGRunway* reciprocalRunway() const;
+
+ void setReciprocalRunway(PositionedID other);
+
+ /**
+ * Get SIDs (DPs) associated with this runway
+ */
+ std::vector<flightgear::SID*> getSIDs() const;
+
+ /**
+ * Get STARs associared with this runway
+ */
+ std::vector<flightgear::STAR*> getSTARs() const;
+
+
+ std::vector<flightgear::Approach*> getApproaches() const;
- // FIXME - should die once airport / runway creation is cleaned up
- void setAirport(FGAirport* aAirport)
- { _airport = aAirport; }
};
#endif // _FG_RUNWAYS_HXX