aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2018-06-23 15:51:19 +0100
committerYann Herklotz <ymherklotz@gmail.com>2018-06-23 15:51:19 +0100
commit083fcf24c50753b6f5fa04c5358be783be64407d (patch)
treee6984db9c7dc26ac95327fb7c26abd7efd52b969
parent9f92cab6b884711ca8be050b500a2880a955f001 (diff)
downloadYAGE-083fcf24c50753b6f5fa04c5358be783be64407d.tar.gz
YAGE-083fcf24c50753b6f5fa04c5358be783be64407d.zip
Some more component implementations
-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>