EntityRegistry.ixx File
Generic, policy-based entity registry for managing entity lifecycles. More...
Included Headers
#include "helios-ecs-config.h"
#include <vector>
#include <cassert>
#include <cstddef>
#include <helios.ecs.strategies.HashedLookupStrategy>
#include <helios.ecs.strategies.LinearLookupStrategy>
#include <helios.ecs.types.EntityHandle>
#include <helios.ecs.types.TypeDefs>
#include <helios.ecs.concepts.IsStrongIdLike>
#include <helios.ecs.concepts>
#include <helios.ecs.types.StrongId>
Namespaces Index
| namespace | helios |
| namespace | ecs |
Classes Index
| class | EntityRegistry<TDomainTag, TLookupStrategy, TAllowRemoval, TCapacity> |
|
Generic registry for creating and managing strongly-typed entity handles. More... | |
Description
Generic, policy-based entity registry for managing entity lifecycles.
File Listing
The file content with the documentation metadata removed is:
7#include "helios-ecs-config.h"
24using namespace helios::ecs::types;
25using namespace helios::ecs::types;
26using namespace helios::ecs::strategies;
27export namespace helios::ecs {
71 typename TLookupStrategy = HashedLookupStrategy,
73 size_t TCapacity = DEFAULT_ENTITY_MANAGER_CAPACITY
76 class EntityRegistry {
119 explicit EntityRegistry(const size_t capacity = TCapacity)
141 EntityId idx;
145 idx = static_cast<EntityId>(versions_.size());
146 version = InitialVersion;
147 versions_.push_back(version);
148 strongIds_.push_back(StrongId_t{});
154 version = versions_[idx];
158 strongId = StrongId<TDomainTag>(++strongIdCounter_);
182 if (entityId >= static_cast<EntityId>(versions_.size())) {
183 return InvalidVersion;
196 [[nodiscard]] StrongId<TDomainTag> strongId(const EntityId entityId) const {
197 if (entityId >= static_cast<EntityId>(strongIds_.size())) {
198 return StrongId<TDomainTag>{};
200 return static_cast<StrongId<TDomainTag>>(strongIds_[entityId]);
215 [[nodiscard]] bool isValid(const EntityHandle<TDomainTag> handle) const noexcept {
218 if (index >= static_cast<EntityId>(versions_.size())) {
242 bool destroy(const EntityHandle<TDomainTag> handle) {
249 if (!isValid(handle)) {
253 const auto index = handle.entityId;
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.