Gainput
v1.0.0
|
Interface for anything that provides device inputs. More...
#include <GainputInputDevice.h>
Public Types | |
enum | DeviceType { DT_MOUSE, DT_KEYBOARD, DT_PAD, DT_TOUCH, DT_BUILTIN, DT_REMOTE, DT_GESTURE, DT_CUSTOM, DT_COUNT } |
Type of an input device. More... | |
enum | DeviceVariant { DV_STANDARD, DV_RAW, DV_NULL } |
Variant of an input device type. More... | |
enum | DeviceState { DS_OK, DS_LOW_BATTERY, DS_UNAVAILABLE } |
State of an input device. More... | |
Public Member Functions | |
InputDevice (InputManager &manager, DeviceId device, unsigned index) | |
Initializes the input device. More... | |
virtual | ~InputDevice () |
Empty virtual destructor. | |
void | Update (InputDeltaState *delta) |
Update this device, internally called by InputManager. More... | |
DeviceId | GetDeviceId () const |
Returns this device's ID. | |
unsigned | GetIndex () const |
Returns the device's index among devices of the same type. | |
virtual DeviceType | GetType () const =0 |
Returns the device type. | |
virtual DeviceVariant | GetVariant () const |
Returns the device variant. | |
virtual const char * | GetTypeName () const =0 |
Returns the device type's name. | |
virtual bool | IsLateUpdate () const |
Returns if this device should be updated after other devices. | |
DeviceState | GetState () const |
Returns the device state. | |
virtual bool | IsAvailable () const |
Returns if this device is available. | |
virtual bool | IsValidButtonId (DeviceButtonId deviceButton) const =0 |
Returns if the given button is valid for this device. | |
bool | GetBool (DeviceButtonId deviceButton) const |
Returns the current state of the given button. | |
bool | GetBoolPrevious (DeviceButtonId deviceButton) const |
Returns the previous state of the given button. | |
float | GetFloat (DeviceButtonId deviceButton) const |
Returns the current state of the given button. | |
float | GetFloatPrevious (DeviceButtonId deviceButton) const |
Returns the previous state of the given button. | |
virtual size_t | GetAnyButtonDown (DeviceButtonSpec *outButtons, size_t maxButtonCount) const |
Checks if any button on this device is down. More... | |
virtual size_t | GetButtonName (DeviceButtonId deviceButton, char *buffer, size_t bufferLength) const |
Gets the name of the given button. More... | |
virtual ButtonType | GetButtonType (DeviceButtonId deviceButton) const =0 |
Returns the type of the given button. | |
virtual DeviceButtonId | GetButtonByName (const char *name) const |
Returns the button's ID if the name is of this device's buttons. More... | |
InputState * | GetInputState () |
Returns the device's state, probably best if only used internally. | |
const InputState * | GetInputState () const |
Returns the device's state, probably best if only used internally. | |
InputState * | GetPreviousInputState () |
Returns the device's previous state, probably best if only used internally. | |
virtual InputState * | GetNextInputState () |
Returns the device's state that is currently being determined, may be 0 if not available. | |
float | GetDeadZone (DeviceButtonId buttonId) const |
Returns the previously set dead zone for the given button or 0.0f if none was set yet. | |
void | SetDeadZone (DeviceButtonId buttonId, float value) |
Sets the dead zone for the given button. | |
void | SetDebugRenderingEnabled (bool enabled) |
Enable/disable debug rendering of this device. | |
bool | IsDebugRenderingEnabled () const |
Returns true if debug rendering is enabled, false otherwise. | |
bool | IsSynced () const |
void | SetSynced (bool synced) |
Sets if this device is being controlled remotely or from a recording. More... | |
Static Public Attributes | |
static const unsigned | AutoIndex = unsigned(-1) |
Protected Member Functions | |
virtual void | InternalUpdate (InputDeltaState *delta)=0 |
Implementation of the device's Update function. More... | |
virtual DeviceState | InternalGetState () const =0 |
Implementation of the device's GetState function. More... | |
size_t | CheckAllButtonsDown (DeviceButtonSpec *outButtons, size_t maxButtonCount, unsigned start, unsigned end) const |
Checks which buttons are down. More... | |
Protected Attributes | |
InputManager & | manager_ |
The manager this device belongs to. | |
DeviceId | deviceId_ |
The ID of this device. | |
unsigned | index_ |
Index of this device among devices of the same type. | |
InputState * | state_ |
The current state of this device. | |
InputState * | previousState_ |
The previous state of this device. | |
float * | deadZones_ |
bool | debugRenderingEnabled_ |
Specifies if this device is currently rendering debug information. | |
bool | synced_ |
Interface for anything that provides device inputs.
An InputDevice can be anything from a physical device, like a mouse or keyboard, to the more abstract concept of gestures that in turn themselves depend on other InputDevices. What they have in common is that they provide a number of device buttons (identified by a DeviceButtonId) which can be queried for their state.
Note that you may not instantiate an InputDevice (or any derived implementation) directly. Instead you have to call InputManager::CreateDevice() or InputManager::CreateAndGetDevice() with the device you want to instantiate as the template parameter. That way the device will be properly registered with the InputManager and continuously updated.
Normally, you won't interact with an InputDevice directly, but instead use its device ID and its device buttons' IDs to map the device buttons to user buttons (see InputMap).
Type of an input device.
gainput::InputDevice::InputDevice | ( | InputManager & | manager, |
DeviceId | device, | ||
unsigned | index | ||
) |
Initializes the input device.
Do not instantiate any input device directly. Call InputManager::CreateDevice() instead.
|
protected |
Checks which buttons are down.
This function is normally used by GetAnyButtonDown implementations internally.
outButtons | An array to write buttons that are down to. |
maxButtonCount | The size of outButtons. |
start | The lowest device button ID to check. |
end | The biggest device button ID to check. |
|
inlinevirtual |
Checks if any button on this device is down.
[out] | outButtons | An array with maxButtonCount fields to receive the device buttons that are down. |
maxButtonCount | The number of fields in outButtons. |
Reimplemented in gainput::InputDeviceKeyboard, gainput::InputDevicePad, gainput::InputDeviceTouch, gainput::InputDeviceMouse, and gainput::InputDeviceBuiltIn.
|
inlinevirtual |
Returns the button's ID if the name is of this device's buttons.
name | Name of the device button to look for. |
Reimplemented in gainput::InputDeviceKeyboard, gainput::InputDevicePad, gainput::InputDeviceTouch, gainput::InputDeviceMouse, and gainput::InputDeviceBuiltIn.
|
inlinevirtual |
Gets the name of the given button.
deviceButton | ID of the button. |
buffer | A char-buffer to receive the button name. |
bufferLength | Length of the buffer receiving the button name in bytes. |
Reimplemented in gainput::InputDeviceKeyboard, gainput::InputDevicePad, gainput::InputDeviceTouch, gainput::InputDeviceMouse, and gainput::InputDeviceBuiltIn.
|
protectedpure virtual |
Implementation of the device's GetState function.
Implemented in gainput::InputDeviceKeyboard, gainput::InputDevicePad, gainput::InputDeviceTouch, gainput::InputDeviceMouse, gainput::InputDeviceBuiltIn, and gainput::InputGesture.
|
protectedpure virtual |
Implementation of the device's Update function.
delta | The delta state to add changes to. May be 0. |
Implemented in gainput::InputDeviceKeyboard, gainput::InputDevicePad, gainput::InputDeviceTouch, gainput::InputDeviceMouse, gainput::DoubleClickGesture, gainput::HoldGesture, gainput::PinchGesture, gainput::RotateGesture, gainput::InputDeviceBuiltIn, gainput::SimultaneouslyDownGesture, and gainput::TapGesture.
|
inline |
Returns true if this device is being controlled by a remote device or a recorded input sequence, false otherwise.
|
inline |
Sets if this device is being controlled remotely or from a recording.
void gainput::InputDevice::Update | ( | InputDeltaState * | delta | ) |
Update this device, internally called by InputManager.
delta | The delta state to add changes to. May be 0. |
|
protected |
Specifies if this device's state is actually set from a device or manually set by some other system.