Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
ECS::EntityManager Class Reference

#include <EntityManager.h>

Classes

class  EntityContainer
 
class  IEntityContainer
 

Public Member Functions

 EntityManager (ComponentManager *componentManagerInstance)
 
 ~EntityManager ()
 
template<class T , class... ARGS>
EntityId CreateEntity (ARGS &&... args)
 
void DestroyAndRemoveEntity (EntityId entityId)
 
void DestroyEntity (EntityId entityId)
 
IEntityGetEntity (EntityId entityId)
 
EntityId GetEntityId (EntityId::value_type index) const
 
void RemoveDestroyedEntity (EntityId id)
 
void RemoveDestroyedEntities ()
 

Private Types

using EntityRegistry = eastl::unordered_map< EntityTypeId, IEntityContainer * >
 
using PendingDestroyedEntities = eastl::vector< EntityId >
 

Private Member Functions

 EntityManager (const EntityManager &)=delete
 
EntityManageroperator= (EntityManager &)=delete
 
template<class T >
EntityContainer< T > * GetEntityContainer ()
 
EntityId AqcuireEntityId (IEntity *entity)
 
void ReleaseEntityId (EntityId id)
 

Private Attributes

EntityRegistry m_EntityRegistry
 
PendingDestroyedEntities m_PendingDestroyedEntities
 
size_t m_NumPendingDestroyedEntities
 
ComponentManagerm_ComponentManagerInstance = nullptr
 Summary: The component manager instance.
 
EntityHandleTable m_EntityHandleTable
 

Detailed Description

Definition at line 38 of file EntityManager.h.

Member Typedef Documentation

◆ EntityRegistry

using ECS::EntityManager::EntityRegistry = eastl::unordered_map<EntityTypeId, IEntityContainer*>
private

Definition at line 99 of file EntityManager.h.

◆ PendingDestroyedEntities

Definition at line 102 of file EntityManager.h.

Constructor & Destructor Documentation

◆ EntityManager() [1/2]

ECS::EntityManager::EntityManager ( const EntityManager )
privatedelete

◆ EntityManager() [2/2]

ECS::EntityManager::EntityManager ( ComponentManager componentManagerInstance)

Definition at line 13 of file EntityManager.cpp.

◆ ~EntityManager()

ECS::EntityManager::~EntityManager ( )

Definition at line 22 of file EntityManager.cpp.

Member Function Documentation

◆ AqcuireEntityId()

EntityId ECS::EntityManager::AqcuireEntityId ( IEntity entity)
private

Fn: EntityId EntityManager::AqcuireEntityId(IEntity* entity);

Summary: Aqcuire entity identifier. This method will be used be IEntity class c'tor to set the entity id on creation.

Author: Tobias Stein

Date: 24/09/2017

Parameters: entity - [in,out] If non-null, the entity.

Returns: An EntityId.

Definition at line 34 of file EntityManager.cpp.

◆ CreateEntity()

template<class T , class... ARGS>
EntityId ECS::EntityManager::CreateEntity ( ARGS &&...  args)
inline

Fn: template<class T, class... ARGS> EntityId EntityManager::CreateEntity(ARGS&&... args)

Summary: Creates an entity of type T and returns its id.

Author: Tobias Stein

Date: 30/09/2017

Typeparams: T - Generic type parameter. ARGS - Type of the arguments. Parameters: args - Variable arguments providing [in,out] The arguments.

Returns: The new entity.

Definition at line 210 of file EntityManager.h.

◆ DestroyAndRemoveEntity()

void ECS::EntityManager::DestroyAndRemoveEntity ( EntityId  entityId)
inline

Definition at line 227 of file EntityManager.h.

◆ DestroyEntity()

void ECS::EntityManager::DestroyEntity ( EntityId  entityId)
inline

Definition at line 232 of file EntityManager.h.

◆ GetEntity()

IEntity * ECS::EntityManager::GetEntity ( EntityId  entityId)
inline

Fn: inline void* EntityManager::GetEntity(const EntityId id)

Summary: Get an entity object by its id.

Author: Tobias Stein

Date: 23/09/2017

Parameters: id - The identifier.

Returns: Null if it fails, else the entity.

Definition at line 261 of file EntityManager.h.

◆ GetEntityContainer()

template<class T >
EntityContainer< T > * ECS::EntityManager::GetEntityContainer ( )
inlineprivate

Fn: template<class T> inline EntityContainer<T>* EntityManager::GetEntityContainer()

Summary: Returns/Creates an entity container for entities of type T.

Author: Tobias Stein

Date: 23/09/2017

Typeparams: T - Generic type parameter.

Returns: Null if it fails, else the entity container.

Definition at line 134 of file EntityManager.h.

◆ GetEntityId()

EntityId ECS::EntityManager::GetEntityId ( EntityId::value_type  index) const
inline

Fn: inline EntityId EntityManager::GetEntityId(EntityId::index_type index)

Summary: Gets the currently stored entity identifier at the given index.

Author: Tobias Stein

Date: 2/10/2017

Parameters: index - Zero-based index of the.

Returns: The entity identifier.

Definition at line 281 of file EntityManager.h.

◆ operator=()

EntityManager & ECS::EntityManager::operator= ( EntityManager )
privatedelete

◆ ReleaseEntityId()

void ECS::EntityManager::ReleaseEntityId ( EntityId  id)
private

Fn: void EntityManager::ReleaseEntityId(EntityId id);

Summary: Releases the entity identifier for reuse.

Author: Tobias Stein

Date: 23/09/2017

Parameters:

id - The identifier.

Definition at line 39 of file EntityManager.cpp.

◆ RemoveDestroyedEntities()

void ECS::EntityManager::RemoveDestroyedEntities ( )

Fn: void EntityManager::RemoveDestroyedEntities();

Summary: Removes all destroyed entities.

Author: Tobias Stein

Date: 8/10/2017

Definition at line 64 of file EntityManager.cpp.

◆ RemoveDestroyedEntity()

void ECS::EntityManager::RemoveDestroyedEntity ( EntityId  id)

Definition at line 44 of file EntityManager.cpp.

Member Data Documentation

◆ m_ComponentManagerInstance

ComponentManager* ECS::EntityManager::m_ComponentManagerInstance = nullptr
private

Summary: The component manager instance.

Definition at line 107 of file EntityManager.h.

◆ m_EntityHandleTable

EntityHandleTable ECS::EntityManager::m_EntityHandleTable
private

Definition at line 114 of file EntityManager.h.

◆ m_EntityRegistry

EntityRegistry ECS::EntityManager::m_EntityRegistry
private

Definition at line 100 of file EntityManager.h.

◆ m_NumPendingDestroyedEntities

size_t ECS::EntityManager::m_NumPendingDestroyedEntities
private

Definition at line 104 of file EntityManager.h.

◆ m_PendingDestroyedEntities

PendingDestroyedEntities ECS::EntityManager::m_PendingDestroyedEntities
private

Definition at line 103 of file EntityManager.h.


The documentation for this class was generated from the following files: