galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
LuaEvents.cpp
Go to the documentation of this file.
1
7
8#include <entt/locator/locator.hpp>
9#include <entt_sol/dispatcher/bond.hpp>
10
21
22#include "../Lua.hpp"
23
24namespace galaxy
25{
26 void Lua::inject_events() noexcept
27 {
28 auto& lua = entt::locator<sol::state>::value();
29
30 auto gf_type = lua.new_usertype<GainedFocus>(sol::constructors<GainedFocus()>());
31 gf_type["type_id"] = &entt::type_hash<GainedFocus>::value;
32 gf_type["consume"] = &GainedFocus::consume;
33 gf_type["consumed"] = &GainedFocus::consumed;
34
35 auto ki_type = lua.new_usertype<KeyInput>("KeyInput", sol::constructors<KeyInput(std::string&&)>());
36 ki_type["type_id"] = &entt::type_hash<KeyInput>::value;
37 ki_type["text"] = &KeyInput::m_text;
38 ki_type["consume"] = &KeyInput::consume;
39 ki_type["consumed"] = &KeyInput::consumed;
40
41 auto kp_type = lua.new_usertype<KeyPressed>("KeyPressed", sol::constructors<KeyPressed(const SDL_Scancode, const Keys, const KeyMods, const unsigned short, const bool)>());
42 kp_type["type_id"] = &entt::type_hash<KeyPressed>::value;
43 kp_type["key"] = &KeyPressed::m_key;
44 kp_type["mod"] = &KeyPressed::m_mod;
45 kp_type["raw"] = &KeyPressed::m_raw;
46 kp_type["repeat"] = &KeyPressed::m_repeat;
47 kp_type["scancode"] = &KeyPressed::m_scancode;
48 kp_type["consume"] = &KeyPressed::consume;
49 kp_type["consumed"] = &KeyPressed::consumed;
50
51 auto kr_type =
52 lua.new_usertype<KeyReleased>("KeyReleased", sol::constructors<KeyReleased(const SDL_Scancode, const Keys, const KeyMods, const unsigned short, const bool)>());
53 kr_type["type_id"] = &entt::type_hash<KeyReleased>::value;
54 kr_type["key"] = &KeyReleased::m_key;
55 kr_type["mod"] = &KeyReleased::m_mod;
56 kr_type["raw"] = &KeyReleased::m_raw;
57 kr_type["repeat"] = &KeyReleased::m_repeat;
58 kr_type["scancode"] = &KeyReleased::m_scancode;
59 kr_type["consume"] = &KeyReleased::consume;
60 kr_type["consumed"] = &KeyReleased::consumed;
61
62 auto lf_type = lua.new_usertype<LostFocus>(sol::constructors<LostFocus()>());
63 lf_type["type_id"] = &entt::type_hash<LostFocus>::value;
64 lf_type["consume"] = &LostFocus::consume;
65 lf_type["consumed"] = &LostFocus::consumed;
66
67 auto mm_type = lua.new_usertype<MouseMoved>("MouseMoved", sol::constructors<MouseMoved(const float, const float, const float, const float)>());
68 mm_type["type_id"] = &entt::type_hash<MouseMoved>::value;
69 mm_type["consume"] = &MouseMoved::consume;
70 mm_type["consumed"] = &MouseMoved::consumed;
71
72 auto mp_type = lua.new_usertype<MousePressed>("MousePressed", sol::constructors<MousePressed(const float, const float, const int, const MouseButton)>());
73 mp_type["type_id"] = &entt::type_hash<MousePressed>::value;
74 mp_type["clicks"] = &MousePressed::m_clicks;
75 mp_type["xpos"] = &MousePressed::m_xpos;
76 mp_type["ypos"] = &MousePressed::m_ypos;
77 mp_type["button"] = &MousePressed::m_button;
78 mp_type["consume"] = &MousePressed::consume;
79 mp_type["consumed"] = &MousePressed::consumed;
80
81 auto mr_type = lua.new_usertype<MouseReleased>("MouseReleased", sol::constructors<MouseReleased(const float, const float, const int, const MouseButton)>());
82 mr_type["type_id"] = &entt::type_hash<MouseReleased>::value;
83 mr_type["clicks"] = &MouseReleased::m_clicks;
84 mr_type["xpos"] = &MouseReleased::m_xpos;
85 mr_type["ypos"] = &MouseReleased::m_ypos;
86 mr_type["button"] = &MouseReleased::m_button;
87 mr_type["consume"] = &MouseReleased::consume;
88 mr_type["consumed"] = &MouseReleased::consumed;
89
90 auto mw_type = lua.new_usertype<MouseWheel>(
91 "MouseWheel",
92 sol::constructors<MouseWheel(const float, const float, const SDL_MouseWheelDirection, const float, const float, const int, const int)>()
93 );
94 mw_type["type_id"] = &entt::type_hash<MouseWheel>::value;
95 mw_type["amount_x"] = &MouseWheel::m_amount_x;
96 mw_type["amount_y"] = &MouseWheel::m_amount_y;
97 mw_type["mouse_x"] = &MouseWheel::m_mouse_x;
98 mw_type["mouse_y"] = &MouseWheel::m_mouse_y;
99 mw_type["total_x"] = &MouseWheel::m_total_x;
100 mw_type["total_y"] = &MouseWheel::m_total_y;
101 mw_type["consume"] = &MouseWheel::consume;
102 mw_type["consumed"] = &MouseWheel::consumed;
103
104 auto wr_type = lua.new_usertype<WindowResized>("WindowResized", sol::constructors<WindowResized(const int, const int)>());
105 wr_type["type_id"] = &entt::type_hash<WindowResized>::value;
106 wr_type["height"] = &WindowResized::m_height;
107 wr_type["width"] = &WindowResized::m_width;
108 wr_type["consume"] = &WindowResized::consume;
109 wr_type["consumed"] = &WindowResized::consumed;
110
111 entt_sol::register_meta_event<GainedFocus>();
112 entt_sol::register_meta_event<KeyPressed>();
113 entt_sol::register_meta_event<KeyReleased>();
114 entt_sol::register_meta_event<LostFocus>();
115 entt_sol::register_meta_event<MouseMoved>();
116 entt_sol::register_meta_event<MousePressed>();
117 entt_sol::register_meta_event<MouseReleased>();
118 entt_sol::register_meta_event<MouseWheel>();
119 entt_sol::register_meta_event<WindowResized>();
120 }
121} // namespace galaxy
bool consumed() const noexcept
Is this event already consumed?
Definition Event.cpp:56
void consume() noexcept
Mark this event as consumed.
Definition Event.cpp:51
static void inject_events() noexcept
Inject galaxy event data objects into Lua.
Definition LuaEvents.cpp:26
Application.hpp galaxy.
POD tag to allow a function to accept a dispatched focus gained event.
Unicode text data from a textinput event.
Definition KeyInput.hpp:21
std::string m_text
Text.
Definition KeyInput.hpp:32
Contains data on key that was pressed.
bool m_repeat
True if this is a key repeat.
KeyMods m_mod
Current key modifiers.
unsigned short m_raw
The platform dependent scancode for this event.
SDL_Scancode m_scancode
SDL physical key code.
Keys m_key
SDL virtual key code.
Contains data on key that was released.
bool m_repeat
True if this is a key repeat.
SDL_Scancode m_scancode
SDL physical key code.
Keys m_key
SDL virtual key code.
unsigned short m_raw
The platform dependent scancode for this event.
KeyMods m_mod
Current key modifiers.
POD tag to allow a function to accept a dispatched focus lost event.
Definition LostFocus.hpp:21
Contains data relating to a mouse moved event.
Contains data relating to a mouse pressed event.
MouseButton m_button
The mouse button index.
float m_ypos
Y coordinate, relative to window.
int m_clicks
1 for single-click, 2 for double-click, etc.
float m_xpos
X coordinate, relative to window.
Contains data relating to a mouse released event.
int m_clicks
1 for single-click, 2 for double-click, etc.
float m_xpos
X coordinate, relative to window.
float m_ypos
Y coordinate, relative to window.
MouseButton m_button
The mouse button index.
Contains mouse wheel movement data.
float m_amount_y
The amount scrolled vertically, positive away from the user and negative toward the user.
int m_total_y
The amount scrolled vertically, accumulated to whole scroll "ticks".
int m_total_x
The amount scrolled horizontally, accumulated to whole scroll "ticks".
float m_mouse_y
Y coordinate, relative to window.
float m_mouse_x
X coordinate, relative to window.
float m_amount_x
The amount scrolled horizontally, positive to the right and negative to the left.
New width and height of window being resized.
int m_height
New height of window.
int m_width
New width of window.