Cogs.Foundation
Loading...
Searching...
No Matches
Mouse.h
Go to the documentation of this file.
1#pragma once
2
3#include "../FoundationBase.h"
4
5#include <glm/vec2.hpp>
6
7#include <variant>
8#include <vector>
9
10namespace Cogs
11{
12 class Window;
13
14 enum MouseButton : int
15 {
19
22 };
23
25 {
26 public:
27
28 struct State {
29 bool buttonDown[MouseButton::Count] = {};
30 glm::vec2 position = {-std::numeric_limits<float>::max(), -std::numeric_limits<float>::max()};
31 int wheel = 0;
32 };
33
34 struct Event {
35 enum class Type {
36 Press,
37 Release,
38 Move,
39 Wheel,
40 Reset
41 };
42
43 struct ButtonData {
45 };
46
47 struct MoveData {
48 glm::vec2 newPosition;
49 };
50
51 struct WheelData {
52 int offset;
53 };
54
56 double timestamp_ms;
57 glm::vec2 currPosition;
58
61 std::variant<ButtonData, MoveData, WheelData> data;
62 };
63
64 void update();
65
66 void submitButtonDown(MouseButton button, double timestamp_ms);
67 void submitButtonUp(MouseButton button, double timestamp_ms);
68 void submitMove(const glm::vec2& position, double timestamp_ms);
69 void submitWheel(int offset, double timestamp_ms);
70 void submitReset(double timestamp_ms);
71
72 const State& getState() const { return state; }
73 const std::vector<Event>& getEvents() const { return events; }
74
75 private:
77 std::vector<Event> events;
78 std::vector<Event> eventQueue;
79 };
80}
#define COGSFOUNDATION_API
Definition: FoundationBase.h:31
Definition: Mouse.h:25
const std::vector< Event > & getEvents() const
Definition: Mouse.h:73
State state
Definition: Mouse.h:76
std::vector< Event > events
Definition: Mouse.h:77
const State & getState() const
Definition: Mouse.h:72
std::vector< Event > eventQueue
Definition: Mouse.h:78
Main Cogs namespace.
Definition: MortonCode.h:5
MouseButton
Definition: Mouse.h:15
@ Middle
Definition: Mouse.h:18
@ Left
Definition: Mouse.h:16
@ Right
Definition: Mouse.h:17
@ Count
Definition: Mouse.h:20
@ NoButton
Definition: Mouse.h:21
Definition: Mouse.h:43
MouseButton button
Definition: Mouse.h:44
Definition: Mouse.h:47
glm::vec2 newPosition
Definition: Mouse.h:48
Definition: Mouse.h:51
int offset
Definition: Mouse.h:52
Definition: Mouse.h:34
Type
Definition: Mouse.h:35
double timestamp_ms
Timestamp in miliseconds.
Definition: Mouse.h:56
Type type
Event type.
Definition: Mouse.h:55
std::variant< ButtonData, MoveData, WheelData > data
Definition: Mouse.h:61
glm::vec2 currPosition
Mouse position at the event.
Definition: Mouse.h:57
Definition: Mouse.h:28