50 lines
1.2 KiB
C++
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/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<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 };
|
|
};
|
|
|
|
}
|