#ifndef OPENMB_APPS_OPENMB_RENDERER_TEXTUREMANAGER_H #define OPENMB_APPS_OPENMB_RENDERER_TEXTUREMANAGER_H #include "Texture.hpp" #include #include #include #include namespace renderer { class TextureManager { public: TextureManager(); ~TextureManager() = default; void scanDirectory( const std::string& basePath ); std::vector getCategories() const; std::vector getSubcategories( const std::string& category ) const; std::vector getTextureNames( const std::string& category, const std::string& subcategory ) const; Texture* getTexture( const std::string& category, const std::string& subcategory, const std::string& textureName ); Texture* getCurrentTexture(); void setCurrentTexture( const std::string& category, const std::string& subcategory, const std::string& textureName ); const std::string& getCurrentCategory () const { return mCurrentCategory; } const std::string& getCurrentSubcategory () const { return mCurrentSubcategory; } const std::string& getCurrentTextureName () const { return mCurrentTextureName; } int getCurrentTextureId() const; Texture* getTextureById( int textureId ); private: struct TextureEntry { std::string mFullPath; Texture mTexture; bool mLoaded; }; std::string mBasePath; std::map>> mTextures; std::string mCurrentCategory; std::string mCurrentSubcategory; std::string mCurrentTextureName; Texture* mCurrentTexture; int mCurrentTextureId; std::map> mTextureIdToPath; int mNextTextureId; }; } // namespace renderer #endif