light/modules/ecs/public/entity.hpp

43 lines
755 B
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
2025-09-22 18:50:59 +03:30
#include <ecs/registry.hpp>
2022-03-08 21:19:19 +03:30
2025-09-22 18:50:59 +03:30
namespace lt::ecs {
/** High-level entity convenience wrapper */
class Entity
{
public:
Entity(Ref<Registry> registry, EntityId identifier)
: m_registry(std::move(registry))
, m_identifier(identifier)
{
ensure(m_registry, "Failed to create Entity ({}): null registry", m_identifier);
}
template<typename Component_T>
auto get() -> Component_T &
{
return m_registry->get<Component_T>(m_identifier);
}
template<typename Component_T>
auto get() const -> const Component_T &
{
return m_registry->get<Component_T>(m_identifier);
}
auto get_registry() -> Ref<Registry>
{
return m_registry;
}
private:
Ref<Registry> m_registry;
EntityId m_identifier;
};
} // namespace lt::ecs