#pragma warning disable 618 namespace Unity.VisualScripting { public interface IVariableUnitOption { string Kind(); } public abstract class VariableUnitOption : UnitOption, IVariableUnitOption where TVariableUnit : VariableUnit { protected VariableUnitOption() : base() { } protected VariableUnitOption(TVariableUnit unit) : base(unit) { } protected bool hasDefaultName => !string.IsNullOrEmpty(unit.defaultName); protected override string FavoriteKey() { return $"{unit.GetType().FullName}${unit.defaultName}"; } private string DimmedKind() { return LudiqGUIUtility.DimString($" ({Kind()})"); } public virtual string Kind() { return unit.GetType().HumanName(); } protected virtual string DefaultNameLabel() { return unit.defaultName; } protected override string Label(bool human) { if (hasDefaultName) { return DefaultNameLabel() + DimmedKind(); } else { return base.Label(human); } } protected override string Haystack(bool human) { if (hasDefaultName) { return DefaultNameLabel(); } return base.Haystack(human); } public override string SearchResultLabel(string query) { if (hasDefaultName) { return base.SearchResultLabel(query) + DimmedKind(); } else { return base.SearchResultLabel(query); } } } }