60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |