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.hpp>
10
22
23#include "../Lua.hpp"
24
25namespace galaxy
26{
27 void Lua::inject_events() noexcept
28 {
29 auto& lua = entt::locator<sol::state>::value();
30
31 auto gf_type = lua.new_usertype<GainedFocus>(sol::constructors<GainedFocus()>());
32 gf_type["type_id"] = &entt::type_hash<GainedFocus>::value;
33
34 auto ki_type = lua.new_usertype<KeyInput>("KeyInput", sol::constructors<KeyInput()>());
35 ki_type["type_id"] = &entt::type_hash<KeyInput>::value;
36 ki_type["text"] = &KeyInput::m_text;
37
38 auto kp_type = lua.new_usertype<KeyPressed>("KeyPressed", sol::constructors<KeyPressed()>());
39 kp_type["type_id"] = &entt::type_hash<KeyPressed>::value;
40 kp_type["handled"] = &KeyPressed::m_handled;
41 kp_type["key"] = &KeyPressed::m_key;
42 kp_type["mod"] = &KeyPressed::m_mod;
43 kp_type["raw"] = &KeyPressed::m_raw;
44 kp_type["repeat"] = &KeyPressed::m_repeat;
45 kp_type["scancode"] = &KeyPressed::m_scancode;
46
47 auto kr_type = lua.new_usertype<KeyReleased>("KeyReleased", sol::constructors<KeyReleased()>());
48 kr_type["type_id"] = &entt::type_hash<KeyReleased>::value;
49 kr_type["handled"] = &KeyReleased::m_handled;
50 kr_type["key"] = &KeyReleased::m_key;
51 kr_type["mod"] = &KeyReleased::m_mod;
52 kr_type["raw"] = &KeyReleased::m_raw;
53 kr_type["repeat"] = &KeyReleased::m_repeat;
54 kr_type["scancode"] = &KeyReleased::m_scancode;
55
56 auto lf_type = lua.new_usertype<LostFocus>(sol::constructors<LostFocus()>());
57 lf_type["type_id"] = &entt::type_hash<LostFocus>::value;
58
59 auto mm_type = lua.new_usertype<MouseMoved>("MouseMoved", sol::constructors<MouseMoved()>());
60 mm_type["type_id"] = &entt::type_hash<MouseMoved>::value;
61
62 auto mp_type = lua.new_usertype<MousePressed>("MousePressed", sol::constructors<MousePressed()>());
63 mp_type["type_id"] = &entt::type_hash<MousePressed>::value;
64 mp_type["clicks"] = &MousePressed::m_clicks;
65 mp_type["handled"] = &MousePressed::m_handled;
66 mp_type["xpos"] = &MousePressed::m_xpos;
67 mp_type["ypos"] = &MousePressed::m_ypos;
68 mp_type["button"] = &MousePressed::m_button;
69
70 auto mr_type = lua.new_usertype<MouseReleased>("MouseReleased", sol::constructors<MouseReleased()>());
71 mr_type["type_id"] = &entt::type_hash<MouseReleased>::value;
72 mr_type["clicks"] = &MouseReleased::m_clicks;
73 mr_type["handled"] = &MouseReleased::m_handled;
74 mr_type["xpos"] = &MouseReleased::m_xpos;
75 mr_type["ypos"] = &MouseReleased::m_ypos;
76 mr_type["button"] = &MouseReleased::m_button;
77
78 auto mw_type = lua.new_usertype<MouseWheel>("MouseWheel", sol::constructors<MouseWheel()>());
79 mw_type["type_id"] = &entt::type_hash<MouseWheel>::value;
80 mw_type["amount_x"] = &MouseWheel::m_amount_x;
81 mw_type["amount_y"] = &MouseWheel::m_amount_y;
82 mw_type["handled"] = &MouseWheel::m_handled;
83 mw_type["mouse_x"] = &MouseWheel::m_mouse_x;
84 mw_type["mouse_y"] = &MouseWheel::m_mouse_y;
85 mw_type["total_x"] = &MouseWheel::m_total_x;
86 mw_type["total_y"] = &MouseWheel::m_total_y;
87
88 auto wc_type = lua.new_usertype<WindowClosed>("WindowClosed", sol::constructors<WindowClosed()>());
89 wc_type["type_id"] = &entt::type_hash<WindowClosed>::value;
90
91 auto wr_type = lua.new_usertype<WindowResized>("WindowResized", sol::constructors<WindowResized()>());
92 wr_type["type_id"] = &entt::type_hash<WindowResized>::value;
93 wr_type["height"] = &WindowResized::m_height;
94 wr_type["width"] = &WindowResized::m_width;
95
96 entt_sol::register_meta_event<GainedFocus>();
97 entt_sol::register_meta_event<KeyPressed>();
98 entt_sol::register_meta_event<KeyReleased>();
99 entt_sol::register_meta_event<LostFocus>();
100 entt_sol::register_meta_event<MouseMoved>();
101 entt_sol::register_meta_event<MousePressed>();
102 entt_sol::register_meta_event<MouseReleased>();
103 entt_sol::register_meta_event<MouseWheel>();
104 entt_sol::register_meta_event<WindowClosed>();
105 entt_sol::register_meta_event<WindowResized>();
106 }
107} // namespace galaxy
static void inject_events() noexcept
Inject galaxy event data objects into Lua.
Definition LuaEvents.cpp:27
Animated.cpp galaxy.
Definition Animated.cpp:16
POD tag to allow a function to accept a dispatched focus gained event.
bool m_handled
Has this event been handled/consumed/processed already.
Unicode text data from a textinput event.
Definition KeyInput.hpp:21
std::string m_text
Text.
Definition KeyInput.hpp:25
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:19
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.
Blank "Tag" class/type to signal the window is being closed.
New width and height of window being resized.
int m_height
New height of window.
int m_width
New width of window.