Singularity/Library/PackageCache/com.unity.visualscripting@1.../Editor/VisualScripting.Flow/Description/UnitPortDescription.cs
2024-05-06 11:45:45 -07:00

80 lines
2.0 KiB
C#

using System;
namespace Unity.VisualScripting
{
public sealed class UnitPortDescription : IDescription
{
private string _label;
private bool _isLabelVisible = true;
internal IUnitPort portType;
public EditorTexture icon
{
get
{
if (_icon == null || !_icon.IsValid())
{
_icon = GetIcon(portType);
}
return _icon;
}
set => _icon = value;
}
private EditorTexture _icon;
public string fallbackLabel { get; set; }
public string label
{
get => _label ?? fallbackLabel;
set => _label = value;
}
public bool showLabel
{
get => !BoltFlow.Configuration.hidePortLabels || _isLabelVisible;
set => _isLabelVisible = value;
}
string IDescription.title => label;
public string summary { get; set; }
public Func<Metadata, Metadata> getMetadata { get; set; }
public void CopyFrom(UnitPortDescription other)
{
_label = other._label;
_isLabelVisible = other._isLabelVisible;
summary = other.summary;
portType = other.portType ?? portType;
getMetadata = other.getMetadata ?? getMetadata;
}
private static EditorTexture GetIcon(IUnitPort portType)
{
if (portType is IUnitControlPort)
{
return typeof(Flow).Icon();
}
else if (portType is IUnitValuePort)
{
return Icons.Type(((IUnitValuePort)portType).type);
}
else if (portType is IUnitInvalidPort)
{
return BoltCore.Resources.icons.errorState;
}
else
{
// throw new NotSupportedException();
return null;
}
}
}
}