Files
UnrealEngine/Engine/Plugins/Enterprise/DatasmithImporter/Source/DirectLinkExtension/Public/DirectLinkUriResolver.h
2025-05-18 13:04:45 +08:00

58 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/UnrealString.h"
#include "IUriResolver.h"
#include "Misc/Guid.h"
namespace DirectLink
{
using FSourceHandle = FGuid;
}
namespace UE::DatasmithImporter
{
class FDirectLinkExternalSource;
struct FDirectLinkSourceDescription
{
FString ComputerName;
FString ExecutableName;
FString EndpointName;
FString SourceName;
TOptional<FGuid> SourceId;
};
class DIRECTLINKEXTENSION_API FDirectLinkUriResolver : public IUriResolver
{
public:
// IUriResolver interface begin
virtual TSharedPtr<FExternalSource> GetOrCreateExternalSource(const FSourceUri& Uri) const override;
virtual bool CanResolveUri(const FSourceUri& Uri) const override;
virtual FName GetScheme() const override { return FName(GetDirectLinkScheme()); }
#if WITH_EDITOR
virtual TSharedPtr<FExternalSource> BrowseExternalSource(const FSourceUri& DefaultSourceUri) const override
{
return {};
}
#endif
// IUriResolver interface end
/**
* Try to parse the DirectLink source description components from an URI.
* Return an unset TOptional if the parsing failed.
*/
static TOptional<FDirectLinkSourceDescription> TryParseDirectLinkUri(const FSourceUri& Uri);
/**
* Return the scheme used for DirectLink URIs : "directlink"
*/
static const FString& GetDirectLinkScheme();
/**
* Return the string "SourceId" used in URI queries for specifying the handle of the directlink source.
*/
static const FString& GetSourceIdPropertyName();
};
}