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.
74 lines
2.3 KiB
74 lines
2.3 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#ifndef FUNC_RESPAWNROOM_H |
|
#define FUNC_RESPAWNROOM_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "triggers.h" |
|
|
|
class CFuncRespawnRoomVisualizer; |
|
|
|
// This class is to get around the fact that DEFINE_FUNCTION doesn't like multiple inheritance |
|
class CFuncRespawnRoomShim : public CBaseTrigger |
|
{ |
|
virtual void RespawnRoomTouch( CBaseEntity *pOther ) = 0; |
|
public: |
|
void Touch( CBaseEntity *pOther ) { return RespawnRoomTouch( pOther ) ; } |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Defines an area considered inside a respawn room |
|
//----------------------------------------------------------------------------- |
|
DECLARE_AUTO_LIST( IFuncRespawnRoomAutoList ); |
|
|
|
|
|
class CFuncRespawnRoom : public CFuncRespawnRoomShim, public IFuncRespawnRoomAutoList |
|
{ |
|
DECLARE_CLASS( CFuncRespawnRoom, CFuncRespawnRoomShim ); |
|
|
|
public: |
|
|
|
CFuncRespawnRoom(); |
|
|
|
DECLARE_DATADESC(); |
|
DECLARE_SERVERCLASS(); |
|
|
|
virtual void Spawn( void ); |
|
virtual void Activate( void ); |
|
virtual void ChangeTeam( int iTeamNum ) OVERRIDE; |
|
|
|
virtual void RespawnRoomTouch( CBaseEntity *pOther ) OVERRIDE; |
|
virtual void StartTouch(CBaseEntity *pOther) OVERRIDE; |
|
virtual void EndTouch(CBaseEntity *pOther) OVERRIDE; |
|
|
|
// Inputs |
|
void InputSetActive( inputdata_t &inputdata ); |
|
void InputSetInactive( inputdata_t &inputdata ); |
|
void InputToggleActive( inputdata_t &inputdata ); |
|
void InputRoundActivate( inputdata_t &inputdata ); |
|
|
|
void SetActive( bool bActive ); |
|
bool GetActive() const; |
|
|
|
void AddVisualizer( CFuncRespawnRoomVisualizer *pViz ); |
|
|
|
private: |
|
bool m_bActive; |
|
int m_iOriginalTeam; |
|
|
|
CUtlVector< CHandle<CFuncRespawnRoomVisualizer> > m_hVisualizers; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Is a given point contained within a respawn room? |
|
//----------------------------------------------------------------------------- |
|
bool PointInRespawnRoom( const CBaseEntity *pEntity, const Vector &vecOrigin, bool bTouching_SameTeamOnly = false ); |
|
|
|
bool PointsCrossRespawnRoomVisualizer( const Vector& vecStart, const Vector &vecEnd, int nTeamToIgnore = TEAM_UNASSIGNED ); |
|
#endif // FUNC_RESPAWNROOM_H
|
|
|