From ca85b7ee18a9d3b3c63d38127a3bd032b3e8d138 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 28 Oct 2022 23:44:00 +0300 Subject: [PATCH] Support creating entities with prescribes values of some components --- libs/util/include/psemek/util/ecs.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libs/util/include/psemek/util/ecs.hpp b/libs/util/include/psemek/util/ecs.hpp index a0debede..20b23201 100644 --- a/libs/util/include/psemek/util/ecs.hpp +++ b/libs/util/include/psemek/util/ecs.hpp @@ -550,7 +550,8 @@ namespace psemek::util static species_handle entity_species(entity_handle entity) { return {ecs_detail::unpack(entity.value).species}; } - entity_handle add_entity(species_handle species); + template + entity_handle add_entity(species_handle species, typename Components::data ... components); ecs_detail::entity_id entity_count(species_handle species) const; void remove_entity(entity_handle entity); bool entity_active(entity_handle entity); @@ -635,9 +636,11 @@ namespace psemek::util return {result}; } - inline ecs::entity_handle ecs::add_entity(species_handle species) + template + inline ecs::entity_handle ecs::add_entity(species_handle species, typename Components::data ... components) { entity_handle entity{species_[species.value]->add_entity()}; + ((get(entity) = std::move(components)), ...); for (auto const & ctor : constructors_) ctor(entity); for (auto const & ctor : species_constructors_[species.value])