Files
UnrealEngineUWP/Engine/Source/Editor/AnimGraph/Private/AnimGraphNode_TransitionResult.cpp
jaime cifuentes e71560bdff Added compiler note and visual warnings to state machine transitions if the transition rule has logic but the flag for automatic rule based condition is set
#jira UE-170338
#rb jose.villarroel

[CL 26665714 by jaime cifuentes in ue5-main branch]
2023-07-28 03:19:20 -04:00

68 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "AnimGraphNode_TransitionResult.h"
#include "GraphEditorSettings.h"
#include "AnimStateTransitionNode.h"
/////////////////////////////////////////////////////
// UAnimGraphNode_TransitionResult
#define LOCTEXT_NAMESPACE "UAnimGraphNode_TransitionResult"
UAnimGraphNode_TransitionResult::UAnimGraphNode_TransitionResult(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
FLinearColor UAnimGraphNode_TransitionResult::GetNodeTitleColor() const
{
return GetDefault<UGraphEditorSettings>()->ResultNodeTitleColor;
}
FText UAnimGraphNode_TransitionResult::GetTooltipText() const
{
return LOCTEXT("TransitionResultTooltip", "This expression is evaluated to determine if the state transition can be taken");
}
FText UAnimGraphNode_TransitionResult::GetNodeTitle(ENodeTitleType::Type TitleType) const
{
return LOCTEXT("Result", "Result");
}
bool UAnimGraphNode_TransitionResult::ShowVisualWarning() const
{
UObject * Outer = GetOuter();
while (Outer != nullptr)
{
if (UAnimStateTransitionNode* AnimStateTransitionNode = Cast<UAnimStateTransitionNode>(Outer))
{
// only show warning if the auto rule is set and there is logic connected
if (AnimStateTransitionNode->bAutomaticRuleBasedOnSequencePlayerInState)
{
UEdGraphPin* CanExecPin = FindPin(TEXT("bCanEnterTransition"));
if (CanExecPin != nullptr && CanExecPin->LinkedTo.Num() > 0)
{
return true;
}
}
break;
}
Outer = Outer->GetOuter();
}
return false;
}
FText UAnimGraphNode_TransitionResult::GetVisualWarningTooltipText() const
{
return LOCTEXT("TransitionResult_VisualWarning", "Warning : Automatic Rule Based Transition will override graph exit rule.");
}
void UAnimGraphNode_TransitionResult::GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const
{
// Intentionally empty. This node is auto-generated when a transition graph is created.
}
#undef LOCTEXT_NAMESPACE