Files
EVEngine/src/engine/common/ECS.cpp
T
2022-07-16 22:00:44 -07:00

33 lines
732 B
C++

#include "common/ECS.h"
#include <simplesquirrel/simplesquirrel.hpp>
namespace eve
{
ComponentManager& ComponentManager::inst() {
static ComponentManager instance;
return instance;
}
class ScriptComponentRegister : public IComponentRegister {
public:
ScriptComponentRegister(ssq::Class cls) : data(cls.getHandle()) {
cls.addFunc("new", [](){
});
}
ssq::Array data;
};
void ComponentManager::expose(ssq::Table& table) {
table.addFunc("component", [](std::string name, ssq::Class cls) {
auto& c = inst().script_components;
if (c.find(name) == c.end()) {
c.insert(std::make_pair(name, new ScriptComponentRegister(cls)));
}
});
}
} // namespace eve