using System.Collections;
namespace Unity.VisualScripting
{
/// <summary>
/// Creates a list from a number of item inputs.
/// </summary>
[UnitCategory("Collections/Lists")]
[UnitOrder(-1)]
[TypeIcon(typeof(IList))]
public sealed class CreateList : MultiInputUnit<object>
{
[DoNotSerialize]
protected override int minInputCount => 0;
[InspectorLabel("Elements")]
[UnitHeaderInspectable("Elements")]
[Inspectable]
public override int inputCount
{
get => base.inputCount;
set => base.inputCount = value;
}
/// <summary>
/// The created list.
/// </summary>
[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<object>(multiInputs[i]));
}
return list;
}
}
}