aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/entityblocker.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/entityblocker.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/entityblocker.cpp')
-rw-r--r--mp/src/game/server/entityblocker.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/mp/src/game/server/entityblocker.cpp b/mp/src/game/server/entityblocker.cpp
new file mode 100644
index 00000000..7380a2e0
--- /dev/null
+++ b/mp/src/game/server/entityblocker.cpp
@@ -0,0 +1,76 @@
+//========= 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 );
+ }
+}
+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 ); \ No newline at end of file