initial
This commit is contained in:
117
game/shared/cstrike15/weapon_ironsightcontroller.h
Normal file
117
game/shared/cstrike15/weapon_ironsightcontroller.h
Normal file
@@ -0,0 +1,117 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: Class to control 'aim-down-sights' aka "IronSight" weapon functionality
|
||||
//
|
||||
//=====================================================================================//
|
||||
|
||||
|
||||
#ifndef WEAPON_IRONSIGHTCONTROLLER_H
|
||||
#define WEAPON_IRONSIGHTCONTROLLER_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "cs_shareddefs.h"
|
||||
|
||||
#ifdef IRONSIGHT
|
||||
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
#define IRONSIGHT_ANGLE_AVERAGE_SIZE 8
|
||||
#define IRONSIGHT_ANGLE_AVERAGE_DIVIDE ( 1.0f / IRONSIGHT_ANGLE_AVERAGE_SIZE )
|
||||
#define IRONSIGHT_HIDE_CROSSHAIR_THRESHOLD 0.5f
|
||||
#endif
|
||||
|
||||
enum CSIronSightMode
|
||||
{
|
||||
IronSight_should_approach_unsighted = 0,
|
||||
IronSight_should_approach_sighted,
|
||||
IronSight_viewmodel_is_deploying,
|
||||
IronSight_weapon_is_dropped
|
||||
};
|
||||
|
||||
// class to keep track of and update iron sight values and state information
|
||||
class CIronSightController
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
CIronSightController();
|
||||
|
||||
bool Init( CWeaponCSBase *pWeaponToMonitor );
|
||||
inline bool IsInitializedAndAvailable( void ) { return m_bIronSightAvailable; }
|
||||
|
||||
void UpdateIronSightAmount( void );
|
||||
|
||||
float GetIronSightFOV( float flDefaultFOV, bool bUseBiasedValue = false );
|
||||
|
||||
inline float GetIronSightAmount( void ) { return m_flIronSightAmount; }
|
||||
inline float GetIronSightAmountGained( void ) { return m_flIronSightAmountGained; }
|
||||
inline float GetIronSightAmountBiased( void ) { return m_flIronSightAmountBiased; }
|
||||
|
||||
inline float GetIronSightIdealFOV( void ) { return m_flIronSightFOV; }
|
||||
inline float GetIronSightPullUpDuration( void ) { return (m_flIronSightPullUpSpeed > 0) ? (1.0f / m_flIronSightPullUpSpeed) : 0.0f; } // pull up duration is how long the pull up would take in seconds, not the speed
|
||||
inline float GetIronSightPutDownDuration( void ) { return (m_flIronSightPutDownSpeed > 0) ? (1.0f / m_flIronSightPutDownSpeed) : 0.0f; } // put down duration is how long the put down would take in seconds, not the speed
|
||||
|
||||
inline bool IsApproachingSighted( void ); //still true when weapon is 100% ironsighted
|
||||
inline bool IsApproachingUnSighted( void ); //still true when weapon is 0% ironsighted
|
||||
inline bool IsDeploying( void ); //is still playing deploy animation
|
||||
inline bool IsDropped( void ); //is dropped loose in the world with no player owner
|
||||
|
||||
bool IsInIronSight( void ); //true if the weapon is ironsighted any positive amount
|
||||
|
||||
void SetState( CSIronSightMode newState );
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
void ApplyIronSightPositioning( Vector &vecCleanEyePosition, QAngle &angCleanEyeAngle, const Vector &vecBobbedEyePosition, const QAngle &angBobbedEyeAngle );
|
||||
|
||||
void IncreaseDotBlur(float flAmount);
|
||||
float GetDotBlur(void);
|
||||
float GetDotWidth(void);
|
||||
Vector2D GetDotCoords(void);
|
||||
const char *GetDotMaterial(void);
|
||||
|
||||
bool ShouldHideCrossHair( void );
|
||||
|
||||
bool PrepareScopeEffect( int x, int y, int w, int h, CViewSetup *pViewSetup );
|
||||
void RenderScopeEffect( int x, int y, int w, int h, CViewSetup *pViewSetup );
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
private:
|
||||
|
||||
bool m_bIronSightAvailable; //only true if members are initialized, valid, and ready to use
|
||||
|
||||
QAngle m_angPivotAngle;
|
||||
Vector m_vecEyePos;
|
||||
float m_flIronSightAmount; //0.0 (not ironsighted at all) to 1.0 (fully looking down the sights)
|
||||
float m_flIronSightAmountGained;
|
||||
float m_flIronSightAmountBiased;
|
||||
float m_flIronSightPullUpSpeed; //speed to pull the weapon up to the eye
|
||||
float m_flIronSightPutDownSpeed; //speed to put the weapon back down into normal viewmodel position
|
||||
float m_flIronSightPivotForward;
|
||||
float m_flIronSightFOV;
|
||||
float m_flIronSightLooseness; //how rigidly the viewmodel reacts to changes in m_vecViewDeltaVelocity
|
||||
|
||||
CWeaponCSBase *m_pAttachedWeapon;
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
void AddToAngleAverage( QAngle newAngle );
|
||||
QAngle GetAngleAverage( void );
|
||||
QAngle m_angDeltaAverage[IRONSIGHT_ANGLE_AVERAGE_SIZE];
|
||||
QAngle QAngleDiff( QAngle &angTarget, QAngle &angSrc );
|
||||
QAngle m_angViewLast;
|
||||
|
||||
Vector2D m_vecDotCoords;
|
||||
float m_flDotBlur;
|
||||
float m_flSpeedRatio;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif //IRONSIGHT
|
||||
|
||||
#endif // WEAPON_IRONSIGHTCONTROLLER_H
|
||||
Reference in New Issue
Block a user