105 lines
2.6 KiB
C++
105 lines
2.6 KiB
C++
//========= 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
|