A game about forced loneliness, made by TACStudios
1using System; 2using System.Collections.Generic; 3 4namespace Unity.VisualScripting 5{ 6 [Widget(typeof(UnifiedVariableUnit))] 7 public sealed class UnifiedVariableUnitWidget : UnitWidget<UnifiedVariableUnit> 8 { 9 public UnifiedVariableUnitWidget(FlowCanvas canvas, UnifiedVariableUnit unit) : base(canvas, unit) 10 { 11 nameInspectorConstructor = (metadata) => new VariableNameInspector(metadata, GetNameSuggestions); 12 } 13 14 protected override NodeColorMix baseColor => NodeColorMix.TealReadable; 15 16 private VariableNameInspector nameInspector; 17 private Func<Metadata, VariableNameInspector> nameInspectorConstructor; 18 19 public override Inspector GetPortInspector(IUnitPort port, Metadata metadata) 20 { 21 if (port == unit.name) 22 { 23 // This feels so hacky. The real holy grail here would be to support attribute decorators like Unity does. 24 InspectorProvider.instance.Renew(ref nameInspector, metadata, nameInspectorConstructor); 25 26 return nameInspector; 27 } 28 29 return base.GetPortInspector(port, metadata); 30 } 31 32 private IEnumerable<string> GetNameSuggestions() 33 { 34 return EditorVariablesUtility.GetVariableNameSuggestions(unit.kind, reference); 35 } 36 } 37}