Files
Z3D/include/assets/data_loaders/texture_loader.hpp

50 lines
1.2 KiB
C++

#pragma once
#include <optional>
#include <filesystem>
#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/dynamic_data_store.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<texture_loader, ztu::u8>;
explicit texture_loader(texture_components::flags enabled_components);
[[nodiscard]] std::optional<loader_id_type> 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<loader_id_type> m_loader_id_lookup{};
texture_components::flags m_enabled_components{ texture_components::flags::none };
};
}