mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-29 01:23:04 +00:00
174 lines
4.5 KiB
C++
174 lines
4.5 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//=============================================================================//
|
|
#ifndef HL2MP_PLAYER_H
|
|
#define HL2MP_PLAYER_H
|
|
#pragma once
|
|
|
|
class C_HL2MP_Player;
|
|
#include "c_basehlplayer.h"
|
|
#include "hl2mp_player_shared.h"
|
|
#include "beamdraw.h"
|
|
|
|
//=============================================================================
|
|
// >> HL2MP_Player
|
|
//=============================================================================
|
|
class C_HL2MP_Player : public C_BaseHLPlayer
|
|
{
|
|
public:
|
|
DECLARE_CLASS( C_HL2MP_Player, C_BaseHLPlayer );
|
|
|
|
DECLARE_CLIENTCLASS();
|
|
DECLARE_PREDICTABLE();
|
|
DECLARE_INTERPOLATION();
|
|
|
|
|
|
C_HL2MP_Player();
|
|
~C_HL2MP_Player( void );
|
|
|
|
void ClientThink( void );
|
|
|
|
static C_HL2MP_Player* GetLocalHL2MPPlayer();
|
|
|
|
virtual int DrawModel( int flags );
|
|
virtual void AddEntity( void );
|
|
|
|
QAngle GetAnimEyeAngles( void ) { return m_angEyeAngles; }
|
|
Vector GetAttackSpread( CBaseCombatWeapon *pWeapon, CBaseEntity *pTarget = NULL );
|
|
|
|
|
|
// Should this object cast shadows?
|
|
virtual ShadowType_t ShadowCastType( void );
|
|
virtual C_BaseAnimating *BecomeRagdollOnClient();
|
|
virtual const QAngle& GetRenderAngles();
|
|
virtual bool ShouldDraw( void );
|
|
virtual void OnDataChanged( DataUpdateType_t type );
|
|
virtual float GetFOV( void );
|
|
virtual CStudioHdr *OnNewModel( void );
|
|
virtual void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator );
|
|
virtual void ItemPreFrame( void );
|
|
virtual void ItemPostFrame( void );
|
|
virtual float GetMinFOV() const { return 5.0f; }
|
|
virtual Vector GetAutoaimVector( float flDelta );
|
|
virtual void NotifyShouldTransmit( ShouldTransmitState_t state );
|
|
virtual void CreateLightEffects( void ) {}
|
|
virtual bool ShouldReceiveProjectedTextures( int flags );
|
|
virtual void PostDataUpdate( DataUpdateType_t updateType );
|
|
virtual void PlayStepSound( Vector &vecOrigin, surfacedata_t *psurface, float fvol, bool force );
|
|
virtual void PreThink( void );
|
|
virtual void DoImpactEffect( trace_t &tr, int nDamageType );
|
|
IRagdoll* GetRepresentativeRagdoll() const;
|
|
virtual void CalcView( Vector &eyeOrigin, QAngle &eyeAngles, float &zNear, float &zFar, float &fov );
|
|
virtual const QAngle& EyeAngles( void );
|
|
|
|
|
|
bool CanSprint( void );
|
|
void StartSprinting( void );
|
|
void StopSprinting( void );
|
|
void HandleSpeedChanges( void );
|
|
void UpdateLookAt( void );
|
|
void Initialize( void );
|
|
int GetIDTarget() const;
|
|
void UpdateIDTarget( void );
|
|
void PrecacheFootStepSounds( void );
|
|
const char *GetPlayerModelSoundPrefix( void );
|
|
|
|
HL2MPPlayerState State_Get() const;
|
|
|
|
// Walking
|
|
void StartWalking( void );
|
|
void StopWalking( void );
|
|
bool IsWalking( void ) { return m_fIsWalking; }
|
|
|
|
virtual void PostThink( void );
|
|
|
|
private:
|
|
|
|
C_HL2MP_Player( const C_HL2MP_Player & );
|
|
|
|
CPlayerAnimState m_PlayerAnimState;
|
|
|
|
QAngle m_angEyeAngles;
|
|
|
|
CInterpolatedVar< QAngle > m_iv_angEyeAngles;
|
|
|
|
EHANDLE m_hRagdoll;
|
|
|
|
int m_headYawPoseParam;
|
|
int m_headPitchPoseParam;
|
|
float m_headYawMin;
|
|
float m_headYawMax;
|
|
float m_headPitchMin;
|
|
float m_headPitchMax;
|
|
|
|
bool m_isInit;
|
|
Vector m_vLookAtTarget;
|
|
|
|
float m_flLastBodyYaw;
|
|
float m_flCurrentHeadYaw;
|
|
float m_flCurrentHeadPitch;
|
|
|
|
int m_iIDEntIndex;
|
|
|
|
CountdownTimer m_blinkTimer;
|
|
|
|
int m_iSpawnInterpCounter;
|
|
int m_iSpawnInterpCounterCache;
|
|
|
|
int m_iPlayerSoundType;
|
|
|
|
void ReleaseFlashlight( void );
|
|
Beam_t *m_pFlashlightBeam;
|
|
|
|
CNetworkVar( HL2MPPlayerState, m_iPlayerState );
|
|
|
|
bool m_fIsWalking;
|
|
};
|
|
|
|
inline C_HL2MP_Player *ToHL2MPPlayer( CBaseEntity *pEntity )
|
|
{
|
|
if ( !pEntity || !pEntity->IsPlayer() )
|
|
return NULL;
|
|
|
|
return dynamic_cast<C_HL2MP_Player*>( pEntity );
|
|
}
|
|
|
|
|
|
class C_HL2MPRagdoll : public C_BaseAnimatingOverlay
|
|
{
|
|
public:
|
|
DECLARE_CLASS( C_HL2MPRagdoll, C_BaseAnimatingOverlay );
|
|
DECLARE_CLIENTCLASS();
|
|
|
|
C_HL2MPRagdoll();
|
|
~C_HL2MPRagdoll();
|
|
|
|
virtual void OnDataChanged( DataUpdateType_t type );
|
|
|
|
int GetPlayerEntIndex() const;
|
|
IRagdoll* GetIRagdoll() const;
|
|
|
|
void ImpactTrace( trace_t *pTrace, int iDamageType, const char *pCustomImpactName );
|
|
void UpdateOnRemove( void );
|
|
virtual void SetupWeights( const matrix3x4_t *pBoneToWorld, int nFlexWeightCount, float *pFlexWeights, float *pFlexDelayedWeights );
|
|
|
|
private:
|
|
|
|
C_HL2MPRagdoll( const C_HL2MPRagdoll & ) {}
|
|
|
|
void Interp_Copy( C_BaseAnimatingOverlay *pDestinationEntity );
|
|
void CreateHL2MPRagdoll( void );
|
|
|
|
private:
|
|
|
|
EHANDLE m_hPlayer;
|
|
CNetworkVector( m_vecRagdollVelocity );
|
|
CNetworkVector( m_vecRagdollOrigin );
|
|
};
|
|
|
|
#endif //HL2MP_PLAYER_H
|