Updated
This commit is contained in:
164
Source/FLESHEditor/Private/FLESHGraph/FLESHGraphNode.cpp
Normal file
164
Source/FLESHEditor/Private/FLESHGraph/FLESHGraphNode.cpp
Normal file
@@ -0,0 +1,164 @@
|
||||
#include "FLESHGraph/FLESHGraphNode.h"
|
||||
#include "Logging/LogMacros.h"
|
||||
|
||||
// 定义日志类别
|
||||
DEFINE_LOG_CATEGORY_STATIC(LogFLESHGraphNode, Log, All);
|
||||
|
||||
UFLESHGraphNode::UFLESHGraphNode()
|
||||
{
|
||||
// 初始化默认值
|
||||
NodeTitle = TEXT("FLESH节点");
|
||||
NodeType = EFLESHNodeType::None;
|
||||
NodeColor = FLinearColor(0.5f, 0.5f, 0.5f);
|
||||
NodePosition = FVector2D::ZeroVector;
|
||||
}
|
||||
|
||||
FString UFLESHGraphNode::GetNodeTitle() const
|
||||
{
|
||||
return NodeTitle;
|
||||
}
|
||||
|
||||
EFLESHNodeType UFLESHGraphNode::GetNodeType() const
|
||||
{
|
||||
return NodeType;
|
||||
}
|
||||
|
||||
FLinearColor UFLESHGraphNode::GetNodeColor() const
|
||||
{
|
||||
return NodeColor;
|
||||
}
|
||||
|
||||
FVector2D UFLESHGraphNode::GetNodePosition() const
|
||||
{
|
||||
return NodePosition;
|
||||
}
|
||||
|
||||
void UFLESHGraphNode::SetNodePosition(const FVector2D& InPosition)
|
||||
{
|
||||
NodePosition = InPosition;
|
||||
}
|
||||
|
||||
TArray<UFLESHGraphNode*> UFLESHGraphNode::GetInputNodes() const
|
||||
{
|
||||
return InputNodes;
|
||||
}
|
||||
|
||||
TArray<UFLESHGraphNode*> UFLESHGraphNode::GetOutputNodes() const
|
||||
{
|
||||
return OutputNodes;
|
||||
}
|
||||
|
||||
bool UFLESHGraphNode::AddInputNode(UFLESHGraphNode* Node)
|
||||
{
|
||||
// 检查节点是否有效
|
||||
if (!Node)
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 尝试添加无效的输入节点"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查节点是否已经在输入列表中
|
||||
if (InputNodes.Contains(Node))
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 节点已经在输入列表中: %s"), *Node->GetNodeTitle());
|
||||
return false;
|
||||
}
|
||||
|
||||
// 添加到输入列表
|
||||
InputNodes.Add(Node);
|
||||
|
||||
UE_LOG(LogFLESHGraphNode, Log, TEXT("FLESH: 添加了输入节点: %s -> %s"), *Node->GetNodeTitle(), *GetNodeTitle());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UFLESHGraphNode::AddOutputNode(UFLESHGraphNode* Node)
|
||||
{
|
||||
// 检查节点是否有效
|
||||
if (!Node)
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 尝试添加无效的输出节点"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查节点是否已经在输出列表中
|
||||
if (OutputNodes.Contains(Node))
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 节点已经在输出列表中: %s"), *Node->GetNodeTitle());
|
||||
return false;
|
||||
}
|
||||
|
||||
// 添加到输出列表
|
||||
OutputNodes.Add(Node);
|
||||
|
||||
UE_LOG(LogFLESHGraphNode, Log, TEXT("FLESH: 添加了输出节点: %s -> %s"), *GetNodeTitle(), *Node->GetNodeTitle());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UFLESHGraphNode::RemoveInputNode(UFLESHGraphNode* Node)
|
||||
{
|
||||
// 检查节点是否有效
|
||||
if (!Node)
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 尝试移除无效的输入节点"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 从输入列表中移除
|
||||
bool bRemoved = InputNodes.Remove(Node) > 0;
|
||||
|
||||
if (bRemoved)
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Log, TEXT("FLESH: 移除了输入节点: %s -> %s"), *Node->GetNodeTitle(), *GetNodeTitle());
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 节点不在输入列表中: %s"), *Node->GetNodeTitle());
|
||||
}
|
||||
|
||||
return bRemoved;
|
||||
}
|
||||
|
||||
bool UFLESHGraphNode::RemoveOutputNode(UFLESHGraphNode* Node)
|
||||
{
|
||||
// 检查节点是否有效
|
||||
if (!Node)
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 尝试移除无效的输出节点"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 从输出列表中移除
|
||||
bool bRemoved = OutputNodes.Remove(Node) > 0;
|
||||
|
||||
if (bRemoved)
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Log, TEXT("FLESH: 移除了输出节点: %s -> %s"), *GetNodeTitle(), *Node->GetNodeTitle());
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogFLESHGraphNode, Warning, TEXT("FLESH: 节点不在输出列表中: %s"), *Node->GetNodeTitle());
|
||||
}
|
||||
|
||||
return bRemoved;
|
||||
}
|
||||
|
||||
bool UFLESHGraphNode::CompileNode(FFLESHNodeData& OutNodeData)
|
||||
{
|
||||
// 设置基本节点数据
|
||||
OutNodeData.NodeName = FName(*GetNodeTitle());
|
||||
OutNodeData.NodeType = GetNodeType();
|
||||
|
||||
// 设置连接的节点
|
||||
OutNodeData.ConnectedNodes.Empty();
|
||||
for (UFLESHGraphNode* OutputNode : OutputNodes)
|
||||
{
|
||||
// TODO: 获取节点索引
|
||||
// OutNodeData.ConnectedNodes.Add(NodeIndex);
|
||||
}
|
||||
|
||||
UE_LOG(LogFLESHGraphNode, Log, TEXT("FLESH: 编译了节点: %s"), *GetNodeTitle());
|
||||
|
||||
return true;
|
||||
}
|
Reference in New Issue
Block a user