PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
mouse_events.h
1#pragma once
2
3#include "pixelbullet/core/event.h"
4#include "pixelbullet/input/mouse_codes.h"
5
6#include <sstream>
7#include <string>
8
9namespace pixelbullet::input
10{
11class MouseMovedEvent : public core::Event
12{
13public:
14 MouseMovedEvent(float x, float y)
15 : mouse_x_(x)
16 , mouse_y_(y)
17 {
18 }
19
20 [[nodiscard]] float x() const
21 {
22 return mouse_x_;
23 }
24 [[nodiscard]] float y() const
25 {
26 return mouse_y_;
27 }
28
29 [[nodiscard]] std::string to_string() const override
30 {
31 std::stringstream ss;
32 ss << "MouseMovedEvent: " << mouse_x_ << ", " << mouse_y_;
33 return ss.str();
34 }
35
36 PB_EVENT_TYPE(MouseMoved)
37 PB_EVENT_CATEGORIES(core::EventCategory::Mouse | core::EventCategory::Input)
38
39private:
40 float mouse_x_, mouse_y_;
41};
42
43class MouseScrolledEvent : public core::Event
44{
45public:
46 MouseScrolledEvent(float xOffset, float yOffset)
47 : x_offset_(xOffset)
48 , y_offset_(yOffset)
49 {
50 }
51
52 [[nodiscard]] float x_offset() const
53 {
54 return x_offset_;
55 }
56 [[nodiscard]] float y_offset() const
57 {
58 return y_offset_;
59 }
60
61 [[nodiscard]] std::string to_string() const override
62 {
63 std::stringstream ss;
64 ss << "MouseScrolledEvent: " << x_offset() << ", " << y_offset();
65 return ss.str();
66 }
67
68 PB_EVENT_TYPE(MouseScrolled)
69 PB_EVENT_CATEGORIES(core::EventCategory::Mouse | core::EventCategory::Input)
70
71private:
72 float x_offset_, y_offset_;
73};
74
75class MouseButtonEvent : public core::Event
76{
77public:
78 [[nodiscard]] MouseCode mouse_button() const
79 {
80 return button_;
81 }
82
83 PB_EVENT_CATEGORIES(core::EventCategory::Mouse | core::EventCategory::Input | core::EventCategory::MouseButton)
84
85protected:
86 explicit MouseButtonEvent(MouseCode button)
87 : button_(button)
88 {
89 }
90
91 MouseCode button_;
92};
93
94class MouseButtonPressedEvent : public MouseButtonEvent
95{
96public:
97 explicit MouseButtonPressedEvent(MouseCode button)
98 : MouseButtonEvent(button)
99 {
100 }
101
102 [[nodiscard]] std::string to_string() const override
103 {
104 std::stringstream ss;
105 ss << "MouseButtonPressedEvent: " << button_;
106 return ss.str();
107 }
108
109 PB_EVENT_TYPE(MouseButtonPressed)
110};
111
112class MouseButtonReleasedEvent : public MouseButtonEvent
113{
114public:
115 explicit MouseButtonReleasedEvent(MouseCode button)
116 : MouseButtonEvent(button)
117 {
118 }
119
120 [[nodiscard]] std::string to_string() const override
121 {
122 std::stringstream ss;
123 ss << "MouseButtonReleasedEvent: " << button_;
124 return ss.str();
125 }
126
127 PB_EVENT_TYPE(MouseButtonReleased)
128};
129
130} // namespace pixelbullet::input
Definition event.h:108