#ifndef FG_WAYPOINT_HXX
#define FG_WAYPOINT_HXX
+#include <Airports/airports_fwd.hxx>
#include <Navaids/route.hxx>
#include <Navaids/positioned.hxx>
-class FGAirport;
-typedef SGSharedPtr<FGAirport> FGAirportRef;
-class SGWayPoint;
-class FGRunway;
-
namespace flightgear
{
-
class BasicWaypt : public Waypt
{
public:
- BasicWaypt(const SGGeod& aPos, const std::string& aIdent, Route* aOwner);
-
- BasicWaypt(const SGWayPoint& aWP, Route* aOwner);
-
- BasicWaypt(Route* aOwner);
+ BasicWaypt(const SGGeod& aPos, const std::string& aIdent, RouteBase* aOwner);
+
+ BasicWaypt(RouteBase* aOwner);
virtual SGGeod position() const
{ return _pos; }
class NavaidWaypoint : public Waypt
{
public:
- NavaidWaypoint(FGPositioned* aPos, Route* aOwner);
+ NavaidWaypoint(FGPositioned* aPos, RouteBase* aOwner);
- NavaidWaypoint(Route* aOwner);
+ NavaidWaypoint(RouteBase* aOwner);
virtual SGGeod position() const;
class OffsetNavaidWaypoint : public NavaidWaypoint
{
public:
- OffsetNavaidWaypoint(FGPositioned* aPos, Route* aOwner, double aRadial, double aDistNm);
+ OffsetNavaidWaypoint(FGPositioned* aPos, RouteBase* aOwner, double aRadial, double aDistNm);
- OffsetNavaidWaypoint(Route* aOwner);
+ OffsetNavaidWaypoint(RouteBase* aOwner);
virtual SGGeod position() const
{ return _geod; }
class RunwayWaypt : public Waypt
{
public:
- RunwayWaypt(FGRunway* aPos, Route* aOwner);
+ RunwayWaypt(FGRunway* aPos, RouteBase* aOwner);
- RunwayWaypt(Route* aOwner);
+ RunwayWaypt(RouteBase* aOwner);
virtual SGGeod position() const;
FGRunway* runway() const
{ return _runway; }
+ virtual double headingRadialDeg() const;
protected:
virtual std::string type() const
{ return "runway"; }
class Hold : public BasicWaypt
{
public:
- Hold(const SGGeod& aPos, const std::string& aIdent, Route* aOwner);
+ Hold(const SGGeod& aPos, const std::string& aIdent, RouteBase* aOwner);
- Hold(Route* aOwner);
+ Hold(RouteBase* aOwner);
void setHoldRadial(double aInboundRadial);
void setHoldDistance(double aDistanceNm);
double timeOrDistance() const
{ return _holdTD;}
+ virtual double headingRadialDeg() const
+ { return inboundRadial(); }
protected:
virtual void initFromProperties(SGPropertyNode_ptr aProp);
virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
class HeadingToAltitude : public Waypt
{
public:
- HeadingToAltitude(Route* aOwner, const std::string& aIdent, double aMagHdg);
+ HeadingToAltitude(RouteBase* aOwner, const std::string& aIdent, double aMagHdg);
- HeadingToAltitude(Route* aOwner);
+ HeadingToAltitude(RouteBase* aOwner);
virtual void initFromProperties(SGPropertyNode_ptr aProp);
virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
double headingDegMagnetic() const
{ return _magHeading; }
+ virtual double magvarDeg() const
+ { return 0.0; }
+
+ virtual double headingRadialDeg() const
+ { return headingDegMagnetic(); }
private:
std::string _ident;
double _magHeading;
class DMEIntercept : public Waypt
{
public:
- DMEIntercept(Route* aOwner, const std::string& aIdent, const SGGeod& aPos,
+ DMEIntercept(RouteBase* aOwner, const std::string& aIdent, const SGGeod& aPos,
double aCourseDeg, double aDistanceNm);
- DMEIntercept(Route* aOwner);
+ DMEIntercept(RouteBase* aOwner);
virtual void initFromProperties(SGPropertyNode_ptr aProp);
virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
double dmeDistanceNm() const
{ return _dmeDistanceNm; }
-
+
+ virtual double headingRadialDeg() const
+ { return courseDegMagnetic(); }
private:
std::string _ident;
SGGeod _pos;
class RadialIntercept : public Waypt
{
public:
- RadialIntercept(Route* aOwner, const std::string& aIdent, const SGGeod& aPos,
+ RadialIntercept(RouteBase* aOwner, const std::string& aIdent, const SGGeod& aPos,
double aCourseDeg, double aRadialDeg);
- RadialIntercept(Route* aOwner);
+ RadialIntercept(RouteBase* aOwner);
virtual void initFromProperties(SGPropertyNode_ptr aProp);
virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
class ATCVectors : public Waypt
{
public:
- ATCVectors(Route* aOwner, FGAirport* aFacility);
+ ATCVectors(RouteBase* aOwner, FGAirport* aFacility);
virtual ~ATCVectors();
- ATCVectors(Route* aOwner);
+ ATCVectors(RouteBase* aOwner);
virtual void initFromProperties(SGPropertyNode_ptr aProp);
virtual void writeToProperties(SGPropertyNode_ptr aProp) const;