46 lines
1.2 KiB
C++
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>
|