Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

47 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "IUriManager.h"
#include "Containers/Array.h"
namespace UE::DatasmithImporter
{
class IUriResolver;
struct FUriResolverRegisterInformation
{
FUriResolverRegisterInformation(FName InName, const TSharedRef<IUriResolver>& InUriResolver)
: Name(InName)
, UriResolver(InUriResolver)
{}
FName Name;
TSharedRef<IUriResolver> UriResolver;
};
class FUriManager : public IUriManager
{
public:
// IUriManager interface begin
virtual TSharedPtr<FExternalSource> GetOrCreateExternalSource(const FSourceUri& URI) const override;
virtual bool CanResolveUri(const FSourceUri& URI) const override;
virtual void RegisterResolver(FName ResolverName, const TSharedRef<IUriResolver>& UriResolver) override;
virtual bool UnregisterResolver(FName ResolverName) override;
virtual const TArray<FName>& GetSupportedSchemes() const override;
#if WITH_EDITOR
virtual TSharedPtr<FExternalSource> BrowseExternalSource(const FName& UriScheme, const FSourceUri& DefaultSourceUri) const override;
#endif //WITH_EDITOR
// IUriManager interface end
private:
TSharedPtr<IUriResolver> GetFirstCompatibleResolver(const FSourceUri& Uri) const;
void InvalidateCache();
TArray<FUriResolverRegisterInformation> RegisteredResolvers;
mutable TArray<FName> CachedSchemes;
};
}