.. _program_listing_file_src_Assets_AssetManager.cpp: Program Listing for File AssetManager.cpp ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/Assets/AssetManager.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "Ramus/Assets/AssetManager.hpp" #include "Ramus/Assets/Loaders/MaterialLoader.hpp" #include "Ramus/Assets/Loaders/ModelLoader.hpp" #include "Ramus/Assets/Loaders/TextureLoader.hpp" namespace ramus { AssetManager::AssetManager() { m_materialLoader = std::make_unique(); m_modelLoader = std::make_unique(); m_textureLoader = std::make_unique(); } std::shared_ptr AssetManager::GetMaterial(const std::string& path) { return GetAsset(path, m_materialCache, *m_materialLoader); } std::shared_ptr AssetManager::GetModel(const std::string& path) { return GetAsset(path, m_modelCache, *m_modelLoader); } std::shared_ptr AssetManager::GetTexture(const std::string& path) { return GetAsset(path, m_textureCache, *m_textureLoader); } template std::shared_ptr AssetManager::GetAsset(const std::string& path, AssetCache& cache, AssetLoader& loader) { auto it = cache.find(path); if (it != cache.end()) return it->second; auto resource = loader.Load(path); if (resource) cache[path] = resource; return resource; } }