79 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
} |