//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #include "cbase.h" #include "func_passtime_no_ball_zone.h" #include "passtime_convars.h" #include "tf_player.h" //----------------------------------------------------------------------------- BEGIN_DATADESC( CFuncPasstimeNoBallZone ) END_DATADESC() //----------------------------------------------------------------------------- LINK_ENTITY_TO_CLASS( func_passtime_no_ball_zone, CFuncPasstimeNoBallZone ) //----------------------------------------------------------------------------- IMPLEMENT_AUTO_LIST( IFuncPasstimeNoBallZoneAutoList ); //----------------------------------------------------------------------------- void CFuncPasstimeNoBallZone::Spawn() { AddSpawnFlags( SF_TRIGGER_ALLOW_CLIENTS | SF_TRIGGER_ALLOW_PHYSICS ); BaseClass::Spawn(); InitTrigger(); SetNextThink( TICK_NEVER_THINK ); SetThink( NULL ); } //----------------------------------------------------------------------------- // Purpose: Is a given point contained within a no ball zone? //----------------------------------------------------------------------------- bool EntityIsInNoBallZone( CBaseEntity *pTarget ) { const auto &allNoBallZones = IFuncPasstimeNoBallZoneAutoList::AutoList(); for ( int i = 0; i < allNoBallZones.Count(); ++i ) { CFuncPasstimeNoBallZone *pNoBallZone = static_cast< CFuncPasstimeNoBallZone* >( allNoBallZones[i] ); if ( pTarget && pNoBallZone->IsTouching(pTarget) ) { return true; } } return false; }