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.
108 lines
2.6 KiB
108 lines
2.6 KiB
//========= 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() = default; |
|
void SetCameraOffsetAngles( Vector vecOffset ) { m_vecCameraOffset = vecOffset; } |
|
Vector GetCameraOffsetAngles( void ) { return m_vecCameraOffset; } |
|
|
|
void SetDesiredCameraOffset( Vector vecOffset ) { m_vecDesiredCameraOffset = vecOffset; } |
|
Vector GetDesiredCameraOffset( void ); |
|
|
|
Vector GetFinalCameraOffset( void ); |
|
|
|
void SetCameraOrigin( Vector vecOffset ) { m_vecCameraOrigin = vecOffset; } |
|
Vector GetCameraOrigin( void ) { return m_vecCameraOrigin; } |
|
|
|
void Update( void ); |
|
|
|
void PositionCamera( CBasePlayer *pPlayer, QAngle angles ); |
|
|
|
void UseCameraOffsets( bool bUse ) { m_bUseCameraOffsets = bUse; } |
|
bool UsingCameraOffsets( void ) { return m_bUseCameraOffsets; } |
|
|
|
QAngle GetCameraViewAngles( void ) { 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
|
|
|