#pragma once #include #include #include "util/uix.hpp" #include "util/id_type.hpp" #include "util/string_lookup.hpp" #include "util/result.hpp" #include "assets/components/texture_components.hpp" #include "assets/data/texture_data.hpp" #include "assets/data_stores/texture_store.hpp" #include "assets/data_stores.hpp" #include "assets/prefetch_queue.hpp" #include "assets/prefetch_lookups/texture_prefetch_lookup.hpp" #include "util/string_list.hpp" namespace assets { class texture_loader { public: using loader_id_type = ztu::id_type_for; explicit texture_loader(texture_components::flags enabled_components); [[nodiscard]] std::optional find_loader(const std::string_view& name); [[nodiscard]] std::error_code prefetch( loader_id_type loader_id, const ztu::string_list& directories, prefetch_queue& queue ); [[nodiscard]] std::error_code load( loader_id_type loader_id, const ztu::string_list& directories, texture_store& store, texture_prefetch_lookup& id_lookup, bool pedantic = false ); private: ztu::string_lookup m_loader_id_lookup{}; texture_components::flags m_enabled_components{ texture_components::flags::none }; }; }