//========= Copyright Valve Corporation, All rights reserved. ============// // tf_bot_vision.h // Team Fortress NextBot vision interface // Michael Booth, May 2009 #ifndef TF_BOT_VISION_H #define TF_BOT_VISION_H #include "NextBotVisionInterface.h" //---------------------------------------------------------------------------- class CTFBotVision : public IVision { public: CTFBotVision( INextBot *bot ) : IVision( bot ) { } virtual ~CTFBotVision() { } virtual void Update( void ); // update internal state /** * Populate "potentiallyVisible" with the set of all entities we could potentially see. * Entities in this set will be tested for visibility/recognition in IVision::Update() */ virtual void CollectPotentiallyVisibleEntities( CUtlVector< CBaseEntity * > *potentiallyVisible ); virtual bool IsIgnored( CBaseEntity *subject ) const; // return true to completely ignore this entity (may not be in sight when this is called) virtual bool IsVisibleEntityNoticed( CBaseEntity *subject ) const; // return true if we 'notice' the subject, even though we have LOS to it virtual float GetMaxVisionRange( void ) const; // return maximum distance vision can reach virtual float GetMinRecognizeTime( void ) const; // return VISUAL reaction time private: CUtlVector< CHandle< CBaseCombatCharacter > > m_potentiallyVisibleNPCVector; CountdownTimer m_potentiallyVisibleUpdateTimer; void UpdatePotentiallyVisibleNPCVector( void ); CountdownTimer m_scanTimer; }; #endif // TF_BOT_VISION_H