Counter Strike : Global Offensive Source Code
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.
 
 
 
 
 
 

77 lines
1.9 KiB

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose: A game system for tracking and updating entity spot state
//
// $NoKeywords: $
//=============================================================================//
#ifndef CS_ENTITY_SPOTTING_H
#define CS_ENTITY_SPOTTING_H
#ifdef _WIN32
#pragma once
#endif
#include "igamesystem.h"
class CCSPlayer;
class CCSEntitySpotting : public CAutoGameSystemPerFrame
{
public:
enum SpottingRules_T
{
SPOT_RULE_ENEMY = ( 1<<0 ), // spotted when seen by an enemy
SPOT_RULE_CT = ( 1<<1 ), // spotted when seen by CT
SPOT_RULE_T = ( 1<<2 ), // spotted when seen by T
SPOT_RULE_ALWAYS_SEEN_BY_FRIEND = ( 1<<3 ), // always visible to friend
SPOT_RULE_ALWAYS_SEEN_BY_CT = ( 1<<4 ), // always visible to CT
SPOT_RULE_ALWAYS_SEEN_BY_T = ( 1<<5 ), // always visible to T
};
CCSEntitySpotting( const char * szName );
virtual ~CCSEntitySpotting( void ) {}
virtual bool Init( void );
virtual char const *Name() { return "CCSEntitySpotting"; }
virtual void FrameUpdatePostEntityThink( void );
void UpdateSpottedEntities( void );
protected:
float m_fLastUpdate;
};
extern CCSEntitySpotting * g_EntitySpotting;
//===========================================================
// - GatherNonPVSSpottedEntitiesFunctor -
//
// Given a player, generate a list of spotted entities that
// exist outside of that player's PVS.
// Query GetSpotted for result
//===========================================================
class GatherNonPVSSpottedEntitiesFunctor
{
public:
GatherNonPVSSpottedEntitiesFunctor( CCSPlayer * pPlayer );
bool operator()( CBaseEntity * pEntity );
const CBitVec<MAX_EDICTS> & GetSpotted( void )
{
return m_EntitySpotted;
}
private:
CCSPlayer *m_pPlayer;
int m_nSourceTeam;
CBitVec<MAX_EDICTS> m_EntitySpotted;
byte m_pSourcePVS[MAX_MAP_LEAFS/8];
bool m_bForceSpot;
};
#endif // ENTITY_RESOURCE_H