2014-03-14 14:13:41 -04:00
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
# include "BlueprintGraphPrivatePCH.h"
# include "KismetCompiler.h"
# include "../../../Runtime/Engine/Classes/Kismet/KismetSystemLibrary.h"
2014-05-29 16:42:22 -04:00
# include "K2Node_GetNumEnumEntries.h"
2014-03-14 14:13:41 -04:00
UK2Node_GetNumEnumEntries : : UK2Node_GetNumEnumEntries ( const class FPostConstructInitializeProperties & PCIP )
: Super ( PCIP )
{
}
void UK2Node_GetNumEnumEntries : : AllocateDefaultPins ( )
{
const UEdGraphSchema_K2 * Schema = GetDefault < UEdGraphSchema_K2 > ( ) ;
// Create the return value pin
CreatePin ( EGPD_Output , Schema - > PC_Int , TEXT ( " " ) , NULL , false , false , Schema - > PN_ReturnValue ) ;
Super : : AllocateDefaultPins ( ) ;
}
FString UK2Node_GetNumEnumEntries : : GetTooltip ( ) const
{
const FString EnumName = ( Enum ! = NULL ) ? Enum - > GetName ( ) : TEXT ( " (bad enum) " ) ;
return FString : : Printf ( * NSLOCTEXT ( " K2Node " , " GetNumEnumEntries_Tooltip " , " Returns %s_MAX value " ) . ToString ( ) , * EnumName ) ;
}
2014-04-23 18:30:37 -04:00
FText UK2Node_GetNumEnumEntries : : GetNodeTitle ( ENodeTitleType : : Type TitleType ) const
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:30:37 -04:00
const FText EnumName = ( Enum ! = NULL ) ? FText : : FromString ( Enum - > GetName ( ) ) : NSLOCTEXT ( " K2Node " , " BadEnum " , " (bad enum) " ) ;
FFormatNamedArguments Args ;
Args . Add ( TEXT ( " EnumName " ) , EnumName ) ;
return FText : : Format ( NSLOCTEXT ( " K2Node " , " GetNumEnumEntries_Title " , " Get number of entries in {EnumName} " ) , Args ) ;
}
FString UK2Node_GetNumEnumEntries : : GetNodeNativeTitle ( ENodeTitleType : : Type TitleType ) const
{
// Do not setup this function for localization, intentionally left unlocalized!
2014-03-14 14:13:41 -04:00
const FString EnumName = ( Enum ! = NULL ) ? Enum - > GetName ( ) : TEXT ( " (bad enum) " ) ;
2014-04-23 18:30:37 -04:00
return FString : : Printf ( TEXT ( " Get number of entries in %s " ) , * EnumName ) ;
2014-03-14 14:13:41 -04:00
}
void UK2Node_GetNumEnumEntries : : ExpandNode ( class FKismetCompilerContext & CompilerContext , UEdGraph * SourceGraph )
{
Super : : ExpandNode ( CompilerContext , SourceGraph ) ;
if ( CompilerContext . bIsFullCompile )
{
if ( NULL = = Enum )
{
CompilerContext . MessageLog . Error ( * FString : : Printf ( * NSLOCTEXT ( " K2Node " , " GetNumEnumEntries_Error " , " @@ must have a valid enum defined " ) . ToString ( ) ) , this ) ;
return ;
}
const UEdGraphSchema_K2 * Schema = CompilerContext . GetSchema ( ) ;
check ( NULL ! = Schema ) ;
//MAKE LITERAL
const FName FunctionName = GET_FUNCTION_NAME_CHECKED ( UKismetSystemLibrary , MakeLiteralInt ) ;
UK2Node_CallFunction * MakeLiteralInt = CompilerContext . SpawnIntermediateNode < UK2Node_CallFunction > ( this , SourceGraph ) ;
MakeLiteralInt - > SetFromFunction ( UKismetSystemLibrary : : StaticClass ( ) - > FindFunctionByName ( FunctionName ) ) ;
MakeLiteralInt - > AllocateDefaultPins ( ) ;
//OPUTPUT PIN
UEdGraphPin * OrgReturnPin = FindPinChecked ( Schema - > PN_ReturnValue ) ;
UEdGraphPin * NewReturnPin = MakeLiteralInt - > GetReturnValuePin ( ) ;
check ( NULL ! = NewReturnPin ) ;
2014-04-23 17:45:37 -04:00
CompilerContext . MovePinLinksToIntermediate ( * OrgReturnPin , * NewReturnPin ) ;
2014-03-14 14:13:41 -04:00
//INPUT PIN
UEdGraphPin * InputPin = MakeLiteralInt - > FindPinChecked ( TEXT ( " Value " ) ) ;
check ( EGPD_Input = = InputPin - > Direction ) ;
const FString DefaultValue = FString : : FromInt ( Enum - > NumEnums ( ) - 1 ) ;
InputPin - > DefaultValue = DefaultValue ;
BreakAllNodeLinks ( ) ;
}
}