00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CEL_HPFAPI__
00021 #define __CEL_HPFAPI__
00022
00023 #include <csutil/scf.h>
00024 #include <csutil/list.h>
00025 #include <tools/celnavmesh.h>
00026
00027 class csBox3;
00028 class csOBB;
00029 class csString;
00030 class csVector3;
00031 struct csSimpleRenderMesh;
00032 struct iCelNavMeshParams;
00033 struct iCelPath;
00034 struct iSector;
00035 struct iSectorList;
00036 struct iMapNode;
00037
00038
00039
00043 struct iCelHPath : public virtual iBase
00044 {
00045 SCF_INTERFACE (iCelHPath, 1, 0, 0);
00046
00048 virtual bool HasNext () const = 0;
00049
00051 virtual bool HasPrevious () const = 0;
00052
00054 virtual iMapNode* Next () = 0;
00055
00057 virtual iMapNode* Previous () = 0;
00058
00060 virtual iMapNode* Current () = 0;
00061
00063 virtual iMapNode* GetFirst () = 0;
00064
00066 virtual iMapNode* GetLast () = 0;
00067
00069 virtual void Invert () = 0;
00070
00072 virtual void Restart () = 0;
00073
00075 virtual float GetDistance () const = 0;
00076
00081 virtual csList<csSimpleRenderMesh>* GetDebugMeshes () = 0;
00082 };
00083
00084
00085
00089 struct iCelHNavStruct : public virtual iBase
00090 {
00091 SCF_INTERFACE (iCelHNavStruct, 1, 0, 0);
00092
00103 virtual iCelHPath* ShortestPath (const csVector3& from, iSector* fromSector, const csVector3& goal,
00104 iSector* goalSector) = 0;
00105
00114 virtual iCelHPath* ShortestPath (iMapNode* from, iMapNode* goal) = 0;
00115
00123 virtual bool Update (const csBox3& boundingBox, iSector* sector = 0) = 0;
00124
00132 virtual bool Update (const csOBB& boundingBox, iSector* sector = 0) = 0;
00133
00141 virtual bool SaveToFile (iVFS* vfs, const char* directory) = 0;
00142
00147 virtual const iCelNavMeshParams* GetNavMeshParams () const = 0;
00148
00153 virtual csList<csSimpleRenderMesh>* GetDebugMeshes () const = 0;
00154
00159 virtual csList<csSimpleRenderMesh>* GetAgentDebugMeshes (const csVector3& pos, int red, int green,
00160 int blue, int alpha) const = 0;
00161 };
00162
00163
00164
00168 struct iCelHNavStructBuilder : public virtual iBase
00169 {
00170 SCF_INTERFACE (iCelHNavStructBuilder, 1, 0, 0);
00171
00179 virtual bool SetSectors(csList<iSector*> sectorList) = 0;
00180
00185 virtual iCelHNavStruct* BuildHNavStruct () = 0;
00186
00194 virtual iCelHNavStruct* LoadHNavStruct (iVFS* vfs, const char* directory) = 0;
00195
00200 virtual const iCelNavMeshParams* GetNavMeshParams () const = 0;
00201
00206 virtual void SetNavMeshParams (const iCelNavMeshParams* parameters) = 0;
00207 };
00208
00209 #endif // __CEL_HPFAPI__