Loading [MathJax]/extensions/TeX/AMSmath.js
Radium Engine  1.5.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
EntityManager.hpp
1 #pragma once
2 
3 #include <Engine/RaEngine.hpp>
4 
5 #include <map>
6 #include <memory>
7 #include <string>
8 #include <vector>
9 
10 #include <Core/Utils/IndexMap.hpp>
11 #include <Core/Utils/Singleton.hpp>
12 
13 namespace Ra {
14 namespace Engine {
15 namespace Scene {
16 
17 class Entity;
18 
19 class RA_ENGINE_API EntityManager
20 {
21  public:
23  EntityManager();
24 
25  // Entity manager is non-copyable
26  EntityManager( const EntityManager& ) = delete;
27  EntityManager& operator=( const EntityManager& ) = delete;
28 
30  virtual ~EntityManager();
31 
38  Entity* createEntity( const std::string& name = "" );
39 
45  bool entityExists( const std::string& name ) const;
46 
51  void removeEntity( Core::Utils::Index idx );
52 
57  void removeEntity( Entity* entity );
58 
64  Entity* getEntity( Core::Utils::Index idx ) const;
65 
72  std::vector<Entity*> getEntities() const;
73 
74  void swapBuffers();
75 
81  Entity* getEntity( const std::string& name ) const;
82 
86  void deleteEntities();
87 
88  private:
89  Core::Utils::IndexMap<std::unique_ptr<Entity>> m_entities;
90  std::map<std::string, Core::Utils::Index> m_entitiesName;
91 };
92 
93 } // namespace Scene
94 } // namespace Engine
95 } // namespace Ra
Definition: Cage.cpp:3