You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.8 KiB
71 lines
1.8 KiB
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//=============================================================================//
|
|
// nav_entities.h
|
|
// Navigation entities
|
|
// Author: Michael S. Booth ([email protected]), January 2003
|
|
|
|
#ifndef NAV_ENTITIES_H
|
|
#define NAV_ENTITIES_H
|
|
|
|
//-----------------------------------------------------------------------------------------------------
|
|
/**
|
|
* An entity that can block/unblock nav areas. This is meant for semi-transient areas that block
|
|
* pathfinding but can be ignored for longer-term queries like computing L4D flow distances and
|
|
* escape routes.
|
|
*/
|
|
class CFuncNavBlocker : public CBaseEntity
|
|
{
|
|
DECLARE_DATADESC();
|
|
DECLARE_CLASS( CFuncNavBlocker, CBaseEntity );
|
|
|
|
public:
|
|
void Spawn();
|
|
virtual void UpdateOnRemove( void );
|
|
|
|
void InputBlockNav( inputdata_t &inputdata );
|
|
void InputUnblockNav( inputdata_t &inputdata );
|
|
|
|
inline bool IsBlockingNav( int teamNumber ) const
|
|
{
|
|
if ( teamNumber == TEAM_ANY )
|
|
{
|
|
bool isBlocked = false;
|
|
for ( int i=0; i<MAX_NAV_TEAMS; ++i )
|
|
{
|
|
isBlocked |= m_isBlockingNav[ i ];
|
|
}
|
|
|
|
return isBlocked;
|
|
}
|
|
|
|
teamNumber = teamNumber % MAX_NAV_TEAMS;
|
|
return m_isBlockingNav[ teamNumber ];
|
|
}
|
|
|
|
int DrawDebugTextOverlays( void );
|
|
|
|
bool operator()( CNavArea *area ); // functor that blocks areas in our extent
|
|
|
|
static bool CalculateBlocked( bool *pResultByTeam, const Vector &vecMins, const Vector &vecMaxs );
|
|
|
|
private:
|
|
|
|
void UpdateBlocked();
|
|
|
|
static CUtlLinkedList<CFuncNavBlocker *> gm_NavBlockers;
|
|
|
|
void BlockNav( void );
|
|
void UnblockNav( void );
|
|
bool m_isBlockingNav[MAX_NAV_TEAMS];
|
|
int m_blockedTeamNumber;
|
|
bool m_bDisabled;
|
|
Vector m_CachedMins, m_CachedMaxs;
|
|
|
|
};
|
|
|
|
#endif // NAV_ENTITIES_H
|