![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00009 00010 00011 #pragma once 00012 00013 #include "geometry/point.h" 00014 #include "vrfmodel/pathNode.h" 00015 #include <gdb/netwrkEdge.h> 00016 #include <list> 00017 00018 class DtRailPathPlanner; 00019 class DtNetworkSegment; 00020 class DtNetworkNode; 00021 00025 00026 #include "vrfmodel/vrfmodelDefines.h" 00027 class DT_DLL_vrfmodel DtRailAStarNode 00028 { 00029 public: 00030 DtRailAStarNode(const DtPoint& point,double cost, DtRailPathPlanner* pathPlanner); 00031 virtual ~DtRailAStarNode(); 00032 00036 virtual bool expand(double valueLimit = 1e255); 00037 00040 virtual void generateChildNodes(); 00041 00042 virtual void sortNodes(); 00043 virtual bool generateOpenEdges(DtNetworkNode * node); 00044 00045 virtual void generateNewNode(DtNetworkNode* node, double cost, DtNetworkEdge* edge, 00046 DtNetworkEdge::DtTraversalDirection direction); 00047 virtual void removeDeadEnds(); 00048 00049 virtual double aStarValue() const; 00050 00051 virtual const DtPoint& point(); 00052 00053 virtual bool deadEnd(); 00054 00055 00057 virtual bool visited(); 00058 00060 virtual void markVisited(); 00061 00062 virtual void setApproachVector(const DtPoint& approachVector); 00063 00066 virtual double turningCost(const DtPoint& destination); 00067 00070 virtual void postSolution(); 00071 00072 virtual void setHostEdge(DtNetworkEdge* edge); 00073 virtual DtNetworkEdge* hostEdge(); 00074 00075 virtual void setTraversalDirection(DtNetworkEdge::DtTraversalDirection direction); 00076 virtual DtNetworkEdge::DtTraversalDirection traversalDirection() const; 00077 00078 protected: 00079 virtual void addNode(DtRailAStarNode * node,std::list<DtRailAStarNode*> & list); 00080 protected: 00081 00082 DtPoint myPoint; 00083 DtRailPathPlanner* myPathPlanner; 00084 double myCost; 00085 double myAStarValue; 00086 bool myDeadEnd; 00087 bool myExpanded; 00089 DtPoint myApproachVector; 00092 std::list<DtNetworkEdge*> myOpenEdges; 00094 std::list<DtRailAStarNode*> myNodeSet; 00096 DtNetworkEdge* myHostEdge; 00098 DtNetworkEdge::DtTraversalDirection myEdgeDirection; 00099 00100 }; 00101 00102