forked from hitmen047/Source-PlusPlus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiinputsystem.h
130 lines (98 loc) · 4.98 KB
/
iinputsystem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//===========================================================================//
#ifndef IINPUTSYSTEM_H
#define IINPUTSYSTEM_H
#ifdef _WIN32
#pragma once
#endif
#include "tier0/platform.h"
#include "appframework/IAppSystem.h"
#include "inputsystem/InputEnums.h"
#include "inputsystem/ButtonCode.h"
#include "inputsystem/AnalogCode.h"
//-----------------------------------------------------------------------------
// Main interface for input. This is a low-level interface
//-----------------------------------------------------------------------------
#define INPUTSYSTEM_INTERFACE_VERSION "InputSystemVersion001"
abstract_class IInputSystem : public IAppSystem
{
public:
// Attach, detach input system from a particular window
// This window should be the root window for the application
// Only 1 window should be attached at any given time.
virtual void AttachToWindow( void* hWnd ) = 0;
virtual void DetachFromWindow( ) = 0;
// Enables/disables input. PollInputState will not update current
// button/analog states when it is called if the system is disabled.
virtual void EnableInput( bool bEnable ) = 0;
// Enables/disables the windows message pump. PollInputState will not
// Peek/Dispatch messages if this is disabled
virtual void EnableMessagePump( bool bEnable ) = 0;
// Polls the current input state
virtual void PollInputState() = 0;
// Gets the time of the last polling in ms
virtual int GetPollTick() const = 0;
// Is a button down? "Buttons" are binary-state input devices (mouse buttons, keyboard keys)
virtual bool IsButtonDown( ButtonCode_t code ) const = 0;
// Returns the tick at which the button was pressed and released
virtual int GetButtonPressedTick( ButtonCode_t code ) const = 0;
virtual int GetButtonReleasedTick( ButtonCode_t code ) const = 0;
// Gets the value of an analog input device this frame
// Includes joysticks, mousewheel, mouse
virtual int GetAnalogValue( AnalogCode_t code ) const = 0;
// Gets the change in a particular analog input device this frame
// Includes joysticks, mousewheel, mouse
virtual int GetAnalogDelta( AnalogCode_t code ) const = 0;
// Returns the input events since the last poll
virtual int GetEventCount() const = 0;
virtual const InputEvent_t* GetEventData( ) const = 0;
// Posts a user-defined event into the event queue; this is expected
// to be called in overridden wndprocs connected to the root panel.
virtual void PostUserEvent( const InputEvent_t &event ) = 0;
// Returns the number of joysticks
virtual int GetJoystickCount() const = 0;
// Enable/disable joystick, it has perf costs
virtual void EnableJoystickInput( int nJoystick, bool bEnable ) = 0;
// Enable/disable diagonal joystick POV (simultaneous POV buttons down)
virtual void EnableJoystickDiagonalPOV( int nJoystick, bool bEnable ) = 0;
// Sample the joystick and append events to the input queue
virtual void SampleDevices( void ) = 0;
// FIXME: Currently force-feedback is only supported on the Xbox 360
virtual void SetRumble( float fLeftMotor, float fRightMotor, int userId = INVALID_USER_ID ) = 0;
virtual void StopRumble( void ) = 0;
// Resets the input state
virtual void ResetInputState() = 0;
// Sets a player as the primary user - all other controllers will be ignored.
virtual void SetPrimaryUserId( int userId ) = 0;
// Convert back + forth between ButtonCode/AnalogCode + strings
virtual const char *ButtonCodeToString( ButtonCode_t code ) const = 0;
virtual const char *AnalogCodeToString( AnalogCode_t code ) const = 0;
virtual ButtonCode_t StringToButtonCode( const char *pString ) const = 0;
virtual AnalogCode_t StringToAnalogCode( const char *pString ) const = 0;
// Sleeps until input happens. Pass a negative number to sleep infinitely
virtual void SleepUntilInput( int nMaxSleepTimeMS = -1 ) = 0;
// Convert back + forth between virtual codes + button codes
// FIXME: This is a temporary piece of code
virtual ButtonCode_t VirtualKeyToButtonCode( int nVirtualKey ) const = 0;
virtual int ButtonCodeToVirtualKey( ButtonCode_t code ) const = 0;
virtual ButtonCode_t ScanCodeToButtonCode( int lParam ) const = 0;
// How many times have we called PollInputState?
virtual int GetPollCount() const = 0;
// Sets the cursor position
virtual void SetCursorPosition( int x, int y ) = 0;
// NVNT get address to haptics interface
virtual void *GetHapticsInterfaceAddress() const = 0;
virtual void SetNovintPure( bool bPure ) = 0;
// read and clear accumulated raw input values
virtual bool GetRawMouseAccumulators( int& accumX, int& accumY ) = 0;
// tell the input system that we're not a game, we're console text mode.
// this is used for dedicated servers to not initialize joystick system.
// this needs to be called before CInputSystem::Init (e.g. in PreInit of
// some system) if you want ot prevent the joystick system from ever
// being initialized.
virtual void SetConsoleTextMode( bool bConsoleTextMode ) = 0;
};
#endif // IINPUTSYSTEM_H