SleakEngine
0.1.0
C++23 multi-backend game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
MouseEvent.hpp
Go to the documentation of this file.
1
#ifndef _MOUSEEVENT_H_
2
#define _MOUSEEVENT_H_
3
4
#include <
Events/Event.hpp
>
5
#include <sstream>
6
#include <
Input/KeyCodes.hpp
>
7
8
namespace
Sleak
{
9
namespace
Events
{
10
namespace
Input
{
11
/// Fired when the cursor moves, carrying its new position.
12
/// @ingroup events
13
class
ENGINE_API
MouseMovedEvent
:
public
Event
{
14
public
:
15
MouseMovedEvent
(
const
int
x,
const
int
y) : mouseX(x), mouseY(y) {}
16
17
int
GetX
()
const
{
return
mouseX; }
18
int
GetY
()
const
{
return
mouseY; }
19
20
std::string
ToString
()
const override
21
{
22
std::stringstream ss;
23
ss <<
GetName
() <<
" ("
<< mouseX <<
", "
<< mouseY <<
")"
;
24
return
ss.str();
25
}
26
27
28
EVENT_CLASS_TYPE
(MouseMoved)
29
EVENT_CLASS_CATEGORY
(
EventCategory
::Mouse)
30
private:
31
int
mouseX, mouseY;
32
};
33
34
/// Fired on scroll wheel input, carrying the horizontal/vertical scroll offsets.
35
/// @ingroup events
36
class
MouseScrolledEvent
: public
Event
37
{
38
public
:
39
MouseScrolledEvent
(
const
float
xOffset,
const
float
yOffset)
40
: m_XOffset(xOffset), m_YOffset(yOffset) {}
41
42
float
GetXOffset
()
const
{
return
m_XOffset; }
43
float
GetYOffset
()
const
{
return
m_YOffset; }
44
45
std::string
ToString
()
const override
46
{
47
std::stringstream ss;
48
ss <<
GetName
() <<
" scroll amount ("
<<
GetXOffset
() <<
", "
<<
GetYOffset
() <<
")"
;
49
return
ss.str();
50
}
51
52
EVENT_CLASS_TYPE
(MouseScrolled)
53
EVENT_CLASS_CATEGORY
(
EventCategory
::Mouse)
54
private:
55
float
m_XOffset, m_YOffset;
56
};
57
58
/// Common base for button events; carries the button and cursor position at the time.
59
/// @ingroup events
60
class
MouseButtonEvent
: public
Event
61
{
62
public
:
63
MouseCode
GetMouseButton
()
const
{
return
m_Button
; }
64
std::string
GetButtonStr
()
const
{
return
Sleak::Input::Button_toString
(
m_Button
); }
65
66
std::string
ToString
()
const override
67
{
68
std::stringstream ss;
69
ss <<
GetName
() <<
" "
<<
GetButtonStr
()
70
<<
" position ("
<<
mouseX
<<
", "
<<
mouseY
<<
")"
;
71
return
ss.str();
72
}
73
74
EVENT_CLASS_CATEGORY
(
EventCategory::MouseButton
)
75
protected
:
76
MouseButtonEvent
(
const
MouseCode
button,
int
x,
int
y)
77
:
m_Button
(button),
mouseX
(x),
mouseY
(y) {}
78
79
MouseCode
m_Button
;
80
int
mouseX
,
mouseY
;
81
};
82
83
/// Fired on mouse button down.
84
/// @ingroup events
85
class
MouseButtonPressedEvent
:
public
MouseButtonEvent
86
{
87
public
:
88
MouseButtonPressedEvent
(
const
MouseCode
button,
int
x,
int
y)
89
:
MouseButtonEvent
(button, x, y) {}
90
91
EVENT_CLASS_TYPE
(MousePressed)
92
};
93
94
/// Fired on mouse button up.
95
/// @ingroup events
96
class
MouseButtonReleasedEvent
:
public
MouseButtonEvent
97
{
98
public
:
99
MouseButtonReleasedEvent
(
const
MouseCode
button,
int
x,
int
y)
100
:
MouseButtonEvent
(button,x,y) {}
101
102
EVENT_CLASS_TYPE
(MouseReleased)
103
};
104
}
105
}
106
}
107
108
#endif
Event.hpp
EVENT_CLASS_TYPE
#define EVENT_CLASS_TYPE(type)
Definition
Event.hpp:42
EVENT_CLASS_CATEGORY
#define EVENT_CLASS_CATEGORY(category)
Definition
Event.hpp:56
KeyCodes.hpp
MouseCode
Sleak::Input::MOUSE_CODE MouseCode
Definition
KeyCodes.hpp:592
Sleak::Event::Event
Event()
Definition
Event.hpp:65
Sleak::Event::GetName
virtual const char * GetName() const =0
Sleak::Events::Input::MouseButtonEvent::mouseX
int mouseX
Definition
MouseEvent.hpp:80
Sleak::Events::Input::MouseButtonEvent::ToString
std::string ToString() const override
Definition
MouseEvent.hpp:66
Sleak::Events::Input::MouseButtonEvent::m_Button
MouseCode m_Button
Definition
MouseEvent.hpp:79
Sleak::Events::Input::MouseButtonEvent::GetMouseButton
MouseCode GetMouseButton() const
Definition
MouseEvent.hpp:63
Sleak::Events::Input::MouseButtonEvent::MouseButtonEvent
MouseButtonEvent(const MouseCode button, int x, int y)
Definition
MouseEvent.hpp:76
Sleak::Events::Input::MouseButtonEvent::GetButtonStr
std::string GetButtonStr() const
Definition
MouseEvent.hpp:64
Sleak::Events::Input::MouseButtonEvent::mouseY
int mouseY
Definition
MouseEvent.hpp:80
Sleak::Events::Input::MouseButtonPressedEvent::MouseButtonPressedEvent
MouseButtonPressedEvent(const MouseCode button, int x, int y)
Definition
MouseEvent.hpp:88
Sleak::Events::Input::MouseButtonReleasedEvent::MouseButtonReleasedEvent
MouseButtonReleasedEvent(const MouseCode button, int x, int y)
Definition
MouseEvent.hpp:99
Sleak::Events::Input::MouseMovedEvent::MouseMovedEvent
MouseMovedEvent(const int x, const int y)
Definition
MouseEvent.hpp:15
Sleak::Events::Input::MouseMovedEvent::GetName
virtual const char * GetName() const override
Definition
MouseEvent.hpp:28
Sleak::Events::Input::MouseMovedEvent::GetX
int GetX() const
Definition
MouseEvent.hpp:17
Sleak::Events::Input::MouseMovedEvent::ToString
std::string ToString() const override
Definition
MouseEvent.hpp:20
Sleak::Events::Input::MouseMovedEvent::GetY
int GetY() const
Definition
MouseEvent.hpp:18
Sleak::Events::Input::MouseScrolledEvent::GetXOffset
float GetXOffset() const
Definition
MouseEvent.hpp:42
Sleak::Events::Input::MouseScrolledEvent::GetName
virtual const char * GetName() const override
Definition
MouseEvent.hpp:52
Sleak::Events::Input::MouseScrolledEvent::MouseScrolledEvent
MouseScrolledEvent(const float xOffset, const float yOffset)
Definition
MouseEvent.hpp:39
Sleak::Events::Input::MouseScrolledEvent::GetYOffset
float GetYOffset() const
Definition
MouseEvent.hpp:43
Sleak::Events::Input::MouseScrolledEvent::ToString
std::string ToString() const override
Definition
MouseEvent.hpp:45
Sleak::EventCategory
EventCategory
Definition
Event.hpp:33
Sleak::EventCategory::MouseButton
@ MouseButton
Definition
Event.hpp:39
Sleak::Events::Input
Keyboard and mouse event types.
Definition
KeyboardEvent.hpp:13
Sleak::Events
Concrete event types dispatched through Sleak::EventDispatcher.
Definition
ApplicationEvent.hpp:8
Sleak::Input::Button_toString
std::string Button_toString(MOUSE_CODE button)
Human-readable label for button, used in event ToString() output.
Definition
KeyCodes.hpp:564
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
include
public
Events
MouseEvent.hpp
Generated on
for SleakEngine by
1.18.0