2014-03-14 14:13:41 -04:00
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
# include "AnimGraphPrivatePCH.h"
2014-04-24 14:34:01 -04:00
# include "AnimGraphNode_RotationOffsetBlendSpace.h"
2014-03-14 14:13:41 -04:00
# include "GraphEditorActions.h"
# include "CompilerResultsLog.h"
/////////////////////////////////////////////////////
// UAnimGraphNode_RotationOffsetBlendSpace
2014-04-23 18:30:37 -04:00
# define LOCTEXT_NAMESPACE "A3Nodes"
2014-03-14 14:13:41 -04:00
UAnimGraphNode_RotationOffsetBlendSpace : : UAnimGraphNode_RotationOffsetBlendSpace ( const FPostConstructInitializeProperties & PCIP )
: Super ( PCIP )
{
}
FString UAnimGraphNode_RotationOffsetBlendSpace : : GetTooltip ( ) const
{
return FString : : Printf ( TEXT ( " AimOffset %s " ) , * ( Node . BlendSpace - > GetPathName ( ) ) ) ;
}
2014-04-23 18:30:37 -04:00
FText UAnimGraphNode_RotationOffsetBlendSpace : : GetNodeTitle ( ENodeTitleType : : Type TitleType ) const
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:30:37 -04:00
const FText BlendSpaceName ( ( Node . BlendSpace ! = NULL ) ? FText : : FromString ( Node . BlendSpace - > GetName ( ) ) : LOCTEXT ( " None " , " (None) " ) ) ;
FFormatNamedArguments Args ;
Args . Add ( TEXT ( " BlendSpaceName " ) , BlendSpaceName ) ;
if ( TitleType = = ENodeTitleType : : ListView )
{
return FText : : Format ( LOCTEXT ( " AimOffsetListTitle " , " AimOffset '{BlendSpaceName}' " ) , Args ) ;
}
else
{
return FText : : Format ( LOCTEXT ( " AimOffsetFullTitle " , " {BlendSpaceName} \n AimOffset " ) , Args ) ;
}
}
2014-03-14 14:13:41 -04:00
void UAnimGraphNode_RotationOffsetBlendSpace : : GetMenuEntries ( FGraphContextMenuBuilder & ContextMenuBuilder ) const
{
const bool bWantAimOffsets = true ;
GetBlendSpaceEntries ( bWantAimOffsets , ContextMenuBuilder ) ;
}
void UAnimGraphNode_RotationOffsetBlendSpace : : ValidateAnimNodeDuringCompilation ( class USkeleton * ForSkeleton , class FCompilerResultsLog & MessageLog )
{
if ( Node . BlendSpace = = NULL )
{
MessageLog . Error ( TEXT ( " @@ references an unknown blend space " ) , this ) ;
}
else if ( Cast < UAimOffsetBlendSpace > ( Node . BlendSpace ) = = NULL & &
Cast < UAimOffsetBlendSpace1D > ( Node . BlendSpace ) = = NULL )
{
MessageLog . Error ( TEXT ( " @@ references an invalid blend space (one that is not an aim offset) " ) , this ) ;
}
else
{
USkeleton * BlendSpaceSkeleton = Node . BlendSpace - > GetSkeleton ( ) ;
if ( BlendSpaceSkeleton & & // if blend space doesn't have skeleton, it might be due to blend space not loaded yet, @todo: wait with anim blueprint compilation until all assets are loaded?
! BlendSpaceSkeleton - > IsCompatible ( ForSkeleton ) )
{
MessageLog . Error ( TEXT ( " @@ references blendspace that uses different skeleton @@ " ) , this , BlendSpaceSkeleton ) ;
}
}
}
void UAnimGraphNode_RotationOffsetBlendSpace : : GetContextMenuActions ( const FGraphNodeContextMenuBuilder & Context ) const
{
if ( ! Context . bIsDebugging )
{
// add an option to convert to single frame
Context . MenuBuilder - > BeginSection ( " AnimGraphNodeBlendSpacePlayer " , NSLOCTEXT ( " A3Nodes " , " BlendSpaceHeading " , " Blend Space " ) ) ;
{
Context . MenuBuilder - > AddMenuEntry ( FGraphEditorCommands : : Get ( ) . OpenRelatedAsset ) ;
}
Context . MenuBuilder - > EndSection ( ) ;
}
2014-04-23 18:30:37 -04:00
}
# undef LOCTEXT_NAMESPACE