Add non-throwing util::ecs::get_if
This commit is contained in:
parent
1bdef9134d
commit
57fb1e8f1f
1 changed files with 39 additions and 0 deletions
|
|
@ -263,6 +263,18 @@ namespace psemek::util
|
|||
template <typename Component>
|
||||
typename Component::data const & get(handle species, handle entity) const;
|
||||
|
||||
template <typename Component>
|
||||
Component * get_if(handle species);
|
||||
|
||||
template <typename Component>
|
||||
Component const * get_if(handle species) const;
|
||||
|
||||
template <typename Component>
|
||||
typename Component::data * get_if(handle species, handle entity);
|
||||
|
||||
template <typename Component>
|
||||
typename Component::data const * get_if(handle species, handle entity) const;
|
||||
|
||||
template <typename Behavior>
|
||||
void apply(Behavior && behavior) const;
|
||||
|
||||
|
|
@ -328,6 +340,33 @@ namespace psemek::util
|
|||
return const_cast<typename Component::data const &>(const_cast<ecs *>(this)->get<Component>(species, entity));
|
||||
}
|
||||
|
||||
template <typename Component>
|
||||
Component * ecs::get_if(handle species)
|
||||
{
|
||||
return species_[species]->get_species_component<Component>();
|
||||
}
|
||||
|
||||
template <typename Component>
|
||||
Component const * ecs::get_if(handle species) const
|
||||
{
|
||||
return const_cast<typename Component::data const *>(const_cast<ecs *>(this)->get<Component>(species));
|
||||
}
|
||||
|
||||
template <typename Component>
|
||||
typename Component::data * ecs::get_if(handle species, handle entity)
|
||||
{
|
||||
auto p = species_[species]->get_entity_component<Component>();
|
||||
if (p)
|
||||
return p + entity;
|
||||
return p;
|
||||
}
|
||||
|
||||
template <typename Component>
|
||||
typename Component::data const * ecs::get_if(handle species, handle entity) const
|
||||
{
|
||||
return const_cast<typename Component::data const *>(const_cast<ecs *>(this)->get<Component>(species, entity));
|
||||
}
|
||||
|
||||
template <typename Behavior>
|
||||
void ecs::apply(Behavior && behavior) const
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue