77 lines
2.7 KiB
C++
77 lines
2.7 KiB
C++
|
//========= Copyright <20> 1996-2005, 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, VEC_HULL_MAX, MASK_SOLID, pPlayer, COLLISION_GROUP_NONE, &tr );
|
|||
|
if ( !tr.allsolid && !tr.startsolid )
|
|||
|
{
|
|||
|
CEntityBlocker::Create( tr.endpos, VEC_HULL_MIN, VEC_HULL_MAX, NULL, true );
|
|||
|
NDebugOverlay::Box( tr.endpos, VEC_HULL_MIN, VEC_HULL_MAX, 0, 255, 0, 64, 1000.0 );
|
|||
|
}
|
|||
|
}
|
|||
|
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 );
|