Files
XCEngine/Pipeline/Core/Contracts/IProjectAssetResolver.h

30 lines
1.2 KiB
C++

#pragma once
#include "ProjectAssetTypes.h"
namespace XCEngine {
namespace Resources {
class IProjectAssetResolver {
public:
virtual ~IProjectAssetResolver() = default;
virtual Containers::String GetProjectRoot() const = 0;
virtual bool TryGetImportableResourceType(const Containers::String& requestPath,
ResourceType& outType) const = 0;
virtual bool EnsureArtifact(const Containers::String& requestPath,
ResourceType requestedType,
ProjectAssetImportedAsset& outAsset) = 0;
virtual bool TryGetAssetRef(const Containers::String& requestPath,
ResourceType resourceType,
AssetRef& outRef) const = 0;
virtual bool TryGetPrimaryAssetPath(const AssetGUID& guid,
Containers::String& outRelativePath) const = 0;
virtual bool TryResolveAssetPath(const AssetRef& assetRef,
Containers::String& outPath) const = 0;
virtual void BuildLookupSnapshot(ProjectAssetLookupSnapshot& outSnapshot) const = 0;
};
} // namespace Resources
} // namespace XCEngine