2013-12-03 07:31:46 +04:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
# include "cbase.h"
# include "entityblocker.h"
// memdbgon must be the last include file in a .cpp file!!!
# include "tier0/memdbgon.h"
LINK_ENTITY_TO_CLASS ( entity_blocker , CEntityBlocker ) ;
//-----------------------------------------------------------------------------
// Purpose:
// Input : &origin -
// &mins -
// &maxs -
// NULL -
// Output : CEntityBlocker
//-----------------------------------------------------------------------------
CEntityBlocker * CEntityBlocker : : Create ( const Vector & origin , const Vector & mins , const Vector & maxs , CBaseEntity * pOwner , bool bBlockPhysics )
{
CEntityBlocker * pBlocker = ( CEntityBlocker * ) CBaseEntity : : Create ( " entity_blocker " , origin , vec3_angle , pOwner ) ;
if ( pBlocker ! = NULL )
{
pBlocker - > SetSize ( mins , maxs ) ;
if ( bBlockPhysics )
{
pBlocker - > VPhysicsInitStatic ( ) ;
}
}
return pBlocker ;
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CEntityBlocker : : Spawn ( void )
{
SetSolid ( SOLID_BBOX ) ;
AddSolidFlags ( FSOLID_CUSTOMRAYTEST ) ;
}
//-----------------------------------------------------------------------------
// Purpose: Entity blockers don't block tracelines so they don't screw up weapon fire, etc
//-----------------------------------------------------------------------------
bool CEntityBlocker : : TestCollision ( const Ray_t & ray , unsigned int mask , trace_t & trace )
{
return false ;
}
//------------------------------------------------------------------------------
// Purpose :
// Input :
// Output :
//------------------------------------------------------------------------------
void CC_Test_Entity_Blocker ( void )
{
CBasePlayer * pPlayer = UTIL_GetCommandClient ( ) ;
Vector vecForward ;
pPlayer - > GetVectors ( & vecForward , NULL , NULL ) ;
trace_t tr ;
Vector vecOrigin = pPlayer - > GetAbsOrigin ( ) + ( vecForward * 256 ) ;
UTIL_TraceHull ( vecOrigin + Vector ( 0 , 0 , 256 ) , vecOrigin - Vector ( 0 , 0 , 256 ) , VEC_HULL_MIN_SCALED ( pPlayer ) , VEC_HULL_MAX_SCALED ( pPlayer ) , MASK_SOLID , pPlayer , COLLISION_GROUP_NONE , & tr ) ;
if ( ! tr . allsolid & & ! tr . startsolid )
{
CEntityBlocker : : Create ( tr . endpos , VEC_HULL_MIN_SCALED ( pPlayer ) , VEC_HULL_MAX_SCALED ( pPlayer ) , NULL , true ) ;
NDebugOverlay : : Box ( tr . endpos , VEC_HULL_MIN_SCALED ( pPlayer ) , VEC_HULL_MAX_SCALED ( pPlayer ) , 0 , 255 , 0 , 64 , 1000.0 ) ;
}
}
2013-06-27 02:22:04 +04:00
static ConCommand test_entity_blocker ( " test_entity_blocker " , CC_Test_Entity_Blocker , " Test command that drops an entity blocker out in front of the player. " , FCVAR_CHEAT ) ;