Core: Rework VirtualDirectory to allow custom directory resolving

This commit is contained in:
SirLynix
2023-03-03 13:21:48 +01:00
parent 0494a72849
commit 36dd245564
10 changed files with 346 additions and 263 deletions

View File

@@ -3,8 +3,32 @@
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Core/AppFilesystemComponent.hpp>
#include <Nazara/Core/VirtualDirectoryFilesystemResolver.hpp>
#include <Nazara/Core/Debug.hpp>
namespace Nz
{
const VirtualDirectoryPtr& AppFilesystemComponent::Mount(std::string_view name, std::filesystem::path filepath)
{
return Mount(name, std::make_shared<VirtualDirectory>(std::make_shared<VirtualDirectoryFilesystemResolver>(std::move(filepath))));
}
const VirtualDirectoryPtr& AppFilesystemComponent::Mount(std::string_view name, VirtualDirectoryPtr directory)
{
if (name.empty())
{
m_rootDirectory = std::move(directory);
return m_rootDirectory;
}
if (!m_rootDirectory)
m_rootDirectory = std::make_shared<VirtualDirectory>();
return m_rootDirectory->StoreDirectory(name, std::move(directory)).directory;
}
void AppFilesystemComponent::MountDefaultDirectories()
{
m_rootDirectory = std::make_shared<VirtualDirectory>(std::make_shared<VirtualDirectoryFilesystemResolver>(std::filesystem::current_path()));
}
}