ComboInput/Source/ComboInputEditor/Private/Ed/EdComboActionGraphNode.cpp

183 lines
4.3 KiB
C++

// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#include "EdComboActionGraphNode.h"
#include "Ed/EdComboActionGraph.h"
#include "Helpers/ComboActionEditorBFC.h"
#include "Nodes/ComboActionGraphNode.h"
#include "Settings/ComboActionGraphEditorSettings.h"
#include "Settings/FComboActionGraphEditorStyle.h"
#define LOCTEXT_NAMESPACE "UEdComboActionGraphNode"
DEFINE_LOG_CATEGORY(LogEdComboActionGraphNode);
UEdComboActionGraphNode::UEdComboActionGraphNode()
{
bCanRenameNode = true;
bAllowCopy = true;
bAllowDelete = true;
bAllowDuplicate = true;
bAllowPaste = true;
}
void UEdComboActionGraphNode::SetComboActionGraphNode(UComboActionGraphNode *NewNode)
{
this->ComboActionGraphNode = NewNode;
if (this->ComboActionGraphNode)
{
this->bAllowCopy = this->ComboActionGraphNode->bAllowCopy;
this->bAllowDelete = this->ComboActionGraphNode->bAllowDelete;
this->bAllowDuplicate = this->ComboActionGraphNode->bAllowPaste;
this->bAllowPaste = this->ComboActionGraphNode->bAllowPaste;
}
}
UEdComboActionGraph *UEdComboActionGraphNode::GetEdComboActionGraph() const
{
return Cast<UEdComboActionGraph>(this->GetGraph());
};
void UEdComboActionGraphNode::AllocateDefaultPins()
{
if (this->ComboActionGraphNode == nullptr)
{
UE_LOG(LogEdComboActionGraphNode, Error, TEXT("[AllocateDefaultPins] Cannot find Owning Graph Node!"));
return;
}
if (this->ComboActionGraphNode->bAllowInputNodes)
{
this->CreatePin(EGPD_Input, "MultipleNodes", FName(), TEXT("In"));
}
if (this->ComboActionGraphNode->bAllowOutputNodes)
{
this->CreatePin(EGPD_Output, "MultipleNodes", FName(), TEXT("Out"));
}
}
FText UEdComboActionGraphNode::GetNodeTitle(ENodeTitleType::Type TitleType) const
{
return UComboActionEditorBFC::GetNodeTitle(this->ComboActionGraphNode);
}
void UEdComboActionGraphNode::PrepareForCopying()
{
this->ComboActionGraphNode->Rename(nullptr, this, REN_DontCreateRedirectors | REN_DoNotDirty);
}
void UEdComboActionGraphNode::AutowireNewNode(UEdGraphPin* FromPin)
{
Super::AutowireNewNode(FromPin);
if (FromPin != nullptr)
{
if (GetSchema()->TryCreateConnection(FromPin, GetInputPin()))
{
FromPin->GetOwningNode()->NodeConnectionListChanged();
}
}
}
FLinearColor UEdComboActionGraphNode::GetBackgroundColor() const
{
// Getting Node colour based on the Settings if any found, otherwise use this logic
if (UComboActionGraphEditorSettings *GraphEditorSettings = GetMutableDefault<UComboActionGraphEditorSettings>())
{
FLinearColor ReturnColour;
if (GraphEditorSettings->FindNodeBackgroundColourOverride(this->ComboActionGraphNode->GetClass(), ReturnColour))
{
return ReturnColour;
}
}
return this->ComboActionGraphNode ? this->ComboActionGraphNode->GetBackgroundColor() : FLinearColor::Black;
}
UEdGraphPin* UEdComboActionGraphNode::GetInputPin() const
{
return Pins[0];
}
UEdGraphPin* UEdComboActionGraphNode::GetOutputPin() const
{
if (Pins.IsValidIndex(1))
{
return Pins[1];
}
return Pins[0];
}
bool UEdComboActionGraphNode::CanUserDeleteNode() const
{
if(!Super::CanUserDeleteNode())
{
return false;
}
if (this->ComboActionGraphNode)
{
return this->ComboActionGraphNode->bAllowDelete;
}
return bAllowDelete;
}
bool UEdComboActionGraphNode::CanDuplicateNode() const
{
if(!Super::CanUserDeleteNode())
{
return false;
}
if (this->ComboActionGraphNode)
{
return this->ComboActionGraphNode->bAllowCopy;
}
return bAllowCopy;
}
bool UEdComboActionGraphNode::CanUserPasteNodes() const
{
if (this->ComboActionGraphNode)
{
return this->ComboActionGraphNode->bAllowPaste;
}
return bAllowPaste;
}
FText UEdComboActionGraphNode::GetTooltipText() const
{
if (this->ComboActionGraphNode)
{
return this->ComboActionGraphNode->GetNodeTooltipText();
}
return NSLOCTEXT("UEdComboActionGraphNode", "DefaultToolTip", "Mountea Dialogue Node");
}
FSlateIcon UEdComboActionGraphNode::GetIconAndTint(FLinearColor& OutColor) const
{
static const FSlateIcon Icon = FSlateIcon(FComboActionGraphEditorStyle::GetAppStyleSetName(), "MDSStyleSet.Node.Icon.small");
OutColor = this->ComboActionGraphNode->GetBackgroundColor();
return Icon;
}
void UEdComboActionGraphNode::PostEditUndo()
{
Super::PostEditUndo();
}
void UEdComboActionGraphNode::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
}
#undef LOCTEXT_NAMESPACE