7#include <utils/logger.h>
8#include <core/serialize/Serializable.h>
9#include <core/serialize/Inspectable.h>
21 using Iterator = std::vector<Component*>::iterator;
27 LOG_INFO(
"Creating base component");
35 std::weak_ptr<ec::Entity> _entity;
47 inline virtual void initComponent() {}
49 inline virtual void start() {}
50 virtual ec::cmpID_t getID()
const = 0;
51 virtual std::string serializeID()
const = 0;
53 virtual void drawOnInspector()
override {}
59 virtual UpdateComponent* getAsUpdate() {
return nullptr; }
65 using RenderIterator = std::vector<RenderComponent*>::iterator;
67 RenderIterator _renderIterator;
70 virtual void render()
const = 0;
75 using UpdateIterator = std::vector<UpdateComponent*>::iterator;
77 UpdateIterator _updateIterator;
79 virtual void update() = 0;
81 inline UpdateIterator& getUpdateIterator() {
return _updateIterator; }
82 void setUpdateIterator(UpdateIterator it) { _updateIterator = it; }
Interfaz para que las clases se puedan ver en el inspector.
Definition Inspectable.h:6
Se encarga de serializar en un JSON lo que sea de tipo Serializable.
Definition JsonSerializer.h:11
Interfaz que hace que los objetos se vuelvan serializables.
Definition Serializable.h:7
virtual void serialize(cme::JsonSerializer &s) const override
Serializa el objeto en un JSON utilizando el JsonSerializer proporcionado.
Definition component.h:55
void setContext(std::weak_ptr< ec::Entity > ent)
Hacer saber al componente quien le controla.
Definition component.h:42
Component()
Constructor.
Definition component.h:25
virtual ~Component()
Destructor.
Definition component.h:32
virtual void deserialize(cme::JsonSerializer &s) override
Deserializa el objeto desde un JSON utilizando el JsonSerializer proporcionado.
Definition component.h:56
Componente de render.
Definition component.h:64
Componente de update.
Definition component.h:74