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;
|
|
}
|