mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 20:16:10 +08:00
First version of the SOurce SDK 2013
This commit is contained in:
116
game/shared/func_ladder.h
Normal file
116
game/shared/func_ladder.h
Normal file
@ -0,0 +1,116 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef FUNC_LADDER_H
|
||||
#define FUNC_LADDER_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
#define CFuncLadder C_FuncLadder
|
||||
#define CInfoLadderDismount C_InfoLadderDismount
|
||||
#endif
|
||||
|
||||
class CInfoLadderDismount : public CBaseEntity
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CInfoLadderDismount, CBaseEntity );
|
||||
DECLARE_NETWORKCLASS();
|
||||
|
||||
virtual void DrawDebugGeometryOverlays();
|
||||
};
|
||||
|
||||
typedef CHandle< CInfoLadderDismount > CInfoLadderDismountHandle;
|
||||
|
||||
// Spawnflags
|
||||
#define SF_LADDER_DONTGETON 1 // Set for ladders that are acting as automount points, but not really ladders
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: A player-climbable ladder
|
||||
//-----------------------------------------------------------------------------
|
||||
class CFuncLadder : public CBaseEntity
|
||||
{
|
||||
public:
|
||||
|
||||
DECLARE_CLASS( CFuncLadder, CBaseEntity );
|
||||
DECLARE_NETWORKCLASS();
|
||||
DECLARE_DATADESC();
|
||||
|
||||
CFuncLadder();
|
||||
~CFuncLadder();
|
||||
|
||||
virtual void Spawn();
|
||||
|
||||
virtual void DrawDebugGeometryOverlays(void);
|
||||
|
||||
int GetDismountCount() const;
|
||||
CInfoLadderDismount *GetDismount( int index );
|
||||
|
||||
void GetTopPosition( Vector& org );
|
||||
void GetBottomPosition( Vector& org );
|
||||
void ComputeLadderDir( Vector& bottomToTopVec );
|
||||
|
||||
void SetEndPoints( const Vector& p1, const Vector& p2 );
|
||||
|
||||
void InputEnable( inputdata_t &inputdata );
|
||||
void InputDisable( inputdata_t &inputdata );
|
||||
|
||||
bool IsEnabled() const;
|
||||
|
||||
void PlayerGotOn( CBasePlayer *pPlayer );
|
||||
void PlayerGotOff( CBasePlayer *pPlayer );
|
||||
|
||||
virtual void Activate();
|
||||
|
||||
bool DontGetOnLadder( void ) const;
|
||||
|
||||
static int GetLadderCount();
|
||||
static CFuncLadder *GetLadder( int index );
|
||||
static CUtlVector< CFuncLadder * > s_Ladders;
|
||||
public:
|
||||
|
||||
void FindNearbyDismountPoints( const Vector& origin, float radius, CUtlVector< CInfoLadderDismountHandle >& list );
|
||||
const char *GetSurfacePropName();
|
||||
|
||||
private:
|
||||
|
||||
|
||||
void SearchForDismountPoints();
|
||||
|
||||
// Movement vector from "bottom" to "top" of ladder
|
||||
CNetworkVector( m_vecLadderDir );
|
||||
|
||||
// Dismount points near top/bottom of ladder, precomputed
|
||||
CUtlVector< CInfoLadderDismountHandle > m_Dismounts;
|
||||
|
||||
// Endpoints for checking for mount/dismount
|
||||
CNetworkVector( m_vecPlayerMountPositionTop );
|
||||
CNetworkVector( m_vecPlayerMountPositionBottom );
|
||||
|
||||
bool m_bDisabled;
|
||||
CNetworkVar( bool, m_bFakeLadder );
|
||||
|
||||
#if defined( GAME_DLL )
|
||||
string_t m_surfacePropName;
|
||||
//-----------------------------------------------------
|
||||
// Outputs
|
||||
//-----------------------------------------------------
|
||||
COutputEvent m_OnPlayerGotOnLadder;
|
||||
COutputEvent m_OnPlayerGotOffLadder;
|
||||
|
||||
virtual int UpdateTransmitState();
|
||||
#endif
|
||||
};
|
||||
|
||||
inline bool CFuncLadder::IsEnabled() const
|
||||
{
|
||||
return !m_bDisabled;
|
||||
}
|
||||
|
||||
const char *FuncLadder_GetSurfaceprops(CBaseEntity *pLadderEntity);
|
||||
|
||||
#endif // FUNC_LADDER_H
|
Reference in New Issue
Block a user