Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= 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
|