diff options
Diffstat (limited to 'src/crepe/api/AssetManager.h')
-rw-r--r-- | src/crepe/api/AssetManager.h | 48 |
1 files changed, 16 insertions, 32 deletions
diff --git a/src/crepe/api/AssetManager.h b/src/crepe/api/AssetManager.h index 68235c3..dbfaef3 100644 --- a/src/crepe/api/AssetManager.h +++ b/src/crepe/api/AssetManager.h @@ -7,13 +7,14 @@ namespace crepe { - /** - * \brief The AssetManager is responsible for storing and managing assets over multiple scenes. + * \brief The AssetManager is responsible for storing and managing assets over + * multiple scenes. * - * The AssetManager ensures that assets are loaded once and can be accessed across different scenes. - * It caches assets to avoid reloading them every time a scene is loaded. Assets are retained in memory - * until the AssetManager is destroyed, at which point the cached assets are cleared. + * The AssetManager ensures that assets are loaded once and can be accessed + * across different scenes. It caches assets to avoid reloading them every time + * a scene is loaded. Assets are retained in memory until the AssetManager is + * destroyed, at which point the cached assets are cleared. */ class AssetManager { @@ -22,37 +23,19 @@ private: std::unordered_map<std::string, std::any> asset_cache; private: - /** - * \brief Private constructor for the AssetManager. - * - */ AssetManager(); - - /** - * \brief Private destructor for the AssetManager. - * - */ virtual ~AssetManager(); public: - - //! Deleted copy constructor to prevent copying of the AssetManager instance. AssetManager(const AssetManager &) = delete; - - //! Deleted move constructor to prevent moving of the AssetManager instance. AssetManager(AssetManager &&) = delete; - - //! Deleted copy assignment operator to prevent copying the AssetManager instance. AssetManager & operator=(const AssetManager &) = delete; - - //! Deleted move assignment operator to prevent moving the AssetManager instance. AssetManager & operator=(AssetManager &&) = delete; /** * \brief Retrieves the singleton instance of the AssetManager. * * \return A reference to the single instance of the AssetManager. - * */ static AssetManager & get_instance(); @@ -60,19 +43,20 @@ public: /** * \brief Caches an asset by loading it from the given file path. * - * \param[in] file_path The path to the asset file to load. - * \param[in] reload If true, the asset will be reloaded from the file, even if it is already cached. - * \tparam asset The type of asset to cache (e.g., texture, sound, etc.). + * \param file_path The path to the asset file to load. + * \param reload If true, the asset will be reloaded from the file, even if + * it is already cached. + * \tparam T The type of asset to cache (e.g., texture, sound, etc.). * * \return A shared pointer to the cached asset. * - * This template function caches the asset at the given file path. If the asset is already cached - * and `reload` is false, the existing cached version will be returned. Otherwise, the asset will - * be reloaded and added to the cache. + * This template function caches the asset at the given file path. If the + * asset is already cached and `reload` is false, the existing cached version + * will be returned. Otherwise, the asset will be reloaded and added to the + * cache. */ - template <typename asset> - std::shared_ptr<asset> cache(const std::string & file_path, - bool reload = false); + template <typename T> + std::shared_ptr<T> cache(const std::string & file_path, bool reload = false); }; } // namespace crepe |