#pragma once // C++ #include class dLogger; /*! \file ObjectIDManager.hpp \brief A manager that handles requests for object IDs */ //! The Object ID Manager class ObjectIDManager { private: dLogger* 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(dLogger* logger); //! Generates a new persistent ID /*! \return The new persistent ID */ uint32_t GeneratePersistentID(void); void SaveToDatabase(); };