Stage &stage = get_stage(*parent);
Pool<T> &pool = stage.get_pools().get_pool<T>();
+ bool first_created = !pool.get_capacity();
this->ptr = pool.create(parent, std::forward<Args>(args)...);
if constexpr(std::is_base_of_v<Component, T>)
{
+ if(first_created)
+ stage.get_reflector().get_or_create_class<T>().template set_polymorphic_base<Component>(**this);
parent->add_component(*this);
stage.get_event_source().emit<Events::ComponentCreated>(*this);
}
else
{
+ if(first_created)
+ stage.get_reflector().get_or_create_class<T>().template set_polymorphic_base<Entity>(**this);
parent->add_child(*this);
stage.get_event_source().emit<Events::EntityCreated>(*this);
}