using System.Collections.Generic; using System.Linq; using UnityEngine; namespace Unity.VisualScripting { [Analyser(typeof(GraphInput))] public class GraphInputAnalyser : UnitAnalyser { public GraphInputAnalyser(GraphReference reference, GraphInput unit) : base(reference, unit) { } protected override IEnumerable Warnings() { foreach (var baseWarning in base.Warnings()) { yield return baseWarning; } if (unit.graph != null) { foreach (var definitionWarning in UnitPortDefinitionUtility.Warnings(unit.graph, LinqUtility.Concat(unit.graph.controlInputDefinitions, unit.graph.valueInputDefinitions))) { yield return definitionWarning; } var inputs = unit.graph.units.Where(u => u is GraphInput).ToList(); if (inputs.Count > 1) { var firstInput = inputs[0]; if (unit != firstInput) { var graphName = string.IsNullOrEmpty(unit.graph.title) ? nameof(SubgraphUnit) : unit.graph.title; Debug.LogWarning($"Only one Input node can be used and will execute in {graphName}."); yield return Warning.Caution("Only one Input node can be used and will execute."); } } } } } }