source-engine/game/client/hl1/c_hl1mp_player.h

132 lines
2.9 KiB
C
Raw Normal View History

2022-04-16 09:05:19 +00:00
//========= 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