#ifndef CABSTRACT_COMPONENT_HPP #define CABSTRACT_COMPONENT_HPP #include "../Utils/CSerializable.hpp" #include "../Entity/CEntity.hpp" namespace CosmicCore { /** * @brief Enum representing every type of component that can be created. */ enum class EComponentType : unsigned char { COMPONENT_SCRIPT, COMPONENT_CAMERA, COMPONENT_LIGHT, COMPONENT_RIGIDBODY, COMPONENT_COLLIDER, COMPONENT_CUSTOM, COMPONENT_RENDERER, COMPONENT_META, COMPONENT_COUNT }; constexpr std::string typeToString(EComponentType type); class CAbstractComponent : public CSerializable{ public: CAbstractComponent(CEntity& entity): m_owningEntity(entity){}; virtual ~CAbstractComponent() = default; CEntity& getEntity() { return m_owningEntity; } virtual nlohmann::json to_json() = 0; private: /** * @brief The entity to which the component is linked. */ CEntity m_owningEntity; }; } #endif