// // Created by Neirokan on 09.05.2020 // #ifndef ENGINE_RESOURCEMANAGER_H #define ENGINE_RESOURCEMANAGER_H #include #include #include #include "Mesh.h" class ResourceManager final { private: std::map> _textures; std::map> _fonts; std::map> _soundBuffers; std::map>> _objects; static ResourceManager* _instance; ResourceManager() = default; public: ResourceManager(const ResourceManager&) = delete; ResourceManager& operator=(ResourceManager&) = delete; // Unloads all currently loaded textures. static void unloadObjects(); static void unloadTextures(); static void unloadSoundBuffers(); static void unloadFonts(); static void unloadAllResources(); static void init(); static void free(); // Try to load texture from file. // If success returns pointer to texture. // Otherwise returns nullptr. static std::vector> loadObjects(const std::string& filename, const Vec3D& scale = Vec3D{1, 1, 1}); static std::shared_ptr loadTexture(const std::string& filename); static std::shared_ptr loadFont(const std::string& filename); static std::shared_ptr loadSoundBuffer(const std::string& filename); }; #endif //PSEUDO3DENGINE_RESOURCEMANAGER_H