Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
foray::osi::InputDevice Class Reference

Wraps a generic input device (mouse, keyboard, joystick, controller ...) in a hardware agnostic way. More...

#include <foray_inputdevice.hpp>

Classes

class  AxisJoystick
 
class  ButtonJoystick
 
class  ButtonKeyboard
 
class  ButtonMouse
 
class  DirectionalMouseScroll
 

Public Types

enum class  EType : uint8_t { Unknown = 0 , Mouse , Keyboard , Joystick }
 
using AxisPtr = const InputAnalogue *
 

Public Member Functions

SDL_JoystickGUID Guid ()
 
SDL_Joystick * Joystick ()
 
const SDL_Joystick * Joystick () const
 
SDL_JoystickID JoystickId ()
 
 InputDevice ()
 
 InputDevice (const InputDevice &other)=delete
 
 InputDevice (const InputDevice &&other)=delete
 
InputDeviceoperator= (const InputDevice &other)=delete
 
const std::vector< AxisPtr > & Axes () const
 
const std::vector< InputBinary * > & Buttons () const
 
const std::vector< InputDirectional * > & Directionals () const
 
const std::string & Name () const
 
EType Type () const
 
const InputBinaryFindButton (EButton button) const
 Finds a button object based on the corresponding enum value. InputBinary objects are valid until the input device is deleted, so storing the object for later use is a good idea.
 
std::string BuildDebugPrint () const
 
virtual ~InputDevice ()
 

Static Public Member Functions

static InputDeviceInitKeyboard (std::vector< std::unique_ptr< InputDevice > > &out)
 
static InputDeviceInitMouse (std::vector< std::unique_ptr< InputDevice > > &out)
 
static InputDeviceInitJoystick (std::vector< std::unique_ptr< InputDevice > > &out, SDL_Joystick *joystick)
 

Protected Attributes

SDL_JoystickGUID mGuid
 
SDL_Joystick * mJoystick
 
SDL_JoystickID mJoystickId
 
ButtonJoystickmJoystickButtons
 
AxisJoystickmJoystickAxes
 
ButtonKeyboardmKeyboardButtons
 
ButtonMousemMouseButtons
 
DirectionalMouseScroll mMouseScroll
 
std::string mName
 
EType mType
 
std::vector< AxisPtrmAxes
 
std::vector< InputBinary * > mButtons
 
std::vector< InputDirectional * > mDirectionals
 

Detailed Description

Wraps a generic input device (mouse, keyboard, joystick, controller ...) in a hardware agnostic way.

Member Typedef Documentation

◆ AxisPtr

Member Enumeration Documentation

◆ EType

enum class foray::osi::InputDevice::EType : uint8_t
strong
Enumerator
Unknown 
Mouse 
Keyboard 
Joystick 

Constructor & Destructor Documentation

◆ InputDevice() [1/3]

foray::osi::InputDevice::InputDevice ( )
inline

◆ InputDevice() [2/3]

foray::osi::InputDevice::InputDevice ( const InputDevice other)
delete

◆ InputDevice() [3/3]

foray::osi::InputDevice::InputDevice ( const InputDevice &&  other)
delete

◆ ~InputDevice()

virtual foray::osi::InputDevice::~InputDevice ( )
virtual

Member Function Documentation

◆ Axes()

const std::vector< AxisPtr > & foray::osi::InputDevice::Axes ( ) const
inline

◆ BuildDebugPrint()

std::string foray::osi::InputDevice::BuildDebugPrint ( ) const

◆ Buttons()

const std::vector< InputBinary * > & foray::osi::InputDevice::Buttons ( ) const
inline

◆ Directionals()

const std::vector< InputDirectional * > & foray::osi::InputDevice::Directionals ( ) const
inline

◆ FindButton()

const InputBinary * foray::osi::InputDevice::FindButton ( EButton  button) const

Finds a button object based on the corresponding enum value. InputBinary objects are valid until the input device is deleted, so storing the object for later use is a good idea.

Returns
nullptr if not found, a valid button object

◆ Guid()

SDL_JoystickGUID foray::osi::InputDevice::Guid ( )
inline

◆ InitJoystick()

static InputDevice * foray::osi::InputDevice::InitJoystick ( std::vector< std::unique_ptr< InputDevice > > &  out,
SDL_Joystick *  joystick 
)
static

◆ InitKeyboard()

static InputDevice * foray::osi::InputDevice::InitKeyboard ( std::vector< std::unique_ptr< InputDevice > > &  out)
static

◆ InitMouse()

static InputDevice * foray::osi::InputDevice::InitMouse ( std::vector< std::unique_ptr< InputDevice > > &  out)
static

◆ Joystick() [1/2]

SDL_Joystick * foray::osi::InputDevice::Joystick ( )
inline

◆ Joystick() [2/2]

const SDL_Joystick * foray::osi::InputDevice::Joystick ( ) const
inline

◆ JoystickId()

SDL_JoystickID foray::osi::InputDevice::JoystickId ( )
inline

◆ Name()

const std::string & foray::osi::InputDevice::Name ( ) const
inline

◆ operator=()

InputDevice & foray::osi::InputDevice::operator= ( const InputDevice other)
delete

◆ Type()

EType foray::osi::InputDevice::Type ( ) const
inline

Member Data Documentation

◆ mAxes

std::vector<AxisPtr> foray::osi::InputDevice::mAxes
protected

◆ mButtons

std::vector<InputBinary*> foray::osi::InputDevice::mButtons
protected

◆ mDirectionals

std::vector<InputDirectional*> foray::osi::InputDevice::mDirectionals
protected

◆ mGuid

SDL_JoystickGUID foray::osi::InputDevice::mGuid
protected

◆ mJoystick

SDL_Joystick* foray::osi::InputDevice::mJoystick
protected

◆ mJoystickAxes

AxisJoystick* foray::osi::InputDevice::mJoystickAxes
protected

◆ mJoystickButtons

ButtonJoystick* foray::osi::InputDevice::mJoystickButtons
protected

◆ mJoystickId

SDL_JoystickID foray::osi::InputDevice::mJoystickId
protected

◆ mKeyboardButtons

ButtonKeyboard* foray::osi::InputDevice::mKeyboardButtons
protected

◆ mMouseButtons

ButtonMouse* foray::osi::InputDevice::mMouseButtons
protected

◆ mMouseScroll

DirectionalMouseScroll foray::osi::InputDevice::mMouseScroll
protected

◆ mName

std::string foray::osi::InputDevice::mName
protected

◆ mType

EType foray::osi::InputDevice::mType
protected

The documentation for this class was generated from the following file: