Firstborn/Library/PackageCache/com.unity.visualscripting@1.../Runtime/VisualScripting.Flow/MultiInputUnit.cs

60 lines
1.4 KiB
C#
Raw Normal View History

2023-03-28 13:24:16 -04:00
using System.Collections.Generic;
using System.Collections.ObjectModel;
using UnityEngine;
namespace Unity.VisualScripting
{
public interface IMultiInputUnit : IUnit
{
int inputCount { get; set; }
ReadOnlyCollection<ValueInput> multiInputs { get; }
}
public abstract class MultiInputUnit<T> : 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<ValueInput> multiInputs { get; protected set; }
protected override void Definition()
{
var _multiInputs = new List<ValueInput>();
multiInputs = _multiInputs.AsReadOnly();
for (var i = 0; i < inputCount; i++)
{
_multiInputs.Add(ValueInput<T>(i.ToString()));
}
}
protected void InputsAllowNull()
{
foreach (var input in multiInputs)
{
input.AllowsNull();
}
}
}
}