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.
106 lines
2.4 KiB
106 lines
2.4 KiB
//========= Copyright 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 ~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
|