diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/shared/cam_thirdperson.h | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/shared/cam_thirdperson.h')
| -rw-r--r-- | mp/src/game/shared/cam_thirdperson.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/mp/src/game/shared/cam_thirdperson.h b/mp/src/game/shared/cam_thirdperson.h new file mode 100644 index 00000000..550cbb82 --- /dev/null +++ b/mp/src/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( 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
|