#pragma once #include #include namespace lt::ecs { /** High-level entity convenience wrapper */ class Entity { public: Entity(memory::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() -> memory::Ref { return m_registry; } [[nodiscard]] auto id() const -> EntityId { return m_identifier; } private: memory::Ref m_registry; EntityId m_identifier; }; } // namespace lt::ecs