using System.Collections; namespace Unity.VisualScripting { /// /// Creates a list from a number of item inputs. /// [UnitCategory("Collections/Lists")] [UnitOrder(-1)] [TypeIcon(typeof(IList))] public sealed class CreateList : MultiInputUnit { [DoNotSerialize] protected override int minInputCount => 0; [InspectorLabel("Elements")] [UnitHeaderInspectable("Elements")] [Inspectable] public override int inputCount { get => base.inputCount; set => base.inputCount = value; } /// /// The created list. /// [DoNotSerialize] [PortLabelHidden] public ValueOutput list { get; private set; } protected override void Definition() { list = ValueOutput(nameof(list), Create); base.Definition(); foreach (var input in multiInputs) { Requirement(input, list); } InputsAllowNull(); } public IList Create(Flow flow) { var list = new AotList(); for (var i = 0; i < inputCount; i++) { list.Add(flow.GetValue(multiInputs[i])); } return list; } } }