SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
KeyEvents.h
1#pragma once
2
3#include "spark/events/Event.h"
4#include "spark/events/Export.h"
5
6#include "spark/base/KeyCodes.h"
7
8namespace spark::events
9{
13 class SPARK_EVENTS_EXPORT KeyEvent : public Event
14 {
15 DECLARE_SPARK_RTTI(KeyEvent, Event)
16 DEFINE_EVENT_CATEGORY(EventCategory::EventCategoryInput | EventCategory::EventCategoryKeyboard)
17
18 public:
23 [[nodiscard]] base::KeyCode keyCode() const noexcept;
24
25 protected:
26 explicit KeyEvent(base::KeyCode key) noexcept;
27
28 base::KeyCode key;
29 };
30
34 class SPARK_EVENTS_EXPORT KeyPressedEvent final : public KeyEvent
35 {
36 DECLARE_SPARK_RTTI(KeyPressedEvent, KeyEvent)
37 DEFINE_EVENT_TYPE(EventType::KeyPressed)
38
39 public:
45 explicit KeyPressedEvent(base::KeyCode key, bool is_repeat = false) noexcept;
46
51 [[nodiscard]] bool isRepeat() const noexcept;
52
53 private:
54 bool m_isRepeat;
55 };
56
60 class SPARK_EVENTS_EXPORT KeyReleasedEvent final : public KeyEvent
61 {
62 DECLARE_SPARK_RTTI(KeyReleasedEvent, KeyEvent)
63 DEFINE_EVENT_TYPE(EventType::KeyReleased)
64
65 public:
70 explicit KeyReleasedEvent(base::KeyCode key) noexcept;
71 };
72
76 class SPARK_EVENTS_EXPORT KeyTypedEvent final : public KeyEvent
77 {
78 DECLARE_SPARK_RTTI(KeyTypedEvent, KeyEvent)
79 DEFINE_EVENT_TYPE(EventType::KeyTyped)
80
81 public:
86 explicit KeyTypedEvent(base::KeyCode key) noexcept;
87 };
88}
89
90IMPLEMENT_SPARK_RTTI(spark::events::KeyEvent)
91
92IMPLEMENT_SPARK_RTTI(spark::events::KeyPressedEvent)
93
94IMPLEMENT_SPARK_RTTI(spark::events::KeyReleasedEvent)
95
96IMPLEMENT_SPARK_RTTI(spark::events::KeyTypedEvent)
A base class for all events in SPARK.
Definition Event.h:53
A base class for all key events.
Definition KeyEvents.h:14
A class that represents a key pressed event.
Definition KeyEvents.h:35
A class that represents a key released event.
Definition KeyEvents.h:61
A class that represents a key typed event.
Definition KeyEvents.h:77