NazaraEngine/include/Nazara/Core/AssetCatalogAppComponent.hpp

46 lines
1.2 KiB
C++

#pragma once
#include <Nazara/Core/Asset.hpp>
#include <Nazara/Core/ApplicationComponent.hpp>
#include <Nazara/Core/Export.hpp>
#include <set>
namespace Nz
{
struct AssetHeaderLite
{
std::string name;
std::filesystem::path path;
friend auto operator<=>(const AssetHeaderLite& A, const AssetHeaderLite& B)
{
return A.name <=> B.name;
}
};
NAZARA_CORE_API bool Serialize(struct SerializationContext& context, const AssetHeaderLite& header, TypeTag<AssetHeaderLite>);
NAZARA_CORE_API bool Unserialize(struct SerializationContext& context, AssetHeaderLite* header, TypeTag<AssetHeaderLite>);
class NAZARA_CORE_API AssetCatalogAppComponent
: public ApplicationComponent
{
public:
inline AssetCatalogAppComponent(ApplicationBase& app);
AssetCatalogAppComponent(const AssetCatalogAppComponent&) = delete;
AssetCatalogAppComponent(AssetCatalogAppComponent&&) = delete;
~AssetCatalogAppComponent() = default;
void AddFolder(std::string_view folder);
template<typename TResource>
inline Asset<TResource> Load(std::string_view name) const;
protected:
std::set<AssetHeaderLite> m_assets;
};
}
#include <Nazara/Core/AssetCatalogAppComponent.inl>