X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=inline;f=src%2FAirports%2Fgnnode.hxx;h=2ade6673d57bc43ff22a184b4131ed022b308098;hb=afcdbd3158503773644aa07dd86cd92d67946bd4;hp=d265ff5ad913eecd30925f234599486f5170dece;hpb=b8724644c66b162af1cb86f7fee46ed7c197d4bd;p=flightgear.git diff --git a/src/Airports/gnnode.hxx b/src/Airports/gnnode.hxx index d265ff5ad..2ade6673d 100644 --- a/src/Airports/gnnode.hxx +++ b/src/Airports/gnnode.hxx @@ -16,115 +16,33 @@ #ifndef _GN_NODE_HXX_ #define _GN_NODE_HXX_ -#include -#include - #include -#include - -using std::string; -using std::vector; - -class FGTaxiSegment; -typedef vector FGTaxiSegmentVector; -typedef FGTaxiSegmentVector::iterator FGTaxiSegmentVectorIterator; +#include -bool sortByHeadingDiff(FGTaxiSegment *a, FGTaxiSegment *b); -bool sortByLength (FGTaxiSegment *a, FGTaxiSegment *b); -double processPosition(const string& pos); +#include -class FGTaxiNode +class FGTaxiNode : public FGPositioned { -private: - double lat; - double lon; - int index; - +protected: bool isOnRunway; int holdType; - FGTaxiSegmentVector next; // a vector of pointers to all the segments leaving from this node - - // used in way finding - double pathScore; - FGTaxiNode* previousNode; - FGTaxiSegment* previousSeg; - -public: - FGTaxiNode() : - lat (0.0), - lon (0.0), - index(0), - isOnRunway(false), - holdType(0), - pathScore(0), - previousNode(0), - previousSeg(0) -{ -}; - - FGTaxiNode(const FGTaxiNode &other) : - lat(other.lat), - lon(other.lon), - index(other.index), - isOnRunway(other.isOnRunway), - holdType(other.holdType), - next(other.next), - pathScore(other.pathScore), - previousNode(other.previousNode), - previousSeg(other.previousSeg) -{ -}; - -FGTaxiNode &operator =(const FGTaxiNode &other) -{ - lat = other.lat; - lon = other.lon; - index = other.index; - isOnRunway = other.isOnRunway; - holdType = other.holdType; - next = other.next; - pathScore = other.pathScore; - previousNode = other.previousNode; - previousSeg = other.previousSeg; - return *this; -}; - - void setIndex(int idx) { index = idx; }; - void setLatitude (double val) { lat = val; }; - void setLongitude(double val) { lon = val; }; - void setLatitude (const string& val) { lat = processPosition(val); }; - void setLongitude(const string& val) { lon = processPosition(val); }; - void addSegment(FGTaxiSegment *segment) { next.push_back(segment); }; - void setHoldPointType(int val) { holdType = val; }; - void setOnRunway(bool val) { isOnRunway = val; }; - - void setPathScore (double val) { pathScore = val; }; - void setPreviousNode(FGTaxiNode *val) { previousNode = val; }; - void setPreviousSeg (FGTaxiSegment *val) { previousSeg = val; }; - - FGTaxiNode *getPreviousNode() { return previousNode; }; - FGTaxiSegment *getPreviousSegment() { return previousSeg; }; - - double getPathScore() { return pathScore; }; - double getLatitude() { return lat;}; - double getLongitude(){ return lon;}; - - SGGeod geod() const { return SGGeod::fromDeg(lon, lat); } - - int getIndex() { return index; }; - int getHoldPointType() { return holdType; }; - bool getIsOnRunway() { return isOnRunway; }; - - FGTaxiNode *getAddress() { return this;}; - FGTaxiSegmentVectorIterator getBeginRoute() { return next.begin(); }; - FGTaxiSegmentVectorIterator getEndRoute() { return next.end(); }; - bool operator<(const FGTaxiNode &other) const { return index < other.index; }; - - void sortEndSegments(bool); +public: + FGTaxiNode(PositionedID aGuid, const SGGeod& pos, bool aOnRunway, int aHoldType); + virtual ~FGTaxiNode(); + + void setElevation(double val); + + double getElevationM (); + double getElevationFt(); + + PositionedID getIndex() const { return guid(); }; + int getHoldPointType() const { return holdType; }; + bool getIsOnRunway() const { return isOnRunway; }; }; -typedef vector FGTaxiNodeVector; +typedef SGSharedPtr FGTaxiNode_ptr; +typedef std::vector FGTaxiNodeVector; typedef FGTaxiNodeVector::iterator FGTaxiNodeVectorIterator; #endif