diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/server/ai_senses.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/server/ai_senses.h')
| -rw-r--r-- | mp/src/game/server/ai_senses.h | 338 |
1 files changed, 169 insertions, 169 deletions
diff --git a/mp/src/game/server/ai_senses.h b/mp/src/game/server/ai_senses.h index 325e885d..fed85eb9 100644 --- a/mp/src/game/server/ai_senses.h +++ b/mp/src/game/server/ai_senses.h @@ -1,169 +1,169 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-
-#ifndef AI_SENSES_H
-#define AI_SENSES_H
-
-#include "tier1/utlvector.h"
-#include "tier1/utlmap.h"
-#include "simtimer.h"
-#include "ai_component.h"
-#include "soundent.h"
-
-#if defined( _WIN32 )
-#pragma once
-#endif
-
-class CBaseEntity;
-class CSound;
-
-//-------------------------------------
-
-DECLARE_POINTER_HANDLE( AISightIter_t );
-DECLARE_POINTER_HANDLE( AISoundIter_t );
-
-// GetFirstSeenEntity can take these as optional parameters to search for
-// a specific type of entity.
-enum seentype_t
-{
- SEEN_ALL = -1, // Default
- SEEN_HIGH_PRIORITY = 0,
- SEEN_NPCS,
- SEEN_MISC
-};
-
-#define SENSING_FLAGS_NONE 0x00000000
-#define SENSING_FLAGS_DONT_LOOK 0x00000001 // Effectively makes the NPC blind
-#define SENSING_FLAGS_DONT_LISTEN 0x00000002 // Effectively makes the NPC deaf
-
-//-----------------------------------------------------------------------------
-// class CAI_ScriptConditions
-//
-// Purpose:
-//-----------------------------------------------------------------------------
-
-class CAI_Senses : public CAI_Component
-{
-public:
- CAI_Senses()
- : m_LookDist(2048),
- m_LastLookDist(-1),
- m_TimeLastLook(-1),
- m_iAudibleList(0),
- m_TimeLastLookHighPriority( -1 ),
- m_TimeLastLookNPCs( -1 ),
- m_TimeLastLookMisc( -1 )
- {
- m_SeenArrays[0] = &m_SeenHighPriority;
- m_SeenArrays[1] = &m_SeenNPCs;
- m_SeenArrays[2] = &m_SeenMisc;
- m_iSensingFlags = SENSING_FLAGS_NONE;
- }
-
- float GetDistLook() const { return m_LookDist; }
- void SetDistLook( float flDistLook ) { m_LookDist = flDistLook; }
-
- void PerformSensing();
-
- void Listen( void );
- void Look( int iDistance );// basic sight function for npcs
-
- bool ShouldSeeEntity( CBaseEntity *pEntity ); // logical query
- bool CanSeeEntity( CBaseEntity *pSightEnt ); // more expensive cone & raycast test
-#ifdef PORTAL
- bool CanSeeEntityThroughPortal( const CProp_Portal *pPortal, CBaseEntity *pSightEnt ); // more expensive cone & raycast test
-#endif
-
- bool DidSeeEntity( CBaseEntity *pSightEnt ) const; // a less expensive query that looks at cached results from recent conditionsa gathering
-
- CBaseEntity * GetFirstSeenEntity( AISightIter_t *pIter, seentype_t iSeenType = SEEN_ALL ) const;
- CBaseEntity * GetNextSeenEntity( AISightIter_t *pIter ) const;
-
- CSound * GetFirstHeardSound( AISoundIter_t *pIter );
- CSound * GetNextHeardSound( AISoundIter_t *pIter );
- CSound * GetClosestSound( bool fScent = false, int validTypes = ALL_SOUNDS | ALL_SCENTS, bool bUsePriority = true );
-
- bool CanHearSound( CSound *pSound );
-
- //---------------------------------
-
- float GetTimeLastUpdate( CBaseEntity *pEntity );
-
- //---------------------------------
-
- void AddSensingFlags( int iFlags ) { m_iSensingFlags |= iFlags; }
- void RemoveSensingFlags( int iFlags ) { m_iSensingFlags &= ~iFlags; }
- bool HasSensingFlags( int iFlags ) { return (m_iSensingFlags & iFlags) == iFlags; }
-
- DECLARE_SIMPLE_DATADESC();
-
-private:
- int GetAudibleList() const { return m_iAudibleList; }
-
- bool WaitingUntilSeen( CBaseEntity *pSightEnt );
-
- void BeginGather();
- void NoteSeenEntity( CBaseEntity *pSightEnt );
- void EndGather( int nSeen, CUtlVector<EHANDLE> *pResult );
-
- bool Look( CBaseEntity *pSightEnt );
-#ifdef PORTAL
- bool LookThroughPortal( const CProp_Portal *pPortal, CBaseEntity *pSightEnt );
-#endif
-
- int LookForHighPriorityEntities( int iDistance );
- int LookForNPCs( int iDistance );
- int LookForObjects( int iDistance );
-
- bool SeeEntity( CBaseEntity *pEntity );
-
- float m_LookDist; // distance npc sees (Default 2048)
- float m_LastLookDist;
- float m_TimeLastLook;
-
- int m_iAudibleList; // first index of a linked list of sounds that the npc can hear.
-
- CUtlVector<EHANDLE> m_SeenHighPriority;
- CUtlVector<EHANDLE> m_SeenNPCs;
- CUtlVector<EHANDLE> m_SeenMisc;
-
- CUtlVector<EHANDLE> *m_SeenArrays[3];
-
- float m_TimeLastLookHighPriority;
- float m_TimeLastLookNPCs;
- float m_TimeLastLookMisc;
-
- int m_iSensingFlags;
-};
-
-//-----------------------------------------------------------------------------
-
-class CAI_SensedObjectsManager : public IEntityListener
-{
-public:
- void Init();
- void Term();
-
- CBaseEntity * GetFirst( int *pIter );
- CBaseEntity * GetNext( int *pIter );
-
- virtual void AddEntity( CBaseEntity *pEntity );
-
-private:
- virtual void OnEntitySpawned( CBaseEntity *pEntity );
- virtual void OnEntityDeleted( CBaseEntity *pEntity );
-
- CUtlVector<EHANDLE> m_SensedObjects;
-};
-
-extern CAI_SensedObjectsManager g_AI_SensedObjectsManager;
-
-//-----------------------------------------------------------------------------
-
-
-
-#endif // AI_SENSES_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef AI_SENSES_H +#define AI_SENSES_H + +#include "tier1/utlvector.h" +#include "tier1/utlmap.h" +#include "simtimer.h" +#include "ai_component.h" +#include "soundent.h" + +#if defined( _WIN32 ) +#pragma once +#endif + +class CBaseEntity; +class CSound; + +//------------------------------------- + +DECLARE_POINTER_HANDLE( AISightIter_t ); +DECLARE_POINTER_HANDLE( AISoundIter_t ); + +// GetFirstSeenEntity can take these as optional parameters to search for +// a specific type of entity. +enum seentype_t +{ + SEEN_ALL = -1, // Default + SEEN_HIGH_PRIORITY = 0, + SEEN_NPCS, + SEEN_MISC +}; + +#define SENSING_FLAGS_NONE 0x00000000 +#define SENSING_FLAGS_DONT_LOOK 0x00000001 // Effectively makes the NPC blind +#define SENSING_FLAGS_DONT_LISTEN 0x00000002 // Effectively makes the NPC deaf + +//----------------------------------------------------------------------------- +// class CAI_ScriptConditions +// +// Purpose: +//----------------------------------------------------------------------------- + +class CAI_Senses : public CAI_Component +{ +public: + CAI_Senses() + : m_LookDist(2048), + m_LastLookDist(-1), + m_TimeLastLook(-1), + m_iAudibleList(0), + m_TimeLastLookHighPriority( -1 ), + m_TimeLastLookNPCs( -1 ), + m_TimeLastLookMisc( -1 ) + { + m_SeenArrays[0] = &m_SeenHighPriority; + m_SeenArrays[1] = &m_SeenNPCs; + m_SeenArrays[2] = &m_SeenMisc; + m_iSensingFlags = SENSING_FLAGS_NONE; + } + + float GetDistLook() const { return m_LookDist; } + void SetDistLook( float flDistLook ) { m_LookDist = flDistLook; } + + void PerformSensing(); + + void Listen( void ); + void Look( int iDistance );// basic sight function for npcs + + bool ShouldSeeEntity( CBaseEntity *pEntity ); // logical query + bool CanSeeEntity( CBaseEntity *pSightEnt ); // more expensive cone & raycast test +#ifdef PORTAL + bool CanSeeEntityThroughPortal( const CProp_Portal *pPortal, CBaseEntity *pSightEnt ); // more expensive cone & raycast test +#endif + + bool DidSeeEntity( CBaseEntity *pSightEnt ) const; // a less expensive query that looks at cached results from recent conditionsa gathering + + CBaseEntity * GetFirstSeenEntity( AISightIter_t *pIter, seentype_t iSeenType = SEEN_ALL ) const; + CBaseEntity * GetNextSeenEntity( AISightIter_t *pIter ) const; + + CSound * GetFirstHeardSound( AISoundIter_t *pIter ); + CSound * GetNextHeardSound( AISoundIter_t *pIter ); + CSound * GetClosestSound( bool fScent = false, int validTypes = ALL_SOUNDS | ALL_SCENTS, bool bUsePriority = true ); + + bool CanHearSound( CSound *pSound ); + + //--------------------------------- + + float GetTimeLastUpdate( CBaseEntity *pEntity ); + + //--------------------------------- + + void AddSensingFlags( int iFlags ) { m_iSensingFlags |= iFlags; } + void RemoveSensingFlags( int iFlags ) { m_iSensingFlags &= ~iFlags; } + bool HasSensingFlags( int iFlags ) { return (m_iSensingFlags & iFlags) == iFlags; } + + DECLARE_SIMPLE_DATADESC(); + +private: + int GetAudibleList() const { return m_iAudibleList; } + + bool WaitingUntilSeen( CBaseEntity *pSightEnt ); + + void BeginGather(); + void NoteSeenEntity( CBaseEntity *pSightEnt ); + void EndGather( int nSeen, CUtlVector<EHANDLE> *pResult ); + + bool Look( CBaseEntity *pSightEnt ); +#ifdef PORTAL + bool LookThroughPortal( const CProp_Portal *pPortal, CBaseEntity *pSightEnt ); +#endif + + int LookForHighPriorityEntities( int iDistance ); + int LookForNPCs( int iDistance ); + int LookForObjects( int iDistance ); + + bool SeeEntity( CBaseEntity *pEntity ); + + float m_LookDist; // distance npc sees (Default 2048) + float m_LastLookDist; + float m_TimeLastLook; + + int m_iAudibleList; // first index of a linked list of sounds that the npc can hear. + + CUtlVector<EHANDLE> m_SeenHighPriority; + CUtlVector<EHANDLE> m_SeenNPCs; + CUtlVector<EHANDLE> m_SeenMisc; + + CUtlVector<EHANDLE> *m_SeenArrays[3]; + + float m_TimeLastLookHighPriority; + float m_TimeLastLookNPCs; + float m_TimeLastLookMisc; + + int m_iSensingFlags; +}; + +//----------------------------------------------------------------------------- + +class CAI_SensedObjectsManager : public IEntityListener +{ +public: + void Init(); + void Term(); + + CBaseEntity * GetFirst( int *pIter ); + CBaseEntity * GetNext( int *pIter ); + + virtual void AddEntity( CBaseEntity *pEntity ); + +private: + virtual void OnEntitySpawned( CBaseEntity *pEntity ); + virtual void OnEntityDeleted( CBaseEntity *pEntity ); + + CUtlVector<EHANDLE> m_SensedObjects; +}; + +extern CAI_SensedObjectsManager g_AI_SensedObjectsManager; + +//----------------------------------------------------------------------------- + + + +#endif // AI_SENSES_H |