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
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef HLTVCAMERA_H
#define HLTVCAMERA_H
#ifdef _WIN32
#pragma once
#endif
#include "GameEventListener.h"
class C_HLTVCamera : CGameEventListener
{
public:
C_HLTVCamera();
virtual ~C_HLTVCamera();
void Init();
void Reset();
void CalcView(Vector& origin, QAngle& angles, float& fov);
void FireGameEvent( IGameEvent *event );
void SetMode(int iMode);
void SetChaseCamParams( float flOffset, float flDistance, float flTheta, float flPhi );
void SpecNextPlayer( bool bInverse );
void SpecNamedPlayer( const char *szPlayerName );
void ToggleChaseAsFirstPerson();
bool IsPVSLocked();
void SetAutoDirector( bool bActive );
int GetMode(); // returns current camera mode
C_BaseEntity *GetPrimaryTarget(); // return primary target
void SetPrimaryTarget( int nEntity); // set the primary obs target
C_BaseEntity *GetCameraMan(); // return camera entity if any
void CreateMove(CUserCmd *cmd);
void FixupMovmentParents();
void PostEntityPacketReceived();
const char* GetTitleText() { return m_szTitleText; }
int GetNumSpectators() { return m_nNumSpectators; }
protected:
void CalcChaseCamView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov );
void CalcFixedView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov );
void CalcInEyeCamView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov );
void CalcRoamingView(Vector& eyeOrigin, QAngle& eyeAngles, float& fov);
void SmoothCameraAngle( QAngle& targetAngle );
void SetCameraAngle( QAngle& targetAngle );
void Accelerate( Vector& wishdir, float wishspeed, float accel );
int m_nCameraMode; // current camera mode
int m_iCameraMan; // camera man entindex or 0
Vector m_vCamOrigin; //current camera origin
QAngle m_aCamAngle; //current camera angle
int m_iTraget1; // first tracked target or 0
int m_iTraget2; // second tracked target or 0
float m_flFOV; // current FOV
float m_flOffset; // z-offset from target origin
float m_flDistance; // distance to traget origin+offset
float m_flLastDistance; // too smooth distance
float m_flTheta; // view angle horizontal
float m_flPhi; // view angle vertical
float m_flInertia; // camera inertia 0..100
float m_flLastAngleUpdateTime;
bool m_bEntityPacketReceived; // true after a new packet was received
int m_nNumSpectators;
char m_szTitleText[64];
CUserCmd m_LastCmd;
Vector m_vecVelocity;
};
extern C_HLTVCamera *HLTVCamera(); // get Singleton
#endif // HLTVCAMERA_H
|