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.
159 lines
4.7 KiB
159 lines
4.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#if defined( REPLAY_ENABLED ) |
|
|
|
#ifndef REPLAYCAMERA_H |
|
#define REPLAYCAMERA_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "replay/ireplaycamera.h" |
|
#include "GameEventListener.h" |
|
|
|
class C_ReplayCamera : public CGameEventListener, |
|
public IReplayCamera |
|
{ |
|
public: |
|
C_ReplayCamera(); |
|
virtual ~C_ReplayCamera(); |
|
|
|
void Init(); |
|
void Reset(); |
|
|
|
// |
|
// IReplayCamera: |
|
// |
|
virtual void ClearOverrideView(); |
|
|
|
void EnableInput( bool bEnable ); |
|
|
|
void OverrideView( const Vector *pOrigin, const QAngle *pAngles, float flFov ); |
|
void GetCachedView( Vector &origin, QAngle &angles, float &fov ); |
|
|
|
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 ); |
|
// See UTIL_PlayerByCommandArg for what all might go in here. |
|
void SpecPlayerByPredicate( const char *szPlayerSearch ); |
|
bool IsPVSLocked(); |
|
void SetAutoDirector( bool bActive ); |
|
|
|
int GetMode(); // returns current camera mode |
|
C_BaseEntity *GetPrimaryTarget(); // return primary target |
|
inline int GetPrimaryTargetIndex() { return m_iTarget1; } |
|
void SetPrimaryTarget( int nEntity); // set the primary obs target |
|
|
|
void CreateMove(CUserCmd *cmd); |
|
void FixupMovmentParents(); |
|
void PostEntityPacketReceived(); |
|
const char* GetTitleText() { return m_szTitleText; } |
|
int GetNumSpectators() { return m_nNumSpectators; } |
|
|
|
void SmoothFov( float flDelta ); |
|
|
|
float m_flRoamingAccel; |
|
float m_flRoamingSpeed; |
|
float m_flRoamingFov[2]; // FOV for roaming only - current and target - smoothing done by replay editor |
|
float m_flRoamingRotFilterFactor; |
|
float m_flRoamingShakeAmount; |
|
float m_flRoamingShakeSpeed; |
|
float m_flRoamingShakeDir; |
|
|
|
protected: |
|
void InitRoamingKeys(); |
|
bool ShouldUseDefaultRoamingSettings() const; |
|
|
|
void CalcChaseCamView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov, float flDelta ); |
|
void CalcFixedView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov, float flDelta ); |
|
void CalcInEyeCamView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov, float flDelta ); |
|
void CalcRoamingView(Vector& eyeOrigin, QAngle& eyeAngles, float& fov, float flDelta); |
|
|
|
void SmoothCameraAngle( QAngle& targetAngle ); |
|
void SetCameraAngle( QAngle& targetAngle ); |
|
void Accelerate( Vector& wishdir, float wishspeed, float accel, float flDelta ); |
|
|
|
bool ShouldOverrideView( Vector& origin, QAngle& angles, float& fov ); // Fills with override data if m_bOverrideView is set |
|
|
|
struct View_t |
|
{ |
|
Vector origin; |
|
QAngle angles; |
|
float fov; |
|
}; |
|
|
|
bool m_bInputEnabled; |
|
bool m_bOverrideView; |
|
View_t m_OverrideViewData; |
|
View_t m_CachedView; |
|
float m_flOldTime; // Time of last CalcView() (uses gpGlobals->realtime) |
|
int m_nCameraMode; // current camera mode |
|
Vector m_vCamOrigin; //current camera origin |
|
QAngle m_aCamAngle; //current camera angle |
|
QAngle m_aSmoothedRoamingAngles; |
|
int m_iTarget1; // first tracked target or 0 |
|
int m_iTarget2; // 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; |
|
|
|
enum Dir_t |
|
{ |
|
DIR_FWD, |
|
DIR_BACK, |
|
DIR_LEFT, |
|
DIR_RIGHT, |
|
|
|
DIR_UP, |
|
DIR_DOWN, |
|
|
|
NUM_DIRS |
|
}; |
|
ButtonCode_t m_aMovementButtons[NUM_DIRS]; |
|
|
|
float m_flNoiseSample; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
C_ReplayCamera *ReplayCamera(); |
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
#define FREE_CAM_ACCEL_MIN 1.1f |
|
#define FREE_CAM_ACCEL_MAX 10.0f |
|
#define FREE_CAM_SPEED_MIN 0.1f |
|
#define FREE_CAM_SPEED_MAX 20.0f |
|
#define FREE_CAM_FOV_MIN 10.0f |
|
#define FREE_CAM_FOV_MAX 130.0f |
|
#define FREE_CAM_ROT_FILTER_MIN 30.0f |
|
#define FREE_CAM_ROT_FILTER_MAX 5.0f |
|
#define FREE_CAM_SHAKE_SPEED_MIN 0.1f |
|
#define FREE_CAM_SHAKE_SPEED_MAX 15.0f |
|
#define FREE_CAM_SHAKE_AMOUNT_MIN 0.0f |
|
#define FREE_CAM_SHAKE_AMOUNT_MAX 35.0f |
|
#define FREE_CAM_SHAKE_DIR_MIN -1.0f |
|
#define FREE_CAM_SHAKE_DIR_MAX 1.0f |
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
#endif // REPLAYCAMERA_H |
|
|
|
#endif
|
|
|