Files
Studio/Assets/Scripts/Canvas_Component.cs
2025-02-21 11:57:09 +09:00

56 lines
2.2 KiB
C#

using NUnit.Framework;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UI.Extensions;
using XRLib.UI;
namespace XED.UI
{
public class Canvas_Component : CanvasBase
{
public UILineRenderer prf_LineRenderer;
public UILineGroupRenderer groupliner;
public void Connect(ConnectionHandlePoint p1, ConnectionHandlePoint p2)
{
groupliner = FindFirstObjectByType<UILineGroupRenderer>();
groupliner.AddPoints(p1.transform, p2.transform);
//var line = Instantiate(prf_LineRenderer, transform);
//var p1Pos = new Vector2(p1.transform.position.x + rectTransform.rect.position.x , p1.transform.position.y + rectTransform.rect.position.y);
//var p2Pos = new Vector2(p2.transform.position.x + rectTransform.rect.position.x , p2.transform.position.y + rectTransform.rect.position.y);
//line.Points = new Vector2[] { p1Pos, p2Pos };
//line.SetAllDirty();
//line.transform.SetAsFirstSibling();
}
List<(ConnectionHandlePoint, ConnectionHandlePoint)> connections = new();
List<ConnectionHandlePoint> connection = new();
internal void Connect(ConnectionHandlePoint connectionHandlePoint)
{
connection.Add(connectionHandlePoint);
connectionHandlePoint.GetComponent<Image>().color = Color.white;
if (connection.Count == 2)
{
connection[0].GetComponent<Image>().color = Color.black;
connection[1].GetComponent<Image>().color = Color.black;
if (connections.Contains((connection[0], connection[1])))
{
connections.Remove((connection[0], connection[1]));
connections.Remove((connection[1], connection[0]));
groupliner.Remove(connection[0].transform, connection[1].transform);
connection.Clear();
return;
}
connections.Add((connection[0], connection[1]));
connections.Add((connection[1], connection[0]));
Connect(connection[0], connection[1]);
connection.Clear();
}
}
}
}