34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include <XCEngine/Core/Asset/IProjectAssetPipelineService.h>
|
|
|
|
#include <shared_mutex>
|
|
#include <unordered_map>
|
|
|
|
namespace XCEngine {
|
|
namespace Resources {
|
|
|
|
class ProjectAssetIndex {
|
|
public:
|
|
void ResetProjectRoot(const Containers::String& projectRoot = Containers::String());
|
|
void RefreshFrom(const IProjectAssetResolver& resolver);
|
|
|
|
bool TryGetAssetRef(IProjectAssetPipelineService& pipelineService,
|
|
const Containers::String& path,
|
|
ResourceType resourceType,
|
|
AssetRef& outRef) const;
|
|
bool TryResolveAssetPath(const IProjectAssetResolver& resolver,
|
|
const AssetRef& assetRef,
|
|
Containers::String& outPath) const;
|
|
void RememberResolvedPath(const AssetGUID& assetGuid, const Containers::String& relativePath);
|
|
|
|
private:
|
|
mutable std::shared_mutex m_mutex;
|
|
Containers::String m_projectRoot;
|
|
std::unordered_map<std::string, AssetGUID> m_assetGuidByPathKey;
|
|
std::unordered_map<AssetGUID, Containers::String> m_assetPathByGuid;
|
|
};
|
|
|
|
} // namespace Resources
|
|
} // namespace XCEngine
|