23 void Update(
const float deltaT);
25 template <
typename Event>
26 void RegisterRecieveEvent(entt::dispatcher& dispatcher)
28 if (!Lua::TypeExists<Event>(lua))
31 event.LuaRegister(lua);
34 dispatcher.sink<Event>().
template connect<&LuaManager::OnEvent<Event>>(
this);
37 template <
typename Event>
38 void RegisterSendEvent(entt::dispatcher& dispatcher)
40 if (!Lua::TypeExists<Event>(lua))
43 event.LuaRegister(lua);
46 std::string functionName =
"Trigger" + DemangleWithoutNamespace<Event>() +
"Event";
48 if (!Lua::FunctionExists(lua, functionName.c_str()))
50 Lua::RegisterFunction(lua, functionName.c_str(), [
this, &dispatcher](Event event)
52 dispatcher.trigger<Event>(std::move(event));
57 bool LoadScript(
const char* path);
58 void RemoveScript(
const char* path);
60 bool IsScriptLoaded(
const char* path);
62 void EnableScript(
const char* path);
63 void DisableScript(
const char* path);
65 std::optional<sol::environment> GetScriptEnvironment(
const char* path);
73 template <
typename Event>
74 void OnEvent(
const Event& event)
76 for (
auto& [path, script] : m_scripts)
80 std::string functionName =
"On" + DemangleWithoutNamespace<Event>() +
"Event";
81 Lua::CallFunction<false>(script.environment, functionName.c_str(), event);
86 std::unordered_map<std::string, LuaScript> m_scripts;