#pragma once #include "sol.hpp" #include "ecs.h" #include namespace ecs::lua { struct LuaWrapper : Component { LuaWrapper(sol::object _object) : object(_object) {} LuaWrapper() {} sol::object object; }; template void register_component(sol::state& lua, Args... args) { lua.new_usertype(get_typename(), "new", sol::factories([](Constructor... constructor) { return new T(constructor...); }), args... ); lua.set_function("_internal_to_" + get_typename(), [] (Component* component) { return (T*)component; }); } void init(sol::state& lua); }