csgo-2018-source/game/shared/weapon_ifmsteadycam.h
2021-07-24 21:11:47 -07:00

106 lines
2.4 KiB
C++

//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose:
//
//===========================================================================//
#ifndef WEAPON_IFMSTEADYCAM_H
#define WEAPON_IFMSTEADYCAM_H
#ifdef _WIN32
#pragma once
#endif
#include "weapon_ifmbasecamera.h"
#if defined( CLIENT_DLL )
#define CWeaponIFMSteadyCam C_WeaponIFMSteadyCam
#endif
class CWeaponIFMSteadyCam : public CWeaponIFMBaseCamera
{
public:
DECLARE_CLASS( CWeaponIFMSteadyCam, CWeaponIFMBaseCamera );
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
#ifdef GAME_DLL
DECLARE_DATADESC();
#endif
public:
// Shared code
CWeaponIFMSteadyCam();
virtual void ItemPostFrame();
private:
#ifdef CLIENT_DLL
public:
// Client code
virtual void CreateMove( float flInputSampleTime, CUserCmd *pCmd, const QAngle &vecOldViewAngles );
virtual void DrawCrosshair( void );
virtual void GetToolRecordingState( KeyValues *msg );
private:
// Purpose: Draw the weapon's crosshair
void DrawArmLength( int x, int y, int w, int h, Color clr );
void DrawFOV( int x, int y, int w, int h, Color clrEdges, Color clrTriangle );
// Transmits the lock target
void TransmitLockTarget();
// Updates the relative orientation of the camera
void UpdateRelativeOrientation();
void UpdateLockedRelativeOrientation();
void UpdateDirectRelativeOrientation();
// Computes a matrix given a forward direction
void MatrixFromForwardDirection( const Vector &vecForward, matrix3x4_t &mat );
// Targets the camera to always look at a point
void LockCamera();
// Toggles to springy camera
void ToggleSpringCamera();
void ToggleDirectMode();
// Compute the location of the camera for rendering
virtual void ComputeAbsCameraTransform( Vector &origin, QAngle &angles );
// Updates the relative orientation of the camera, spring mode
void ComputeMouseRay( const VMatrix &steadyCamToPlayer, Vector &vecForward );
// Updates the 2d spring
void ComputeViewOffset();
bool m_bIsLocked;
bool m_bInDirectMode;
bool m_bInSpringMode;
Vector m_vecOffset;
Vector m_vec2DVelocity;
Vector m_vecActualViewOffset;
Vector m_vecViewOffset;
float m_flFOVOffsetY;
vgui::HFont m_hFont;
int m_nTextureId;
#endif // CLIENT_DLL
#ifdef GAME_DLL
public:
// Server code
#endif // GAME_DLL
private:
EHANDLE m_hLockTarget;
private:
CWeaponIFMSteadyCam( const CWeaponIFMSteadyCam & );
};
#endif // WEAPON_IFMSTEADYCAM_H