5void Cogs::Mouse::update() {
10 for (
const Event& event : eventQueue) {
13 case Event::Type::Press: {
14 Event::ButtonData data = std::get<Event::ButtonData>(event.data);
15 state.buttonDown[data.button] =
true;
18 case Event::Type::Release: {
19 Event::ButtonData data = std::get<Event::ButtonData>(event.data);
20 state.buttonDown[data.button] =
false;
23 case Event::Type::Move: {
24 Event::MoveData data = std::get<Event::MoveData>(event.data);
25 state.position = data.newPosition;
28 case Event::Type::Wheel: {
29 Event::WheelData data = std::get<Event::WheelData>(event.data);
30 state.wheel += data.offset;
33 case Event::Type::Reset: {
34 std::memset(state.buttonDown, 0,
sizeof(state.buttonDown));
44 events = std::move(eventQueue);
48void Cogs::Mouse::submitButtonDown(MouseButton button,
double timestamp_ms) {
49 eventQueue.push_back({Event::Type::Press, timestamp_ms, state.position, Event::ButtonData{button}});
52void Cogs::Mouse::submitButtonUp(MouseButton button,
double timestamp_ms) {
53 eventQueue.push_back({Event::Type::Release, timestamp_ms, state.position, Event::ButtonData{button}});
56void Cogs::Mouse::submitMove(
const glm::ivec2& position,
double timestamp_ms) {
57 eventQueue.push_back({Event::Type::Move, timestamp_ms, state.position, Event::MoveData{position}});
60void Cogs::Mouse::submitWheel(
int offset,
double timestamp_ms) {
61 eventQueue.push_back({Event::Type::Wheel, timestamp_ms, state.position, Event::WheelData{offset}});
64void Cogs::Mouse::submitReset(
double timestamp_ms) {
65 eventQueue.push_back({Event::Type::Reset, timestamp_ms, state.position, {}});