aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--yage/entity/component.cpp16
-rw-r--r--yage/entity/component.h10
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>