You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
166 lines
4.4 KiB
C++
166 lines
4.4 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "ReferenceViewerPrivatePCH.h"
|
|
#include "AssetThumbnail.h"
|
|
#include "AssetRegistryModule.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "ReferenceViewer"
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// UEdGraphNode_Reference
|
|
|
|
UEdGraphNode_Reference::UEdGraphNode_Reference(const FObjectInitializer& ObjectInitializer)
|
|
: Super(ObjectInitializer)
|
|
{
|
|
DependencyPin = NULL;
|
|
ReferencerPin = NULL;
|
|
}
|
|
|
|
void UEdGraphNode_Reference::SetupReferenceNode(const FIntPoint& NodeLoc, const TArray<FName>& NewPackageNames, const FAssetData& InAssetData)
|
|
{
|
|
check(NewPackageNames.Num() > 0);
|
|
|
|
NodePosX = NodeLoc.X;
|
|
NodePosY = NodeLoc.Y;
|
|
|
|
PackageNames = NewPackageNames;
|
|
FString ShortPackageName = FPackageName::GetLongPackageAssetName(NewPackageNames[0].ToString());
|
|
if ( NewPackageNames.Num() == 1 )
|
|
{
|
|
NodeComment = NewPackageNames[0].ToString();
|
|
NodeTitle = FText::FromString(ShortPackageName);
|
|
}
|
|
else
|
|
{
|
|
NodeComment = FText::Format(LOCTEXT("ReferenceNodeMultiplePackagesTitle", "{0} nodes"), FText::AsNumber(NewPackageNames.Num())).ToString();
|
|
NodeTitle = FText::Format(LOCTEXT("ReferenceNodeMultiplePackagesComment", "{0} and {1} others"), FText::FromString(ShortPackageName), FText::AsNumber(NewPackageNames.Num()));
|
|
}
|
|
|
|
CacheAssetData(InAssetData);
|
|
AllocateDefaultPins();
|
|
}
|
|
|
|
void UEdGraphNode_Reference::SetReferenceNodeCollapsed(const FIntPoint& NodeLoc, int32 InNumReferencesExceedingMax)
|
|
{
|
|
NodePosX = NodeLoc.X;
|
|
NodePosY = NodeLoc.Y;
|
|
|
|
PackageNames.Empty();
|
|
NodeComment = FText::Format(LOCTEXT("ReferenceNodeCollapsedMessage", "{0} other nodes"), FText::AsNumber(InNumReferencesExceedingMax)).ToString();
|
|
|
|
NodeTitle = LOCTEXT("ReferenceNodeCollapsedTitle", "Collapsed nodes");
|
|
CacheAssetData(FAssetData());
|
|
AllocateDefaultPins();
|
|
}
|
|
|
|
void UEdGraphNode_Reference::AddReferencer(UEdGraphNode_Reference* ReferencerNode)
|
|
{
|
|
UEdGraphPin* ReferencerDependencyPin = ReferencerNode->GetDependencyPin();
|
|
|
|
if ( ensure(ReferencerDependencyPin) )
|
|
{
|
|
ReferencerDependencyPin->bHidden = false;
|
|
ReferencerPin->bHidden = false;
|
|
ReferencerPin->MakeLinkTo(ReferencerDependencyPin);
|
|
}
|
|
}
|
|
|
|
FName UEdGraphNode_Reference::GetPackageName() const
|
|
{
|
|
if ( PackageNames.Num() > 0 )
|
|
{
|
|
return PackageNames[0];
|
|
}
|
|
|
|
return NAME_None;
|
|
}
|
|
|
|
UEdGraph_ReferenceViewer* UEdGraphNode_Reference::GetReferenceViewerGraph() const
|
|
{
|
|
return Cast<UEdGraph_ReferenceViewer>( GetGraph() );
|
|
}
|
|
|
|
FText UEdGraphNode_Reference::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
|
{
|
|
return NodeTitle;
|
|
}
|
|
|
|
void UEdGraphNode_Reference::AllocateDefaultPins()
|
|
{
|
|
ReferencerPin = CreatePin( EEdGraphPinDirection::EGPD_Input, TEXT(""), TEXT(""), NULL, false, false, TEXT("") );
|
|
DependencyPin = CreatePin( EEdGraphPinDirection::EGPD_Output, TEXT(""), TEXT(""), NULL, false, false, TEXT("") );
|
|
|
|
ReferencerPin->bHidden = true;
|
|
DependencyPin->bHidden = true;
|
|
}
|
|
|
|
UObject* UEdGraphNode_Reference::GetJumpTargetForDoubleClick() const
|
|
{
|
|
if ( PackageNames.Num() > 0 )
|
|
{
|
|
GetReferenceGraph()->SetGraphRoot(PackageNames, FIntPoint(NodePosX, NodePosY));
|
|
GetReferenceGraph()->RebuildGraph();
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
UEdGraphPin* UEdGraphNode_Reference::GetDependencyPin()
|
|
{
|
|
return DependencyPin;
|
|
}
|
|
|
|
UEdGraphPin* UEdGraphNode_Reference::GetReferencerPin()
|
|
{
|
|
return ReferencerPin;
|
|
}
|
|
|
|
void UEdGraphNode_Reference::CacheAssetData(const FAssetData& AssetData)
|
|
{
|
|
if ( AssetData.IsValid() )
|
|
{
|
|
bUsesThumbnail = true;
|
|
CachedAssetData = AssetData;
|
|
}
|
|
else
|
|
{
|
|
CachedAssetData = FAssetData();
|
|
bUsesThumbnail = false;
|
|
|
|
if ( PackageNames.Num() == 1 )
|
|
{
|
|
const FString PackageNameStr = PackageNames[0].ToString();
|
|
if ( FPackageName::IsValidLongPackageName(PackageNameStr, true) )
|
|
{
|
|
if ( PackageNameStr.StartsWith(TEXT("/Script")) )
|
|
{
|
|
CachedAssetData.AssetClass = FName(TEXT("Code"));
|
|
}
|
|
else
|
|
{
|
|
const FString PotentiallyMapFilename = FPackageName::LongPackageNameToFilename(PackageNameStr, FPackageName::GetMapPackageExtension());
|
|
const bool bIsMapPackage = FPlatformFileManager::Get().GetPlatformFile().FileExists(*PotentiallyMapFilename);
|
|
if ( bIsMapPackage )
|
|
{
|
|
CachedAssetData.AssetClass = FName(TEXT("World"));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CachedAssetData.AssetClass = FName(TEXT("Multiple Nodes"));
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
FAssetData UEdGraphNode_Reference::GetAssetData() const
|
|
{
|
|
return CachedAssetData;
|
|
}
|
|
|
|
bool UEdGraphNode_Reference::UsesThumbnail() const
|
|
{
|
|
return bUsesThumbnail;
|
|
}
|
|
#undef LOCTEXT_NAMESPACE |