Files
Studio/Assets/Test/AGVNode/PortMap.cs
2025-05-21 10:10:30 +09:00

79 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using XRLib;
namespace Studio.Test
{
public class PortMap : MonoBehaviour, ISingle
{
HashSet<Port> ports = new();
public bool TryGetEmptyGeneratePort(out GeneratePort result)
{
foreach (var p in ports)
{
if (p is GeneratePort pt && p.isEmpty)
{
result = pt;
return true;
}
}
result = null;
return false;
}
internal bool TryGetFullGeneratePort(out Port targetPort)
{
foreach (var p in ports)
{
if (p is GeneratePort pt && !pt.isEmpty)
{
targetPort = pt;
return true;
}
}
targetPort = null;
return false;
}
public void Regist(Port port)
{
if(!ports.Add(port))
{
Debug.LogError("Port already exists");
return;
}
ports.Add(port);
}
internal bool TryGetEmptyInputPort(out Port inputPort)
{
foreach(var p in ports)
{
if (p is InputPort pt && pt.isEmpty)
{
inputPort = pt;
return true;
}
}
inputPort = null;
return false;
}
internal bool TryGetEmptyGeneratePorts(out List<GeneratePort> ports)
{
ports = new List<GeneratePort>();
foreach (var p in this.ports)
{
if (p is GeneratePort pt && pt.isEmpty)
{
ports.Add(pt);
}
}
return ports.Count > 0;
}
}
}