Cogs.Core
Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
Cogs::Core::InputManager Class Reference

Input manager responsible for handling input from various devices, including mouse, keyboard, game controllers etc. More...

#include <InputManager.h>

Classes

struct  InputActionMapping
 
struct  InputAxisMapping
 
struct  SourceActionMapping
 
struct  SourceAxisMapping
 

Public Member Functions

 InputManager (ViewContext *viewContext)
 Constructs a new InputManager.
 
 ~InputManager ()
 Destructs the InputManager.
 
 InputManager (const InputManager &)=delete
 
InputManageroperator= (const InputManager &)=delete
 
void initialize ()
 Initialize the input managers default configuration.
 
void addProvider (std::unique_ptr< IInputProvider > provider)
 Register a new input provider.
 
void createAxisMapping (const InputIdentifier &axisId, const StringView &name)
 Map input axis to a friendly name.
 
void createActionMapping (const InputIdentifier &actionId, const StringView &name)
 Map input button to a friendly action name.
 
float getAxisValue (const StringView &name) const
 Get last value for the given mapped axis.
 
bool getActionState (const StringView &name) const
 Get last action state for the given mapped action.
 
void update ()
 Update the input state.
 
Cogs::Core::InputIdentifier getAxis (std::string driver, std::string device, std::string axis)
 
size_t getAxisIndex (InputDeviceState *device, const StringView &inputAxis) const
 
void addAxisMapping (const StringView &name, const StringView &device, const StringView &inputAxis, float scale=1.0f, int flags=0)
 
void addAxisMapping (const StringView &name, InputDeviceState *device, const StringView &inputAxis, float scale=1.0f, int flags=0)
 
size_t getButtonIndex (InputDeviceState *device, const StringView &inputAction) const
 
void addActionMapping (const StringView &name, const StringView &device, const StringView &inputAction, int placeholder=0)
 
void addActionMapping (const StringView &name, InputDeviceState *device, const StringView &inputAction, int placeholder=0)
 
void gainedFocus (double timestamp_ms)
 
void lostFocus (double timestamp_ms)
 
void triggerPointerPress (PointerType pointerType, PointerId pointerId, MouseButton button, const glm::ivec2 &position, double timestamp_ms)
 
void triggerPointerRelease (PointerType pointerType, PointerId pointerId, MouseButton button, const glm::ivec2 &position, double timestamp_ms)
 
void triggerPointerMove (PointerType pointerType, PointerId pointerId, const glm::ivec2 &position, double timestamp_ms)
 
void triggerMouseWheel (int32_t deltaValue, double timestamp_ms)
 
void triggerKeyDown (Key key, double timestamp_ms)
 
void triggerKeyUp (Key key, double timestamp_ms)
 
void triggerKeyChar (std::string ch, double timestamp_ms)
 
InputDeviceStategetDevice (InputDevices::EValues deviceId)
 
ViewContextgetView () const
 

Private Member Functions

void updateConnections ()
 
void updateInputs ()
 
void updateActions ()
 
void updateAxes ()
 
double checkTimeStamp (double timestamp_ms)
 
void readInputConfig (const StringView &path)
 
InputDeviceStategetDevice (const StringView &name)
 

Private Attributes

ViewContextview = nullptr
 
double prevTimeStamp = 0.0
 
std::vector< InputDeviceStatedeviceStates
 
std::unordered_map< size_t, InputAxisMappingaxisMappings
 
std::unordered_map< size_t, InputActionMappingactionMappings
 
std::vector< std::unique_ptr< IInputProvider > > inputProviders
 
std::vector< InputDeviceIdentifierpendingDevices
 

Static Private Attributes

static constexpr size_t NoAxis = static_cast<size_t>(-1)
 
static constexpr size_t NoButton = static_cast<size_t>(-1)
 
static constexpr size_t ErrorAxis = static_cast<size_t>(-2)
 
static constexpr size_t ErrorButton = static_cast<size_t>(-2)
 

Friends

void inputInspector (Context *context, bool *show)
 

Detailed Description

Input manager responsible for handling input from various devices, including mouse, keyboard, game controllers etc.

Definition at line 36 of file InputManager.h.

Constructor & Destructor Documentation

◆ InputManager()

Cogs::Core::InputManager::InputManager ( ViewContext viewContext)
explicit

Constructs a new InputManager.

Definition at line 70 of file InputManager.cpp.

◆ ~InputManager()

Cogs::Core::InputManager::~InputManager ( )

Destructs the InputManager.

Definition at line 76 of file InputManager.cpp.

Member Function Documentation

◆ addActionMapping() [1/2]

void Cogs::Core::InputManager::addActionMapping ( const StringView name,
const StringView device,
const StringView inputAction,
int  placeholder = 0 
)

Definition at line 283 of file InputManager.cpp.

◆ addActionMapping() [2/2]

void Cogs::Core::InputManager::addActionMapping ( const StringView name,
InputDeviceState device,
const StringView inputAction,
int  placeholder = 0 
)

Definition at line 292 of file InputManager.cpp.

◆ addAxisMapping() [1/2]

void Cogs::Core::InputManager::addAxisMapping ( const StringView name,
const StringView device,
const StringView inputAxis,
float  scale = 1.0f,
int  flags = 0 
)

Definition at line 238 of file InputManager.cpp.

◆ addAxisMapping() [2/2]

void Cogs::Core::InputManager::addAxisMapping ( const StringView name,
InputDeviceState device,
const StringView inputAxis,
float  scale = 1.0f,
int  flags = 0 
)

Definition at line 247 of file InputManager.cpp.

◆ addProvider()

void Cogs::Core::InputManager::addProvider ( std::unique_ptr< IInputProvider provider)

Register a new input provider.

Definition at line 186 of file InputManager.cpp.

◆ checkTimeStamp()

double Cogs::Core::InputManager::checkTimeStamp ( double  timestamp_ms)
private

Ensure time stamp is numerically greater than the previous.

Parameters
timestamp_ms- Time stamp of input event.
Returns
max(timestamp_ms, prevTimeStamp + delta)

Ensure that timestamp of event N > timestamp of event N-1

Definition at line 590 of file InputManager.cpp.

◆ createActionMapping()

void Cogs::Core::InputManager::createActionMapping ( const InputIdentifier actionId,
const StringView name 
)

◆ createAxisMapping()

void Cogs::Core::InputManager::createAxisMapping ( const InputIdentifier axisId,
const StringView name 
)

◆ gainedFocus()

void Cogs::Core::InputManager::gainedFocus ( double  timestamp_ms)

Definition at line 310 of file InputManager.cpp.

◆ getActionState()

bool Cogs::Core::InputManager::getActionState ( const StringView name) const

Get last action state for the given mapped action.

Definition at line 397 of file InputManager.cpp.

References Cogs::StringView::hash().

◆ getAxis()

Cogs::Core::InputIdentifier Cogs::Core::InputManager::getAxis ( std::string  driver,
std::string  device,
std::string  axis 
)
inline

Definition at line 70 of file InputManager.h.

◆ getAxisIndex()

size_t Cogs::Core::InputManager::getAxisIndex ( InputDeviceState device,
const StringView inputAxis 
) const

Definition at line 221 of file InputManager.cpp.

◆ getAxisValue()

float Cogs::Core::InputManager::getAxisValue ( const StringView name) const

Get last value for the given mapped axis.

Definition at line 385 of file InputManager.cpp.

References Cogs::StringView::hash().

◆ getButtonIndex()

size_t Cogs::Core::InputManager::getButtonIndex ( InputDeviceState device,
const StringView inputAction 
) const

Definition at line 267 of file InputManager.cpp.

◆ getDevice() [1/2]

Cogs::Core::InputDeviceState * Cogs::Core::InputManager::getDevice ( const StringView name)
private

Definition at line 191 of file InputManager.cpp.

◆ getDevice() [2/2]

Cogs::Core::InputDeviceState & Cogs::Core::InputManager::getDevice ( InputDevices::EValues  deviceId)

Definition at line 380 of file InputManager.cpp.

◆ getView()

ViewContext * Cogs::Core::InputManager::getView ( ) const
inline

Definition at line 100 of file InputManager.h.

◆ initialize()

void Cogs::Core::InputManager::initialize ( )

Initialize the input managers default configuration.

Definition at line 80 of file InputManager.cpp.

◆ lostFocus()

void Cogs::Core::InputManager::lostFocus ( double  timestamp_ms)

Definition at line 314 of file InputManager.cpp.

◆ readInputConfig()

void Cogs::Core::InputManager::readInputConfig ( const StringView path)
private

Definition at line 159 of file InputManager.cpp.

◆ triggerKeyChar()

void Cogs::Core::InputManager::triggerKeyChar ( std::string  ch,
double  timestamp_ms 
)

Definition at line 373 of file InputManager.cpp.

◆ triggerKeyDown()

void Cogs::Core::InputManager::triggerKeyDown ( Key  key,
double  timestamp_ms 
)

Definition at line 359 of file InputManager.cpp.

◆ triggerKeyUp()

void Cogs::Core::InputManager::triggerKeyUp ( Key  key,
double  timestamp_ms 
)

Definition at line 366 of file InputManager.cpp.

◆ triggerMouseWheel()

void Cogs::Core::InputManager::triggerMouseWheel ( int32_t  deltaValue,
double  timestamp_ms 
)

Definition at line 351 of file InputManager.cpp.

◆ triggerPointerMove()

void Cogs::Core::InputManager::triggerPointerMove ( PointerType  pointerType,
PointerId  pointerId,
const glm::ivec2 &  position,
double  timestamp_ms 
)

Definition at line 341 of file InputManager.cpp.

◆ triggerPointerPress()

void Cogs::Core::InputManager::triggerPointerPress ( PointerType  pointerType,
PointerId  pointerId,
MouseButton  button,
const glm::ivec2 &  position,
double  timestamp_ms 
)

Definition at line 321 of file InputManager.cpp.

◆ triggerPointerRelease()

void Cogs::Core::InputManager::triggerPointerRelease ( PointerType  pointerType,
PointerId  pointerId,
MouseButton  button,
const glm::ivec2 &  position,
double  timestamp_ms 
)

Definition at line 331 of file InputManager.cpp.

◆ update()

void Cogs::Core::InputManager::update ( )

Update the input state.

Definition at line 409 of file InputManager.cpp.

◆ updateActions()

void Cogs::Core::InputManager::updateActions ( )
private

Definition at line 565 of file InputManager.cpp.

◆ updateAxes()

void Cogs::Core::InputManager::updateAxes ( )
private

Definition at line 520 of file InputManager.cpp.

◆ updateConnections()

void Cogs::Core::InputManager::updateConnections ( )
private

Definition at line 444 of file InputManager.cpp.

◆ updateInputs()

void Cogs::Core::InputManager::updateInputs ( )
private

Definition at line 474 of file InputManager.cpp.

Member Data Documentation

◆ actionMappings

std::unordered_map<size_t, InputActionMapping> Cogs::Core::InputManager::actionMappings
private

Definition at line 169 of file InputManager.h.

◆ axisMappings

std::unordered_map<size_t, InputAxisMapping> Cogs::Core::InputManager::axisMappings
private

Definition at line 168 of file InputManager.h.

◆ deviceStates

std::vector<InputDeviceState> Cogs::Core::InputManager::deviceStates
private

Definition at line 166 of file InputManager.h.

◆ ErrorAxis

constexpr size_t Cogs::Core::InputManager::ErrorAxis = static_cast<size_t>(-2)
staticconstexprprivate

Definition at line 124 of file InputManager.h.

◆ ErrorButton

constexpr size_t Cogs::Core::InputManager::ErrorButton = static_cast<size_t>(-2)
staticconstexprprivate

Definition at line 125 of file InputManager.h.

◆ inputProviders

std::vector<std::unique_ptr<IInputProvider> > Cogs::Core::InputManager::inputProviders
private

Definition at line 171 of file InputManager.h.

◆ NoAxis

constexpr size_t Cogs::Core::InputManager::NoAxis = static_cast<size_t>(-1)
staticconstexprprivate

Definition at line 121 of file InputManager.h.

◆ NoButton

constexpr size_t Cogs::Core::InputManager::NoButton = static_cast<size_t>(-1)
staticconstexprprivate

Definition at line 122 of file InputManager.h.

◆ pendingDevices

std::vector<InputDeviceIdentifier> Cogs::Core::InputManager::pendingDevices
private

Definition at line 173 of file InputManager.h.

◆ prevTimeStamp

double Cogs::Core::InputManager::prevTimeStamp = 0.0
private

Definition at line 119 of file InputManager.h.

◆ view

ViewContext* Cogs::Core::InputManager::view = nullptr
private

Definition at line 117 of file InputManager.h.


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