19 #ifndef __CEL_TOOLS_CELGRAPH__ 20 #define __CEL_TOOLS_CELGRAPH__ 22 #include "csutil/csobject.h" 23 #include "csutil/util.h" 24 #include "csutil/hash.h" 25 #include "csutil/redblacktree.h" 26 #include "csutil/weakrefarr.h" 27 #include "csutil/stringarray.h" 28 #include "csutil/eventhandlers.h" 29 #include "iutil/comp.h" 30 #include "iutil/eventh.h" 31 #include "iutil/eventq.h" 32 #include "ivaria/conin.h" 33 #include "ivaria/conout.h" 35 #include "tools/celgraph.h" 47 csRef<iCelNode> successor;
66 csRefArray<iCelEdge> edges;
67 csRef<iMapNode> map_node;
68 csRef<iCelNode> parent;
76 virtual size_t AddSuccessor (iCelNode* node,
bool state);
77 virtual void SetMapNode (iMapNode* node);
78 virtual void SetParent (iCelNode* par);
79 virtual void SetName (
const char* n);
80 virtual void Heuristic (
float cost, iCelNode* goal);
81 virtual iMapNode* GetMapNode ();
82 virtual csVector3 GetPosition ();
85 virtual csArray<iCelNode*> GetSuccessors ();
86 virtual csArray<iCelNode*> GetAllSuccessors ();
90 {
return edges.GetSize(); }
92 {
return edges.Get(idx); }
93 virtual void RemoveEdge (
size_t idx);
94 virtual size_t AddSuccessor (iCelNode* node,
bool state,
float weight);
95 virtual csRefArray<iCelEdge>* GetEdges ();
103 celPath, csObject, iCelPath, iComponent>
106 iObjectRegistry* object_reg;
108 csRefArray<iMapNode> nodes;
114 virtual void AddNode (iMapNode* node);
115 virtual void InsertNode (
size_t pos, iMapNode* node);
116 virtual iMapNode* Next ();
117 virtual iMapNode* Previous ();
118 virtual iMapNode* Current ();
119 virtual csVector3 CurrentPosition ();
120 virtual iSector* CurrentSector ();
121 virtual bool HasNext ();
122 virtual bool HasPrevious ();
123 virtual void Restart ();
124 virtual void Clear ();
125 virtual bool Initialize (iObjectRegistry* object_reg);
126 virtual iMapNode* GetFirst ();
127 virtual iMapNode* GetLast ();
128 virtual void Invert ();
130 {
return nodes.GetSize(); }
137 celGraph, csObject, iCelGraph, iComponent>
140 iObjectRegistry* object_reg;
141 csRefArray <iCelNode> nodes;
147 virtual bool Initialize (iObjectRegistry* object_reg);
148 virtual iCelNode* CreateNode (
const char *name, csVector3 &pos);
149 virtual size_t AddNode (iCelNode* node);
150 virtual void AddEdge (iCelNode* from, iCelNode* to,
bool state);
151 virtual bool AddEdgeByNames (
const char* from,
const char* to,
bool state);
152 virtual iCelNode* GetClosest (csVector3 position);
153 virtual bool ShortestPath (iCelNode* from, iCelNode* goal, iCelPath* path);
154 virtual iCelNode* RandomPath (iCelNode* from,
int distance, iCelPath* path);
156 {
return nodes.GetSize(); }
158 {
return nodes.Get(idx); }
159 virtual void RemoveNode (
size_t idx);
160 virtual void RemoveEdge (iCelNode* from,
size_t idx);
161 virtual size_t AddEdge (iCelNode* from, iCelNode* to,
bool state,
float weight);
162 virtual iCelNode* CreateEmptyNode (
size_t& index);
163 virtual bool ShortestPath2 (iCelNode* from, iCelNode* goal, iCelPath* path);
166 #endif //__CEL_TOOLS_CELGRAPH__ virtual iCelNode * GetParent()
const char * GetName(int id)
This is a mapnode Graph for CEL.
virtual size_t GetEdgeCount()
virtual float GetWeight() const
This is a mapnode Graph for CEL.
virtual float GetHeuristic()
virtual iObject * QueryObject()
virtual size_t GetNodeCount()
void void Initialize(iObjectRegistry *object_reg)
virtual void SetWeight(float weight)
virtual void SetState(bool open)
virtual iCelNode * GetSuccessor()
virtual iCelNode * GetNode(size_t idx)
virtual iCelEdge * GetEdge(size_t idx)
virtual void SetSuccessor(iCelNode *node)
This is a mapnode Path for CEL.
virtual size_t GetNodeCount()
virtual iObject * QueryObject()