Files
Z3D/include/assets/dynamic_data_loaders/dynamic_texture_loader.hpp
2024-12-22 16:58:40 +01:00

61 lines
1.6 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/dynamic_read_buffers/dynamic_texture_buffer.hpp"
#include "assets/dynamic_data_stores/dynamic_texture_store.hpp"
#include "assets/dynamic_data_loader_ctx.hpp"
#include "assets/prefetch_queue.hpp"
#include "assets/prefetch_lookups/texture_prefetch_lookup.hpp"
#include "util/string_list.hpp"
/*
* [[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,
dynamic_point_cloud_store& store,
point_cloud_prefetch_lookup& id_lookup,
bool pedantic = false
);
*/
class dynamic_texture_loader
{
public:
using loader_id_type = ztu::id_type_for<dynamic_texture_loader, ztu::u8>;
explicit dynamic_texture_loader(components::texture::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,
dynamic_texture_store& store,
texture_prefetch_lookup& id_lookup,
bool pedantic = false
);
private:
ztu::string_lookup<loader_id_type> m_loader_id_lookup{};
components::texture::flags m_enabled_components{ components::texture::flags::none };
};