using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; namespace Unity.VisualScripting { public interface IMultiInputUnit : IUnit { int inputCount { get; set; } ReadOnlyCollection multiInputs { get; } } public abstract class MultiInputUnit : Unit, IMultiInputUnit { [SerializeAs(nameof(inputCount))] private int _inputCount = 2; [DoNotSerialize] protected virtual int minInputCount => 2; [DoNotSerialize] [Inspectable, UnitHeaderInspectable("Inputs")] public virtual int inputCount { get { return _inputCount; } set { _inputCount = Mathf.Clamp(value, minInputCount, 10); } } [DoNotSerialize] public ReadOnlyCollection multiInputs { get; protected set; } protected override void Definition() { var _multiInputs = new List(); multiInputs = _multiInputs.AsReadOnly(); for (var i = 0; i < inputCount; i++) { _multiInputs.Add(ValueInput(i.ToString())); } } protected void InputsAllowNull() { foreach (var input in multiInputs) { input.AllowsNull(); } } } }