Skip to main content

EntityResolver Struct Template

Callable that resolves an EntityHandle to an Entity facade. More...

Declaration​

template <typename TEntityManager> struct helios::ecs::EntityResolver<TEntityManager> { ... }

Public Member Typedefs Index​

template <typename TEntityManager>
usingHandle_type = TEntityManager::Handle_type
template <typename TEntityManager>
usingEntity_type = Entity< TEntityManager >

Public Operators Index​

template <typename TEntityManager>
auto operator() (const Handle_type handle) const noexcept -> std::optional< Entity_type >

Resolves an EntityHandle to an Entity. More...

Public Member Functions Index​

template <typename TEntityManager>
auto find (const Handle_type handle) const noexcept -> std::optional< Entity_type >

Resolves an EntityHandle to an Entity. More...

Public Member Attributes Index​

template <typename TEntityManager>
TEntityManager *constem

Non-owning pointer to the EntityManager used for validation. More...

Description​

Callable that resolves an EntityHandle to an Entity facade.

EntityResolver wraps an EntityManager pointer and provides a validation-and-wrap operation: given an EntityHandle, it checks validity via the EntityManager's versioned registry and returns a lightweight Entity wrapper if the handle is still alive.

Supports both function-call syntax and a named find() method.

Template Parameters
TEntityManager

The concrete EntityManager specialisation used for handle validation and Entity construction.

See Also

EntityHandle

See Also

EntityManager

See Also

Entity

Definition at line 37 of file EntityResolver.ixx.

Public Member Typedefs​

Entity_type​

template <typename TEntityManager>
using helios::ecs::EntityResolver< TEntityManager >::Entity_type = Entity<TEntityManager>

Definition at line 40 of file EntityResolver.ixx.

Handle_type​

template <typename TEntityManager>
using helios::ecs::EntityResolver< TEntityManager >::Handle_type = TEntityManager::Handle_type

Definition at line 39 of file EntityResolver.ixx.

39 using Handle_type = TEntityManager::Handle_type;

Public Operators​

operator()()​

template <typename TEntityManager>
std::optional< Entity_type > helios::ecs::EntityResolver< TEntityManager >::operator() (const Handle_type handle)
inline noexcept

Resolves an EntityHandle to an Entity.

Parameters
handle

The entity handle to resolve.

Returns

An Entity if the handle is valid, std::nullopt otherwise.

Definition at line 54 of file EntityResolver.ixx.

54 [[nodiscard]] std::optional<Entity_type> operator()(const Handle_type handle) const noexcept {
55 if (!em->isValid(handle)) {
56 return std::nullopt;
57 }
58 return Entity_type(handle, em);
59 }

Reference helios::ecs::EntityResolver< TEntityManager >::em.

Public Member Functions​

find()​

template <typename TEntityManager>
std::optional< Entity_type > helios::ecs::EntityResolver< TEntityManager >::find (const Handle_type handle)
inline noexcept

Resolves an EntityHandle to an Entity.

Delegates to operator().

Parameters
handle

The entity handle to resolve.

Returns

An Entity if the handle is valid, std::nullopt otherwise.

Definition at line 70 of file EntityResolver.ixx.

70 [[nodiscard]] std::optional<Entity_type> find(const Handle_type handle) const noexcept {
71 return (*this)(handle);
72 }

Public Member Attributes​

em​

template <typename TEntityManager>
TEntityManager* const helios::ecs::EntityResolver< TEntityManager >::em

Non-owning pointer to the EntityManager used for validation.

Definition at line 45 of file EntityResolver.ixx.

45 TEntityManager* const em;

Referenced by helios::ecs::EntityResolver< TEntityManager >::operator().


The documentation for this struct was generated from the following file:


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.