diff options
Diffstat (limited to 'game/client/hl1/c_hl1mp_player.h')
| -rw-r--r-- | game/client/hl1/c_hl1mp_player.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/game/client/hl1/c_hl1mp_player.h b/game/client/hl1/c_hl1mp_player.h new file mode 100644 index 0000000..1d47850 --- /dev/null +++ b/game/client/hl1/c_hl1mp_player.h @@ -0,0 +1,131 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +#ifndef HL1MP_PLAYER_H +#define HL1MP_PLAYER_H +#pragma once + +#include "cbase.h" +#include "hl1_c_player.h" +#include "hl1_player_shared.h" + + +class C_HL1MP_Player : public C_HL1_Player +{ +public: + DECLARE_CLASS( C_HL1MP_Player, C_HL1_Player ); + DECLARE_CLIENTCLASS(); + DECLARE_PREDICTABLE(); + DECLARE_INTERPOLATION(); + + C_HL1MP_Player( void ); + ~C_HL1MP_Player(); + + virtual const QAngle& GetRenderAngles(); + virtual void UpdateClientSideAnimation(); + virtual void ProcessMuzzleFlashEvent(); + + void DoAnimationEvent( PlayerAnimEvent_t event, int nData = 0 ); + + virtual bool ShouldPredict( void ); + virtual void CalcView( Vector &eyeOrigin, QAngle &eyeAngles, float &zNear, float &zFar, float &fov ); + IRagdoll* GetRepresentativeRagdoll() const; + + virtual void Spawn( void ); + virtual void AddEntity( void ); + virtual bool ShouldDraw( void ); + virtual void OnDataChanged( DataUpdateType_t type ); + virtual void PostDataUpdate( DataUpdateType_t updateType ); + virtual void ClientThink( void ); + virtual C_BaseAnimating *BecomeRagdollOnClient(); + //QAngle GetAnimEyeAngles( void ) { return m_angEyeAngles; } + const QAngle& EyeAngles( void ) + { + if ( IsLocalPlayer() ) + { + return BaseClass::EyeAngles(); + } + else + { + return m_angEyeAngles; + } + } + + virtual ShadowType_t ShadowCastType() + { + if ( !IsVisible() ) + return SHADOWS_NONE; + + return SHADOWS_RENDER_TO_TEXTURE_DYNAMIC; + } + + void PreThink( void ); + + int m_iRealSequence; + +private: + C_HL1MP_Player( const C_HL1MP_Player & ); + + EHANDLE m_hRagdoll; + + QAngle m_angEyeAngles; + + CInterpolatedVar< QAngle > m_iv_angEyeAngles; + + IHL1MPPlayerAnimState* m_PlayerAnimState; + + int m_iSpawnInterpCounter; + int m_iSpawnInterpCounterCache; + + float m_fLastPredFreeze; +}; + + +class C_HL1MPRagdoll : public C_BaseAnimatingOverlay +{ +public: + DECLARE_CLASS( C_HL1MPRagdoll, C_BaseAnimatingOverlay ); + DECLARE_CLIENTCLASS(); + + C_HL1MPRagdoll(); + ~C_HL1MPRagdoll(); + + 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_HL1MPRagdoll( const C_HL1MPRagdoll & ) {} + + void Interp_Copy( C_BaseAnimatingOverlay *pSourceEntity ); + void CreateHL1MPRagdoll( void ); + +private: + + EHANDLE m_hPlayer; + CNetworkVector( m_vecRagdollVelocity ); + CNetworkVector( m_vecRagdollOrigin ); +}; + + +inline C_HL1MP_Player *ToHL1MPPlayer( CBaseEntity *pEntity ) +{ + if ( !pEntity || !pEntity->IsPlayer() ) + return NULL; + + return dynamic_cast<C_HL1MP_Player*>( pEntity ); +} + + + +#endif |