You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
//========= 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; |
|
}
|
|
|