5 #include <ThirdParty/EASTL-master/include/EASTL/shared_ptr.h> 6 #include <ThirdParty/EASTL-master/include/EASTL/string.h> 19 void RemoveAllEntities();
31 eastl::weak_ptr<Entity> CreateEntity(eastl::string entityName =
"",
int teamId = 0);
33 template<
typename EntityType>
43 eastl::weak_ptr<EntityType> CreateEntity(eastl::string entityName =
"");
45 template<
class EntityType,
class... Args>
56 eastl::weak_ptr<EntityType> CreateEntity(eastl::string entityName =
"", Args&&... args);
64 eastl::weak_ptr<Entity> GetEntity(uint64_t Id);
70 eastl::vector<eastl::shared_ptr<Entity>> GetAllEntities()
const;
72 template<
typename ComponentType>
77 eastl::vector<eastl::weak_ptr<ComponentType>> GetAllComponents();
79 template<
typename ComponentType>
84 eastl::vector<eastl::weak_ptr<Entity>> GetAllEntitiesWithComponent();
90 void AddEntity(eastl::shared_ptr<Entity> entityToAdd);
96 void RemoveEntity(eastl::shared_ptr<Entity> entityToRemove);
99 eastl::vector<eastl::shared_ptr<Entity>> system;
111 template <
typename EntityType>
114 AddEntity(eastl::shared_ptr<EntityType>(
new EntityType(entityName)));
116 system.back()->InitializeEntity();
118 return eastl::static_pointer_cast<EntityType,
Entity>(system.back());
121 template <
class EntityType,
class... Args>
124 AddEntity(eastl::shared_ptr<EntityType>(
new EntityType(eastl::forward<Args>(args)...)));
126 system.back()->name = entityName;
127 system.back()->InitializeEntity();
129 return eastl::static_pointer_cast<EntityType,
Entity>(system.back());
132 template <
typename ComponentType>
135 eastl::vector<eastl::weak_ptr<ComponentType>> componentsToReturn = eastl::vector<eastl::weak_ptr<ComponentType>>();
137 for (eastl::vector<eastl::shared_ptr<Entity>>::iterator it = system.begin(), end = system.end(); it != end; ++it)
139 eastl::vector<eastl::weak_ptr<ComponentType>> componentsToAdd = it->get()->GetComponents<ComponentType>();
141 componentsToReturn.reserve(componentsToReturn.size() + componentsToAdd.size());
142 componentsToReturn.insert(componentsToReturn.end(), componentsToAdd.begin(), componentsToAdd.end());
145 return componentsToReturn;
148 template <
typename ComponentType>
151 eastl::vector<eastl::weak_ptr<Entity>> entitiesToReturn = eastl::vector<eastl::weak_ptr<Entity>>();
153 for (
size_t i = 0, size = system.size(); i < size; ++i)
155 if (system[i].
get()->GetComponent<ComponentType>().expired() !=
false)
156 entitiesToReturn.push_back(system[i]);
159 return entitiesToReturn;
This object is able a holder object for components. NOTE: only the EntitySystem is allowed to create ...
eastl::vector< eastl::weak_ptr< Entity > > GetAllEntitiesWithComponent()
This method allows you to get a vector of weak pointer with entities that have the defined component ...
This object keeps track of all available entities. NOTE: only the Engine class is allowed to create t...
eastl::vector< eastl::weak_ptr< ComponentType > > GetAllComponents()
This method allows you to get a vector of weak pointers with the component type you are looking for...
eastl::weak_ptr< Entity > CreateEntity(eastl::string entityName="", int teamId=0)
Allows you to create a new Entity. This method will also add the entity to the given team if that tea...
void Update() noexcept
The general update method of the entire engine system. Call this from your main loop.