A game about forced loneliness, made by TACStudios
1using System.Collections.Generic; 2using System.Linq; 3 4namespace Unity.VisualScripting 5{ 6 [Analyser(typeof(FlowStateTransition))] 7 public class FlowStateTransitionAnalyser : NesterStateTransitionAnalyser<FlowStateTransition> 8 { 9 public FlowStateTransitionAnalyser(GraphReference reference, FlowStateTransition transition) : base(reference, transition) { } 10 11 protected override bool IsTraversed() 12 { 13 var graph = transition.nest.graph; 14 15 if (graph == null) 16 { 17 return false; 18 } 19 20 using (var recursion = Recursion.New(1)) 21 { 22 foreach (var trigger in graph.GetUnitsRecursive(recursion).OfType<TriggerStateTransition>()) 23 { 24 if (trigger.Analysis<UnitAnalysis>(context).isEntered) 25 { 26 return true; 27 } 28 } 29 } 30 31 return false; 32 } 33 34 protected override IEnumerable<Warning> Warnings() 35 { 36 foreach (var baseWarning in base.Warnings()) 37 { 38 yield return baseWarning; 39 } 40 41 var graph = transition.nest.graph; 42 43 if (graph == null) 44 { 45 yield break; 46 } 47 48 using (var recursion = Recursion.New(1)) 49 { 50 if (!graph.GetUnitsRecursive(recursion).OfType<IEventUnit>().Any()) 51 { 52 yield return Warning.Caution("Transition graph is missing an event."); 53 } 54 } 55 56 using (var recursion = Recursion.New(1)) 57 { 58 if (!graph.GetUnitsRecursive(recursion).OfType<TriggerStateTransition>().Any()) 59 { 60 yield return Warning.Caution("Transition graph is missing a trigger unit."); 61 } 62 } 63 } 64 } 65}