From 3c9b331668189e9c1a35d3d6ac6ded601f725e78 Mon Sep 17 00:00:00 2001 From: heavydemon21 Date: Tue, 12 Nov 2024 15:11:27 +0100 Subject: assetmanager --- src/crepe/api/AssetManager.h | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/crepe/api/AssetManager.h') diff --git a/src/crepe/api/AssetManager.h b/src/crepe/api/AssetManager.h index fefbed9..68235c3 100644 --- a/src/crepe/api/AssetManager.h +++ b/src/crepe/api/AssetManager.h @@ -7,24 +7,69 @@ namespace crepe { + +/** + * \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. + */ class AssetManager { private: + //! A cache that holds all the assets, accessible by their file path, over multiple scenes. std::unordered_map 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(); 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.). + * + * \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. + */ template std::shared_ptr cache(const std::string & file_path, bool reload = false); -- cgit v1.2.3 From f2509e89c02894ebd3ad992324eb300103621d26 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Tue, 12 Nov 2024 18:32:56 +0100 Subject: nitpick #30 --- src/crepe/api/AssetManager.h | 48 +++++++++++++++----------------------------- 1 file changed, 16 insertions(+), 32 deletions(-) (limited to 'src/crepe/api/AssetManager.h') 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 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 - std::shared_ptr cache(const std::string & file_path, - bool reload = false); + template + std::shared_ptr cache(const std::string & file_path, bool reload = false); }; } // namespace crepe -- cgit v1.2.3 From be1e97bc7a494963ab1567492fafcda99e36f683 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Wed, 13 Nov 2024 19:52:11 +0100 Subject: `make format` --- src/crepe/Particle.cpp | 4 ++-- src/crepe/Particle.h | 4 ++-- src/crepe/api/AssetManager.h | 3 ++- src/crepe/api/ParticleEmitter.cpp | 6 ++++-- src/crepe/facade/SDLContext.cpp | 2 +- src/crepe/system/ParticleSystem.h | 2 +- src/example/rendering.cpp | 4 +++- 7 files changed, 15 insertions(+), 10 deletions(-) (limited to 'src/crepe/api/AssetManager.h') diff --git a/src/crepe/Particle.cpp b/src/crepe/Particle.cpp index 1c3c138..582edf4 100644 --- a/src/crepe/Particle.cpp +++ b/src/crepe/Particle.cpp @@ -2,8 +2,8 @@ using namespace crepe; -void Particle::reset(uint32_t lifespan, const Vector2& position,const Vector2& velocity, - double angle) { +void Particle::reset(uint32_t lifespan, const Vector2 & position, + const Vector2 & velocity, double angle) { // Initialize the particle state this->time_in_life = 0; this->lifespan = lifespan; diff --git a/src/crepe/Particle.h b/src/crepe/Particle.h index 8782382..3eaebc3 100644 --- a/src/crepe/Particle.h +++ b/src/crepe/Particle.h @@ -43,8 +43,8 @@ public: * \param velocity The initial velocity of the particle. * \param angle The angle of the particle's trajectory or orientation. */ - void reset(uint32_t lifespan, const Vector2& position,const Vector2& velocity, - double angle); + void reset(uint32_t lifespan, const Vector2 & position, + const Vector2 & velocity, double angle); /** * \brief Updates the particle's state. * diff --git a/src/crepe/api/AssetManager.h b/src/crepe/api/AssetManager.h index dbfaef3..86a9902 100644 --- a/src/crepe/api/AssetManager.h +++ b/src/crepe/api/AssetManager.h @@ -56,7 +56,8 @@ public: * cache. */ template - std::shared_ptr cache(const std::string & file_path, bool reload = false); + std::shared_ptr cache(const std::string & file_path, + bool reload = false); }; } // namespace crepe diff --git a/src/crepe/api/ParticleEmitter.cpp b/src/crepe/api/ParticleEmitter.cpp index 43d2e69..35f960d 100644 --- a/src/crepe/api/ParticleEmitter.cpp +++ b/src/crepe/api/ParticleEmitter.cpp @@ -2,8 +2,10 @@ using namespace crepe; -ParticleEmitter::ParticleEmitter(game_object_id_t game_object_id, const Data & data) - : Component(game_object_id), data(data) { +ParticleEmitter::ParticleEmitter(game_object_id_t game_object_id, + const Data & data) + : Component(game_object_id), + data(data) { for (size_t i = 0; i < this->data.max_particles; i++) { this->data.particles.emplace_back(); } diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 46230b4..236bf8c 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -159,7 +159,7 @@ SDLContext::texture_from_path(const std::string & path) { SDL_Surface * tmp = IMG_Load(path.c_str()); if (tmp == nullptr) { - tmp = IMG_Load("../asset/texture/ERROR.png"); + tmp = IMG_Load("../asset/texture/ERROR.png"); } std::unique_ptr> diff --git a/src/crepe/system/ParticleSystem.h b/src/crepe/system/ParticleSystem.h index 664394e..d7ca148 100644 --- a/src/crepe/system/ParticleSystem.h +++ b/src/crepe/system/ParticleSystem.h @@ -10,7 +10,7 @@ class Transform; /** * \brief ParticleSystem class responsible for managing particle emission, updates, and bounds checking. */ -class ParticleSystem : public System{ +class ParticleSystem : public System { public: /** * \brief Updates all particle emitters by emitting particles, updating particle states, and checking bounds. diff --git a/src/example/rendering.cpp b/src/example/rendering.cpp index e02f6a3..827ad07 100644 --- a/src/example/rendering.cpp +++ b/src/example/rendering.cpp @@ -34,7 +34,9 @@ int main() { } { Color color(0, 0, 0, 0); - obj1.add_component(make_shared("../asset/texture/second.png"), color, FlipSettings{true, true}); + obj1.add_component( + make_shared("../asset/texture/second.png"), color, + FlipSettings{true, true}); } /* -- cgit v1.2.3