Files
2026-05-22 21:59:30 -07:00

67 lines
3.6 KiB
C++

/*
===========================================================================
IceTech GPL Source Code
Copyright (C) 2026 Justin Marshall
===========================================================================
*/
#ifndef __RECAST_NAVIGATION_H__
#define __RECAST_NAVIGATION_H__
typedef int recastNavHandle_t;
typedef int recastObstacleHandle_t;
static const recastNavHandle_t RECAST_NAV_HANDLE_INVALID = -1;
static const int MAX_RECAST_PATH_AREAS = 256;
typedef struct recastPath_s {
idVec3 moveGoal;
idVec3 secondaryGoal;
int moveAreaNum;
int travelTime;
} recastPath_t;
class idRecastNavigationManager {
public:
virtual ~idRecastNavigationManager( void ) {}
virtual recastNavHandle_t Alloc( void ) = 0;
virtual void Free( recastNavHandle_t handle ) = 0;
virtual bool Load( recastNavHandle_t handle, const char *aasName, const char *fileName, unsigned int mapFileCRC ) = 0;
virtual bool BuildMapFile( const char *mapName, const char *aasType ) = 0;
virtual void Stats( recastNavHandle_t handle ) const = 0;
virtual void DebugDraw( recastNavHandle_t handle, idRenderWorld *renderWorld, int drawMode, int lifetime ) const = 0;
virtual bool IsLoaded( recastNavHandle_t handle ) const = 0;
virtual const char * GetName( recastNavHandle_t handle ) const = 0;
virtual int NumPolys( recastNavHandle_t handle ) const = 0;
virtual const idAASSettings *GetSettings( recastNavHandle_t handle ) const = 0;
virtual int PointAreaNum( recastNavHandle_t handle, const idVec3 &origin ) const = 0;
virtual int PointReachableAreaNum( recastNavHandle_t handle, const idVec3 &origin, const idBounds &searchBounds, const int areaFlags ) const = 0;
virtual int BoundsReachableAreaNum( recastNavHandle_t handle, const idBounds &bounds, const int areaFlags ) const = 0;
virtual void PushPointIntoAreaNum( recastNavHandle_t handle, int areaNum, idVec3 &origin ) const = 0;
virtual idVec3 AreaCenter( recastNavHandle_t handle, int areaNum ) const = 0;
virtual int AreaFlags( recastNavHandle_t handle, int areaNum ) const = 0;
virtual int AreaTravelFlags( recastNavHandle_t handle, int areaNum ) const = 0;
virtual bool Trace( recastNavHandle_t handle, aasTrace_t &trace, const idVec3 &start, const idVec3 &end ) const = 0;
virtual bool SetAreaState( recastNavHandle_t handle, const idBounds &bounds, const int areaContents, bool disabled ) = 0;
virtual recastObstacleHandle_t AddObstacle( recastNavHandle_t handle, const idBounds &bounds ) = 0;
virtual void RemoveObstacle( recastNavHandle_t handle, const recastObstacleHandle_t obstacleHandle ) = 0;
virtual void RemoveAllObstacles( recastNavHandle_t handle ) = 0;
virtual int TravelTimeToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, int travelFlags ) const = 0;
virtual bool RouteToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 origin, int goalAreaNum, int travelFlags, recastPath_t &route ) const = 0;
virtual bool PathToGoal( recastNavHandle_t handle, recastPath_t &path, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags ) const = 0;
virtual bool PathValid( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, idVec3 &endPos, int &endAreaNum ) const = 0;
virtual bool PathAreaList( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, int *areas, int &numAreas, int maxAreas ) const = 0;
};
extern idRecastNavigationManager *RecastNavigationManager;
#endif /* !__RECAST_NAVIGATION_H__ */