summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_playeranimstate.h
blob: d5af0c104237d081386af28b043df38791221d00 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================
#ifndef TF_PLAYERANIMSTATE_H
#define TF_PLAYERANIMSTATE_H
#ifdef _WIN32
#pragma once
#endif

#include "convar.h"
#include "../Multiplayer/multiplayer_animstate.h"

#if defined( CLIENT_DLL )
class C_TFPlayer;
#define CTFPlayer C_TFPlayer
#else
class CTFPlayer;
#endif

// ------------------------------------------------------------------------------------------------ //
// CPlayerAnimState declaration.
// ------------------------------------------------------------------------------------------------ //
class CTFPlayerAnimState : public CMultiPlayerAnimState
{
public:
	
	DECLARE_CLASS( CTFPlayerAnimState, CMultiPlayerAnimState );

	CTFPlayerAnimState();
	CTFPlayerAnimState( CBasePlayer *pPlayer, MultiPlayerMovementData_t &movementData );
	~CTFPlayerAnimState();

	void InitTF( CTFPlayer *pPlayer );
	CTFPlayer *GetTFPlayer( void )							{ return m_pTFPlayer; }

	virtual void ClearAnimationState();
	virtual Activity TranslateActivity( Activity actDesired );
	Activity ActivityOverride( Activity baseAct, bool *pRequired );
	virtual void Update( float eyeYaw, float eyePitch );

	void	DoAnimationEvent( PlayerAnimEvent_t event, int nData = 0 );
	virtual void CheckStunAnimation();
	virtual Activity CalcMainActivity();
	virtual void ComputePoseParam_AimYaw( CStudioHdr *pStudioHdr );

	void CheckPasstimeThrowAnimation();

	virtual float GetCurrentMaxGroundSpeed();
	virtual float GetGesturePlaybackRate( void );

	bool	HandleMoving( Activity &idealActivity );
	bool	HandleJumping( Activity &idealActivity );
	bool	HandleDucking( Activity &idealActivity );
	bool	HandleSwimming( Activity &idealActivity );

	virtual bool ShouldUpdateAnimState();

	virtual void GetOuterAbsVelocity( Vector& vel );

	bool	IsItemTestingBot( void );

	virtual void RestartGesture( int iGestureSlot, Activity iGestureActivity, bool bAutoKill = true );

	void	SetRenderangles( const QAngle& angles ) { m_angRender = angles; }

	void	Vehicle_LeanAccel( float flInAccel );
private:
	void Taunt_ComputePoseParam_MoveX( CStudioHdr *pStudioHdr );
	void Taunt_ComputePoseParam_MoveY( CStudioHdr *pStudioHdr );
	void Vehicle_ComputePoseParam_MoveYaw( CStudioHdr *pStudioHdr );
	void Vehicle_ComputePoseParam_AccelLean( CStudioHdr *pStudioHdr );
	
	CTFPlayer   *m_pTFPlayer;
	bool		m_bInAirWalk;
	float		m_flHoldDeployedPoseUntilTime;
	float		m_flTauntMoveX;
	float		m_flTauntMoveY;
	float		m_flVehicleLeanVel;
	float		m_flVehicleLeanPos;
	Vector		m_vecSmoothedUp;
};

CTFPlayerAnimState *CreateTFPlayerAnimState( CTFPlayer *pPlayer );

#endif // TF_PLAYERANIMSTATE_H