#pragma once #include namespace lt::ecs { /** High-level entity convenience wrapper */ class Entity { public: Entity(Ref registry, EntityId identifier) : m_registry(std::move(registry)) , m_identifier(identifier) { ensure(m_registry, "Failed to create Entity ({}): null registry", m_identifier); } template auto add(Component_T component) -> Component_T & { return m_registry->add(m_identifier, component); } template auto get() -> Component_T & { return m_registry->get(m_identifier); } template auto get() const -> const Component_T & { return m_registry->get(m_identifier); } auto get_registry() -> Ref { return m_registry; } private: Ref m_registry; EntityId m_identifier; }; } // namespace lt::ecs