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}