2#include "EventBasedInput.h"
8 size_t keyboardIndex = 0;
9 const auto& keyboardEvents = keyboard.
getEvents();
10 const auto& mouseEvents = mouse.getEvents();
11 while (keyboardIndex < keyboardEvents.size() || mouseIndex < mouseEvents.size()) {
14 if (keyboardIndex >= keyboardEvents.size()) {
15 mouseEvent = &mouseEvents[mouseIndex++];
17 else if (mouseIndex >= mouseEvents.size()) {
18 keyboardEvent = &keyboardEvents[keyboardIndex++];
20 else if (mouseEvents[mouseIndex].timestamp_ms < keyboardEvents[keyboardIndex].timestamp_ms) {
21 mouseEvent = &mouseEvents[mouseIndex++];
24 keyboardEvent = &keyboardEvents[keyboardIndex++];
32 handleMouseEvent(*mouseEvent);
37void Cogs::Core::EventBasedInput::handleMouseEvent(
const Cogs::Mouse::Event& mouseEvent)
41 event.modifiers = modifiers;
43 event.mouseEvent = mouseEvent;
49 switch (keyboardEvent.
type) {
50 case Cogs::Keyboard::Event::Type::Press:
52 const Key k = std::get<Key>(keyboardEvent.
data);
58 modifiers |= KeyboardModifiers::Shift;
61 modifiers |= KeyboardModifiers::Control;
64 modifiers |= KeyboardModifiers::Alt;
69 event.modifiers = modifiers;
71 event.keyEvent.key = k;
78 case Cogs::Keyboard::Event::Type::Release:
80 const Key k = std::get<Key>(keyboardEvent.
data);
99 case Cogs::Keyboard::Event::Type::Reset:
101 modifiers = KeyboardModifiers::None;
104 event.modifiers = modifiers;
const std::vector< Event > & getEvents() const
Get the previous frame's event list. Updated at the beginning of each new frame.
KeyboardModifiers
Current keyboard modifiers.
@ Reset
Input Focus lost event. Typically reset any cached mouse/keyboard state.
@ Keyboard
Keyboard event.
std::variant< Key, std::string > data
Data associated with the event: Key for Press and Release events, std::string for AddChar events and ...
double timestamp_ms
Timestamp in miliseconds.
double timestamp_ms
Timestamp in miliseconds.