#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