3#include <nlohmann/json.hpp>
7#include <unordered_map>
19 virtual void Update(
float deltaTime) = 0;
28 static size_t typeId = nextId++;
72 std::unordered_map<std::string, std::unique_ptr<ComponentCreatorBase>> m_creators;
75#define COMPONENT(ComponentClass) \
77 static size_t TypeId() { return eng::Component::StaticTypeId<ComponentClass>(); } \
78 size_t GetTypeId() const override { return TypeId(); } \
79 static void Register() { eng::ComponentFactory::GetInstance().RegisterComponent<ComponentClass>(std::string(#ComponentClass)); }
virtual Component * CreateComponent()=0
virtual ~ComponentCreatorBase()=default
Component * CreateComponent() override
void RegisterComponent(const std::string &name)
static ComponentFactory & GetInstance()
Component * CreateComponent(const std::string &name)
virtual void Update(float deltaTime)=0
virtual ~Component()=default
static size_t StaticTypeId()
virtual void LoadProperties(const nlohmann::json &json)
virtual size_t GetTypeId() const =0