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.
132 lines
2.9 KiB
132 lines
2.9 KiB
3 years ago
|
//========= 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
|