using System.Collections.Generic; using System.Linq; namespace Unity.VisualScripting { [UnitOrder(304)] public abstract class Average : MultiInputUnit { /// /// The average. /// [DoNotSerialize] [PortLabelHidden] public ValueOutput average { get; private set; } protected override void Definition() { base.Definition(); average = ValueOutput(nameof(average), Operation).Predictable(); foreach (var multiInput in multiInputs) { Requirement(multiInput, average); } } public abstract T Operation(T a, T b); public abstract T Operation(IEnumerable values); public T Operation(Flow flow) { if (inputCount == 2) { return Operation(flow.GetValue(multiInputs[0]), flow.GetValue(multiInputs[1])); } else { return Operation(multiInputs.Select(flow.GetValue)); } } } }