A game about forced loneliness, made by TACStudios
1using System.Linq; 2 3namespace Unity.VisualScripting 4{ 5 /// <summary> 6 /// Passes output values from this graph to the parent super unit. 7 /// </summary> 8 [UnitCategory("Nesting")] 9 [UnitOrder(2)] 10 [UnitTitle("Output")] 11 public sealed class GraphOutput : Unit 12 { 13 public override bool canDefine => graph != null; 14 15 protected override void Definition() 16 { 17 isControlRoot = true; 18 19 foreach (var controlOutputDefinition in graph.validPortDefinitions.OfType<ControlOutputDefinition>()) 20 { 21 var key = controlOutputDefinition.key; 22 23 ControlInput(key, (flow) => 24 { 25 var superUnit = flow.stack.GetParent<SubgraphUnit>(); 26 27 flow.stack.ExitParentElement(); 28 29 superUnit.EnsureDefined(); 30 31 return superUnit.controlOutputs[key]; 32 }); 33 } 34 35 foreach (var valueOutputDefinition in graph.validPortDefinitions.OfType<ValueOutputDefinition>()) 36 { 37 var key = valueOutputDefinition.key; 38 var type = valueOutputDefinition.type; 39 40 ValueInput(type, key); 41 } 42 } 43 44 protected override void AfterDefine() 45 { 46 graph.onPortDefinitionsChanged += Define; 47 } 48 49 protected override void BeforeUndefine() 50 { 51 graph.onPortDefinitionsChanged -= Define; 52 } 53 } 54}