css_enhanced_waf/game/client/iinput.h
unknown d03c92b6f0 We have now better angle update
Since it was previously based on old frametime,
you would see your angle changes from previous frametime,
not the current one...
It's now fixed.
2024-09-12 22:33:24 +02:00

118 lines
No EOL
3.9 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//
//=============================================================================//
#if !defined( IINPUT_H )
#define IINPUT_H
#ifdef _WIN32
#pragma once
#endif
class bf_write;
class bf_read;
class CUserCmd;
class C_BaseCombatWeapon;
struct kbutton_t;
struct CameraThirdData_t
{
float m_flPitch;
float m_flYaw;
float m_flDist;
float m_flLag;
Vector m_vecHullMin;
Vector m_vecHullMax;
};
abstract_class IInput
{
public:
// Initialization/shutdown of the subsystem
virtual void Init_All( void ) = 0;
virtual void Shutdown_All( void ) = 0;
// Latching button states
virtual int GetButtonBits( int ) = 0;
// Create movement command
virtual void CreateMove ( int sequence_number, float input_sample_frametime, bool active ) = 0;
virtual void ExtraMovementSample( int number_of_ticks_this_frame, int current_command, float frametime, bool active ) = 0;
virtual bool WriteUsercmdDeltaToBuffer( bf_write *buf, int from, int to, bool isnewcommand ) = 0;
virtual void EncodeUserCmdToBuffer( bf_write& buf, int slot ) = 0;
virtual void DecodeUserCmdFromBuffer( bf_read& buf, int slot ) = 0;
virtual CUserCmd *GetUserCmd( int sequence_number ) = 0;
virtual void MakeWeaponSelection( C_BaseCombatWeapon *weapon ) = 0;
// Retrieve key state
virtual float KeyState ( kbutton_t *key ) = 0;
// Issue key event
virtual int KeyEvent( int eventcode, ButtonCode_t keynum, const char *pszCurrentBinding ) = 0;
// Look for key
virtual kbutton_t *FindKey( const char *name ) = 0;
// Issue commands from controllers
virtual void ControllerCommands( void ) = 0;
// Extra initialization for some joysticks
virtual void Joystick_Advanced( void ) = 0;
virtual void Joystick_SetSampleTime( float frametime ) = 0;
virtual void IN_SetSampleTime( float frametime ) = 0;
// Accumulate mouse delta
virtual void AccumulateMouse( void ) = 0;
// Activate/deactivate mouse
virtual void ActivateMouse( void ) = 0;
virtual void DeactivateMouse( void ) = 0;
// Clear mouse state data
virtual void ClearStates( void ) = 0;
// Retrieve lookspring setting
virtual float GetLookSpring( void ) = 0;
// Retrieve mouse position
virtual void GetFullscreenMousePos( int *mx, int *my, int *unclampedx = 0, int *unclampedy = 0 ) = 0;
virtual void SetFullscreenMousePos( int mx, int my ) = 0;
virtual void ResetMouse( void ) = 0;
virtual float GetLastForwardMove( void ) = 0;
virtual float Joystick_GetForward( void ) = 0;
virtual float Joystick_GetSide( void ) = 0;
virtual float Joystick_GetPitch( void ) = 0;
virtual float Joystick_GetYaw( void ) = 0;
// Third Person camera ( TODO/FIXME: Move this to a separate interface? )
virtual void CAM_Think( void ) = 0;
virtual int CAM_IsThirdPerson( void ) = 0;
virtual void CAM_ToThirdPerson(void) = 0;
virtual void CAM_ToFirstPerson(void) = 0;
virtual void CAM_StartMouseMove(void) = 0;
virtual void CAM_EndMouseMove(void) = 0;
virtual void CAM_StartDistance(void) = 0;
virtual void CAM_EndDistance(void) = 0;
virtual int CAM_InterceptingMouse( void ) = 0;
// orthographic camera info ( TODO/FIXME: Move this to a separate interface? )
virtual void CAM_ToOrthographic() = 0;
virtual bool CAM_IsOrthographic() const = 0;
virtual void CAM_OrthographicSize( float& w, float& h ) const = 0;
#if defined( HL2_CLIENT_DLL )
// IK back channel info
virtual void AddIKGroundContactInfo( int entindex, float minheight, float maxheight ) = 0;
#endif
virtual void LevelInit( void ) = 0;
// Causes an input to have to be re-pressed to become active
virtual void ClearInputButton( int bits ) = 0;
virtual void CAM_SetCameraThirdData( CameraThirdData_t *pCameraData, const QAngle &vecCameraOffset ) = 0;
virtual void CAM_CameraThirdThink( void ) = 0;
virtual bool EnableJoystickMode() = 0;
};
extern ::IInput *input;
#endif // IINPUT_H