GameKit  0.0.1a
C++ gamedev tools
SceneObjectList.hpp
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: SceneObjectList.hpp
5  *
6  * Description:
7  *
8  * Created: 17/01/2018 19:36:14
9  *
10  * Author: Quentin Bazin, <quent42340@gmail.com>
11  *
12  * =====================================================================================
13  */
14 #ifndef GK_SCENEOBJECTLIST_HPP_
15 #define GK_SCENEOBJECTLIST_HPP_
16 
17 #include <algorithm>
18 #include <deque>
19 
20 #include "gk/scene/SceneObject.hpp"
21 
22 namespace gk {
23 
25  using iterator = std::deque<SceneObject>::iterator;
26  using const_iterator = std::deque<SceneObject>::const_iterator;
27 
28  public:
30  m_objects.emplace_back(std::move(object));
31  return m_objects.back();
32  }
33 
34  SceneObject *findByName(const std::string &name) {
35  auto it = std::find_if(m_objects.begin(), m_objects.end(), [name] (SceneObject &object) { return object.name() == name; });
36  if (it == m_objects.end())
37  return nullptr;
38  else
39  return &*it;
40  }
41 
42  void removeByName(const std::string &name) {
43  auto it = std::find_if(m_objects.begin(), m_objects.end(), [name] (SceneObject &object) { return object.name() == name; });
44  if (it != m_objects.end())
45  m_objects.erase(it);
46  }
47 
48  void pop() { m_objects.pop_back(); }
49 
50  SceneObject &operator[](size_t n) { return m_objects[n]; }
51 
52  void remove(size_t n) { m_objects.erase(m_objects.begin() + n); }
53 
54  iterator begin() noexcept { return m_objects.begin(); }
55  iterator end() noexcept { return m_objects.end(); }
56 
57  const_iterator begin() const noexcept { return m_objects.begin(); }
58  const_iterator end() const noexcept { return m_objects.end(); }
59 
60  size_t size() const { return m_objects.size(); }
61 
62  private:
63  std::deque<SceneObject> m_objects;
64 };
65 
66 } // namespace gk
67 
68 #endif // GK_SCENEOBJECTLIST_HPP_
SceneObject * findByName(const std::string &name)
SceneObject & operator[](size_t n)
std::deque< SceneObject >::const_iterator const_iterator
std::deque< SceneObject > m_objects
std::deque< SceneObject >::iterator iterator
void removeByName(const std::string &name)
const_iterator end() const noexcept
iterator begin() noexcept
SceneObject & addObject(SceneObject &&object)
const_iterator begin() const noexcept
iterator end() noexcept