#pragma once #include namespace ant::core { struct entity; struct component { virtual std::string name() = 0; virtual void initialize() {} virtual void render() {} virtual void update(std::chrono::duration) {} [[nodiscard]] auto owner() -> std::shared_ptr { return m_owner.lock(); } private: std::weak_ptr m_owner; friend struct entity; }; }