#pragma once // C++ #include class Logger; /*! \file ObjectIDManager.hpp \brief A manager that handles requests for object IDs */ //! The Object ID Manager class ObjectIDManager { private: Logger* mLogger; static ObjectIDManager* m_Address; //!< The singleton instance uint32_t currentPersistentID; //!< The highest current persistent ID in use public: //! Return the singleton if it is initialized static ObjectIDManager* TryInstance() { return m_Address; } //! The singleton method static ObjectIDManager* Instance() { if (m_Address == nullptr) { m_Address = new ObjectIDManager; } return m_Address; } //! Initializes the manager void Initialize(Logger* logger); //! Generates a new persistent ID /*! \return The new persistent ID */ uint32_t GeneratePersistentID(); void SaveToDatabase(); };