diff options
-rw-r--r-- | yage/entity/component.cpp | 16 | ||||
-rw-r--r-- | yage/entity/component.h | 10 |
2 files changed, 25 insertions, 1 deletions
diff --git a/yage/entity/component.cpp b/yage/entity/component.cpp index eba2ad0a..4c0eae82 100644 --- a/yage/entity/component.cpp +++ b/yage/entity/component.cpp @@ -1,8 +1,24 @@ #include "component.h" +#include <memory> + namespace yage { GroupId BaseComponent::group_id_counter_ = 0; +ComponentGroup &ComponentGroup::add(std::unique_ptr<BaseComponent> &&component) +{ + components_.push_back(std::move(component)); + return *this; +} + +ComponentGroup::Container::iterator ComponentGroup::begin() { + return components_.begin(); +} + +ComponentGroup::Container::iterator ComponentGroup::end() { + return components_.end(); +} + } // namespace yage diff --git a/yage/entity/component.h b/yage/entity/component.h index a21409ff..3f2b3a81 100644 --- a/yage/entity/component.h +++ b/yage/entity/component.h @@ -28,13 +28,21 @@ private: template <typename T> class Component : public BaseComponent { +private: GroupId getGroup() override; }; class ComponentGroup { public: - std::vector<std::unique_ptr<BaseComponent>> components_; + typedef std::vector<std::unique_ptr<BaseComponent>> Container; + + ComponentGroup &add(std::unique_ptr<BaseComponent> &&component); + Container::iterator begin(); + Container::iterator end(); + +private: + Container components_; }; template <typename T> |