You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
63 lines
2.4 KiB
C++
63 lines
2.4 KiB
C++
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "AnimGraphPrivatePCH.h"
|
|
|
|
#include "GraphEditorActions.h"
|
|
#include "ScopedTransaction.h"
|
|
#include "K2ActionMenuBuilder.h" // for FK2ActionMenuBuilder::AddNewNodeAction()
|
|
#include "AnimGraphNode_SaveCachedPose.h"
|
|
#include "AnimGraphNode_UseCachedPose.h"
|
|
|
|
/////////////////////////////////////////////////////
|
|
// UAnimGraphNode_UseCachedPose
|
|
|
|
#define LOCTEXT_NAMESPACE "A3Nodes"
|
|
|
|
UAnimGraphNode_UseCachedPose::UAnimGraphNode_UseCachedPose(const FPostConstructInitializeProperties& PCIP)
|
|
: Super(PCIP)
|
|
{
|
|
}
|
|
|
|
FText UAnimGraphNode_UseCachedPose::GetTooltipText() const
|
|
{
|
|
return LOCTEXT("AnimGraphNode_UseCachedPose_Tooltip", "References an animation tree elsewhere in the blueprint, which will be evaluated at most once per frame.");
|
|
}
|
|
|
|
FText UAnimGraphNode_UseCachedPose::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
|
{
|
|
if (CachedNodeTitle.IsOutOfDate())
|
|
{
|
|
FFormatNamedArguments Args;
|
|
Args.Add(TEXT("CachePoseName"), FText::FromString(NameOfCache));
|
|
CachedNodeTitle = FText::Format(LOCTEXT("AnimGraphNode_UseCachedPose_Title", "Use cached pose '{CachePoseName}'"), Args);
|
|
}
|
|
return CachedNodeTitle;
|
|
}
|
|
|
|
FString UAnimGraphNode_UseCachedPose::GetNodeCategory() const
|
|
{
|
|
return TEXT("Cached Poses");
|
|
}
|
|
|
|
void UAnimGraphNode_UseCachedPose::GetMenuEntries(FGraphContextMenuBuilder& ContextMenuBuilder) const
|
|
{
|
|
//@TODO: Check the type of the from pin to make sure it's a pose
|
|
if ((ContextMenuBuilder.FromPin == NULL) || (ContextMenuBuilder.FromPin->Direction == EGPD_Input))
|
|
{
|
|
// Get a list of all save cached pose nodes
|
|
TArray<UAnimGraphNode_SaveCachedPose*> CachedPoseNodes;
|
|
FBlueprintEditorUtils::GetAllNodesOfClass<UAnimGraphNode_SaveCachedPose>(FBlueprintEditorUtils::FindBlueprintForGraphChecked(ContextMenuBuilder.CurrentGraph), /*out*/ CachedPoseNodes);
|
|
|
|
// Offer a use node for each of them
|
|
for (auto NodeIt = CachedPoseNodes.CreateIterator(); NodeIt; ++NodeIt)
|
|
{
|
|
UAnimGraphNode_UseCachedPose* UseCachedPose = NewObject<UAnimGraphNode_UseCachedPose>();
|
|
UseCachedPose->NameOfCache = (*NodeIt)->CacheName;
|
|
|
|
TSharedPtr<FEdGraphSchemaAction_K2NewNode> UseCachedPoseAction = FK2ActionMenuBuilder::AddNewNodeAction(ContextMenuBuilder, GetNodeCategory(), UseCachedPose->GetNodeTitle(ENodeTitleType::ListView), UseCachedPose->GetTooltipText().ToString(), 0, UseCachedPose->GetKeywords());
|
|
UseCachedPoseAction->NodeTemplate = UseCachedPose;
|
|
}
|
|
}
|
|
}
|
|
|
|
#undef LOCTEXT_NAMESPACE |