ecs/ecs-lua/include/ecs-lua.h

31 lines
655 B
C++

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