#pragma once #include #include #include #include #include namespace frostbite2D { class Actor; class UUID; class ObjectRegistry { public: static ObjectRegistry& get(); ObjectRegistry(const ObjectRegistry&) = delete; ObjectRegistry& operator=(const ObjectRegistry&) = delete; void registerObject(const UUID& uuid, Actor* actor); void unregisterObject(const UUID& uuid); Actor* getObject(const UUID& uuid); Actor* getObject(const std::string& uuidStr); bool hasObject(const UUID& uuid) const; bool hasObject(const std::string& uuidStr) const; size_t count() const; void clear(); private: ObjectRegistry() = default; ~ObjectRegistry() = default; std::map registry_; }; } // namespace frostbite2D