Files
2026-06-01 17:19:55 +02:00

56 lines
1.2 KiB
C#

using System.Collections.Generic;
using System.Text;
using UnityEngine;
[CreateAssetMenu(fileName = "NewNode", menuName = "Block Space/Nodes/Node Definition")]
public class NodeDefinition : ScriptableObject
{
[Header("Ports")]
public List<NodePortDefinition> InputPorts = new List<NodePortDefinition>();
public List<NodePortDefinition> OutputPorts = new List<NodePortDefinition>();
public string NodeName => base.name;
public string BehaviorClassName => GetSanitizedBehaviorBaseName(base.name) + "Behavior";
public NodeBoardSize GetBoardSize()
{
int num = Mathf.Max(InputPorts.Count, OutputPorts.Count);
if (num <= 3)
{
return NodeBoardSize.Small;
}
if (num <= 4)
{
return NodeBoardSize.Medium;
}
if (num <= 5)
{
return NodeBoardSize.Large;
}
return NodeBoardSize.ExtraLarge;
}
private static string GetSanitizedBehaviorBaseName(string sourceName)
{
if (string.IsNullOrWhiteSpace(sourceName))
{
return "Node";
}
StringBuilder stringBuilder = new StringBuilder(sourceName.Length);
foreach (char c in sourceName)
{
if (char.IsLetterOrDigit(c) || c == '_')
{
stringBuilder.Append(c);
}
}
if (stringBuilder.Length <= 0)
{
return "Node";
}
return stringBuilder.ToString();
}
}