From 3702e753a5f7b31c31261c968757e19e808a84ec Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Fri, 22 Jun 2018 00:08:12 +0100 Subject: Adding components implementation --- yage/entity/component.cpp | 10 ++++++---- yage/entity/component.h | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/yage/entity/component.cpp b/yage/entity/component.cpp index 83fe4424..eba2ad0a 100644 --- a/yage/entity/component.cpp +++ b/yage/entity/component.cpp @@ -1,6 +1,8 @@ #include "component.h" -GroupId BaseComponent::getGroup() { - static GroupId group_id = group_id_counter_++; - return group_id; -} +namespace yage +{ + +GroupId BaseComponent::group_id_counter_ = 0; + +} // namespace yage diff --git a/yage/entity/component.h b/yage/entity/component.h index 84eb8b54..a21409ff 100644 --- a/yage/entity/component.h +++ b/yage/entity/component.h @@ -1,17 +1,47 @@ +#pragma once + +#include +#include +#include + +namespace yage +{ + +/** + * The component mask represents all the components that the entity is + * currently attached to. + */ +typedef std::bitset<64> ComponentMask; + typedef unsigned int GroupId; class BaseComponent { protected: - GroupId getGroup(); + virtual GroupId getGroup() = 0; + static GroupId group_id_counter_; private: friend class EntityManager; - - static GroupId group_id_counter_; }; template class Component : public BaseComponent { + GroupId getGroup() override; }; + +class ComponentGroup +{ +public: + std::vector> components_; +}; + +template +GroupId Component::getGroup() +{ + static GroupId group_id = group_id_counter_++; + return group_id; +} + +} // namespace yage -- cgit