diff options
Diffstat (limited to 'game/shared/cam_thirdperson.h')
| -rw-r--r-- | game/shared/cam_thirdperson.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/game/shared/cam_thirdperson.h b/game/shared/cam_thirdperson.h new file mode 100644 index 0000000..54dfeca --- /dev/null +++ b/game/shared/cam_thirdperson.h @@ -0,0 +1,108 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef CAM_THIRDPERSON_H +#define CAM_THIRDPERSON_H + +#if defined( _WIN32 ) +#pragma once +#endif + +#ifdef CLIENT_DLL + #include "c_baseplayer.h" +#else + #include "baseplayer.h" +#endif + +#define DIST_FORWARD 0 +#define DIST_RIGHT 1 +#define DIST_UP 2 + +//-------------------------------------------------- Constants + +#define CAM_MIN_DIST 30.0 +#define CAM_ANGLE_MOVE .5 +#define MAX_ANGLE_DIFF 10.0 +#define PITCH_MAX 90.0 +#define PITCH_MIN 0 +#define YAW_MAX 135.0 +#define YAW_MIN -135.0 +#define DIST 2 +#define CAM_HULL_OFFSET 14.0 // the size of the bounding hull used for collision checking + +#define CAMERA_UP_OFFSET 25.0f +#define CAMERA_OFFSET_LERP_TIME 0.5f +#define CAMERA_UP_OFFSET_LERP_TIME 0.25f + +class CThirdPersonManager +{ +public: + + CThirdPersonManager(); + void SetCameraOffsetAngles( const Vector& vecOffset ) { m_vecCameraOffset = vecOffset; } + const Vector& GetCameraOffsetAngles( void ) const { return m_vecCameraOffset; } + + void SetDesiredCameraOffset( const Vector& vecOffset ) { m_vecDesiredCameraOffset = vecOffset; } + const Vector& GetDesiredCameraOffset( void ) const { return m_vecDesiredCameraOffset; } + + Vector GetFinalCameraOffset( void ); + + void SetCameraOrigin( const Vector& vecOffset ) { m_vecCameraOrigin = vecOffset; } + const Vector& GetCameraOrigin( void ) const { return m_vecCameraOrigin; } + + void Update( void ); + + void PositionCamera( CBasePlayer *pPlayer, const QAngle& angles ); + + void UseCameraOffsets( bool bUse ) { m_bUseCameraOffsets = bUse; } + bool UsingCameraOffsets( void ) { return m_bUseCameraOffsets; } + + const QAngle& GetCameraViewAngles( void ) const { return m_ViewAngles; } + + Vector GetDistanceFraction( void ); + + bool WantToUseGameThirdPerson( void ); + + void SetOverridingThirdPerson( bool bOverride ) { m_bOverrideThirdPerson = bOverride; } + bool IsOverridingThirdPerson( void ) { return m_bOverrideThirdPerson; } + + void Init( void ); + + void SetForcedThirdPerson( bool bForced ) { m_bForced = bForced; } + bool GetForcedThirdPerson() const { return m_bForced; } + +private: + + // What is the current camera offset from the view origin? + Vector m_vecCameraOffset; + // Distances from the center + Vector m_vecDesiredCameraOffset; + + Vector m_vecCameraOrigin; + + bool m_bUseCameraOffsets; + + QAngle m_ViewAngles; + + float m_flFraction; + float m_flUpFraction; + + float m_flTargetFraction; + float m_flTargetUpFraction; + + bool m_bOverrideThirdPerson; + + bool m_bForced; + + float m_flUpOffset; + + float m_flLerpTime; + float m_flUpLerpTime; +}; + +extern CThirdPersonManager g_ThirdPersonManager; + +#endif // CAM_THIRDPERSON_H |