X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNavaids%2Fwaypoint.hxx;h=d01070b6f7f6b023354e06849abb209ff31f988d;hb=6bf47cd248ed388e6a4dd3ffa2d00977b00b62fb;hp=7b5f30f09e228372a6e24a57119bb57b60552f49;hpb=622f71c01c70a81db94a7e670953645d0c9129e5;p=flightgear.git diff --git a/src/Navaids/waypoint.hxx b/src/Navaids/waypoint.hxx index 7b5f30f09..d01070b6f 100644 --- a/src/Navaids/waypoint.hxx +++ b/src/Navaids/waypoint.hxx @@ -25,22 +25,18 @@ class FGAirport; typedef SGSharedPtr 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; } @@ -67,9 +63,9 @@ protected: 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; @@ -90,9 +86,9 @@ protected: 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; } @@ -120,9 +116,9 @@ private: 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; @@ -133,6 +129,7 @@ public: FGRunway* runway() const { return _runway; } + virtual double headingRadialDeg() const; protected: virtual std::string type() const { return "runway"; } @@ -147,9 +144,9 @@ private: 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); @@ -170,6 +167,8 @@ public: 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; @@ -187,9 +186,9 @@ private: 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; @@ -206,6 +205,11 @@ public: double headingDegMagnetic() const { return _magHeading; } + virtual double magvarDeg() const + { return 0.0; } + + virtual double headingRadialDeg() const + { return headingDegMagnetic(); } private: std::string _ident; double _magHeading; @@ -214,10 +218,10 @@ private: 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; @@ -236,7 +240,9 @@ public: double dmeDistanceNm() const { return _dmeDistanceNm; } - + + virtual double headingRadialDeg() const + { return courseDegMagnetic(); } private: std::string _ident; SGGeod _pos; @@ -247,10 +253,10 @@ private: 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; @@ -285,10 +291,10 @@ private: 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;