#pragma once #include #include #include #include #include #include "../resources/ResourceManager.h" class TextureLoader { public: TextureLoader( std::atomic& loadedTasks, std::string& currentLoadingFile, std::mutex& currentLoadingMutex, std::vector& assetLoadErrors, std::mutex& assetLoadErrorsMutex); void setResourceManager(resources::ResourceManager* mgr) { resourceManager_ = mgr; } SDL_Texture* loadFromImage(SDL_Renderer* renderer, const std::string& path, int* outW = nullptr, int* outH = nullptr); private: std::atomic& loadedTasks_; std::string& currentLoadingFile_; std::mutex& currentLoadingMutex_; std::vector& assetLoadErrors_; std::mutex& assetLoadErrorsMutex_; void setCurrentLoadingFile(const std::string& filename); void clearCurrentLoadingFile(); void recordAssetLoadError(const std::string& message); resources::ResourceManager* resourceManager_ = nullptr; };