// Copyright (C) 2007 Id Software, Inc. // #ifndef __NAVCALLBACK_AVOIDLOCATION_H__ #define __NAVCALLBACK_AVOIDLOCATION_H__ /* =============================================================================== idNAVCallback_AvoidLocation =============================================================================== */ struct idNAVObstacle { idBounds absBounds; // absolute bounds of obstacle mutable idBounds expAbsBounds; // expanded absolute bounds of obstacle }; class idNAVCallback_AvoidLocation : public idNAVCallback { public: idNAVCallback_AvoidLocation(); ~idNAVCallback_AvoidLocation(); void SetAvoidLocation( const idVec3& start, const idVec3& avoidLocation ); void SetObstacles( const idNAV* aas, const idNAVObstacle* obstacles, int numObstacles ); virtual bool PathValid( const idNAV* aas, const idVec3& start, const idVec3& end ); virtual int AdditionalTravelTimeForPath( const idNAV* aas, const idVec3& start, const idVec3& end ); virtual bool AreaIsGoal( const idNAV* aas, int areaNum ) = 0; private: idVec3 avoidLocation; float avoidDist; const idNAVObstacle* obstacles; int numObstacles; }; #endif /* !__NAVCALLBACK_AVOIDLOCATION_H__ */