From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/server/func_ladder_endpoint.cpp | 68 +++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 mp/src/game/server/func_ladder_endpoint.cpp (limited to 'mp/src/game/server/func_ladder_endpoint.cpp') diff --git a/mp/src/game/server/func_ladder_endpoint.cpp b/mp/src/game/server/func_ladder_endpoint.cpp new file mode 100644 index 00000000..1f2aff8d --- /dev/null +++ b/mp/src/game/server/func_ladder_endpoint.cpp @@ -0,0 +1,68 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// +#include "cbase.h" +#include "func_ladder.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Purpose: A transient entity used to construct a true CFuncLadder +// FIXME: THIS ENTITY IS OBSOLETE NOW, SHOULD BE REMOVED FROM HERE AND .FGD AT SOME POINT!!! +//----------------------------------------------------------------------------- +class CFuncLadderEndPoint : public CBaseEntity +{ +public: + DECLARE_CLASS( CFuncLadderEndPoint, CBaseEntity ); + + virtual void Activate(); + +private: + bool Validate(); +}; + +LINK_ENTITY_TO_CLASS( func_ladderendpoint, CFuncLadderEndPoint ); + +void CFuncLadderEndPoint::Activate() +{ + BaseClass::Activate(); + + if ( IsMarkedForDeletion() ) + return; + + Validate(); +} + +bool CFuncLadderEndPoint::Validate() +{ + // Find the the other end + Vector startPos = GetAbsOrigin(); + + CFuncLadderEndPoint *other = dynamic_cast< CFuncLadderEndPoint * >( GetNextTarget() ); + if ( !other ) + { + DevMsg( 1, "func_ladderendpoint(%s) without matching target\n", GetEntityName().ToCStr() ); + return false; + } + + Vector endPos = other->GetAbsOrigin(); + + CFuncLadder *ladder = ( CFuncLadder * )CreateEntityByName( "func_useableladder" ); + if ( ladder ) + { + ladder->SetEndPoints( startPos, endPos ); + ladder->SetAbsOrigin( GetAbsOrigin() ); + ladder->SetParent( GetParent() ); + ladder->SetName( GetEntityName() ); + ladder->Spawn(); + } + + // Delete both endpoints + UTIL_Remove( other ); + UTIL_Remove( this ); + + return true; +} -- cgit v1.2.3