summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.h
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2023-06-02 23:59:27 +0200
committerGitHub <noreply@github.com>2023-06-02 23:59:27 +0200
commit4ee27404eeeb30e8f6a8a20be92d21cb6c96e8e4 (patch)
tree5101b162f2f0c89746fffbc819f4750d2e53f40d /Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.h
parent6028c056444cb5d89d72377b1547adef084211e6 (diff)
parent07307edd49497da157dcb29e5b32bb884b4f4b89 (diff)
Merge pull request #11876 from iwubcode/directfilesystem_asset_library
VideoCommon: add an asset library that loads directly from the filesystem
Diffstat (limited to 'Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.h')
-rw-r--r--Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.h b/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.h
new file mode 100644
index 0000000000..d04981dac3
--- /dev/null
+++ b/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.h
@@ -0,0 +1,37 @@
+// Copyright 2023 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#include <chrono>
+#include <filesystem>
+#include <map>
+#include <string>
+
+#include "VideoCommon/Assets/CustomAssetLibrary.h"
+
+namespace VideoCommon
+{
+class CustomTextureData;
+
+// This class implements 'CustomAssetLibrary' and loads any assets
+// directly from the filesystem
+class DirectFilesystemAssetLibrary final : public CustomAssetLibrary
+{
+public:
+ LoadInfo LoadTexture(const AssetID& asset_id, CustomTextureData* data) override;
+
+ // Gets the latest time from amongst all the files in the asset map
+ TimeType GetLastAssetWriteTime(const AssetID& asset_id) const override;
+
+ // Assigns the asset id to a map of files, how this map is read is dependent on the data
+ // For instance, a raw texture would expect the map to have a single entry and load that
+ // file as the asset. But a model file data might have its data spread across multiple files
+ void SetAssetIDMapData(const AssetID& asset_id,
+ std::map<std::string, std::filesystem::path> asset_path_map);
+
+private:
+ // Loads additional mip levels into the texture structure until _mip<N> texture is not found
+ bool LoadMips(const std::filesystem::path& asset_path, CustomTextureData* data);
+ std::map<AssetID, std::map<std::string, std::filesystem::path>> m_assetid_to_asset_map_path;
+};
+} // namespace VideoCommon