2014-12-07 19:09:38 -05:00
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
# include "ReferenceViewerPrivatePCH.h"
# include "AssetThumbnail.h"
# include "AssetRegistryModule.h"
# define LOCTEXT_NAMESPACE "ReferenceViewer"
//////////////////////////////////////////////////////////////////////////
// UEdGraphNode_Reference
2014-10-14 10:29:11 -04:00
UEdGraphNode_Reference : : UEdGraphNode_Reference ( const FObjectInitializer & ObjectInitializer )
: Super ( ObjectInitializer )
2014-03-14 14:13:41 -04:00
{
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 ( ) ;
2014-04-23 18:30:37 -04:00
NodeTitle = FText : : FromString ( ShortPackageName ) ;
2014-03-14 14:13:41 -04:00
}
else
{
NodeComment = FText : : Format ( LOCTEXT ( " ReferenceNodeMultiplePackagesTitle " , " {0} nodes " ) , FText : : AsNumber ( NewPackageNames . Num ( ) ) ) . ToString ( ) ;
2014-04-23 18:30:37 -04:00
NodeTitle = FText : : Format ( LOCTEXT ( " ReferenceNodeMultiplePackagesComment " , " {0} and {1} others " ) , FText : : FromString ( ShortPackageName ) , FText : : AsNumber ( NewPackageNames . Num ( ) ) ) ;
2014-03-14 14:13:41 -04:00
}
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 ( ) ;
2014-04-23 18:30:37 -04:00
NodeTitle = LOCTEXT ( " ReferenceNodeCollapsedTitle " , " Collapsed nodes " ) ;
2014-03-14 14:13:41 -04:00
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 ( ) ) ;
}
2014-04-23 18:30:37 -04:00
FText UEdGraphNode_Reference : : GetNodeTitle ( ENodeTitleType : : Type TitleType ) const
2014-03-14 14:13:41 -04:00
{
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 )
{
2014-04-23 19:07:19 -04:00
CachedAssetData . AssetClass = FName ( TEXT ( " World " ) ) ;
2014-03-14 14:13:41 -04:00
}
}
}
}
else
{
CachedAssetData . AssetClass = FName ( TEXT ( " Multiple Nodes " ) ) ;
}
}
}
FAssetData UEdGraphNode_Reference : : GetAssetData ( ) const
{
return CachedAssetData ;
}
bool UEdGraphNode_Reference : : UsesThumbnail ( ) const
{
return bUsesThumbnail ;
}
# undef LOCTEXT_NAMESPACE