Rasagar/Library/PackageCache/com.unity.shadergraph/Editor/Data/Implementation/Edge.cs
2024-08-26 23:07:20 +03:00

70 lines
1.9 KiB
C#

using System;
using UnityEngine;
namespace UnityEditor.Graphing
{
[Serializable]
class Edge : IEdge, IComparable<Edge>
{
[SerializeField]
private SlotReference m_OutputSlot;
[SerializeField]
private SlotReference m_InputSlot;
public Edge()
{ }
public Edge(SlotReference outputSlot, SlotReference inputSlot)
{
m_OutputSlot = outputSlot;
m_InputSlot = inputSlot;
}
public SlotReference outputSlot
{
get { return m_OutputSlot; }
}
public SlotReference inputSlot
{
get { return m_InputSlot; }
}
protected bool Equals(Edge other)
{
return Equals(m_OutputSlot, other.m_OutputSlot) && Equals(m_InputSlot, other.m_InputSlot);
}
public bool Equals(IEdge other)
{
return Equals(other as object);
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((Edge)obj);
}
public override int GetHashCode()
{
unchecked
{
// Can't make fields readonly due to Unity serialization
return (m_OutputSlot.GetHashCode() * 397) ^ m_InputSlot.GetHashCode();
}
}
public int CompareTo(Edge other)
{
if (ReferenceEquals(this, other)) return 0;
if (ReferenceEquals(null, other)) return 1;
var outputSlotComparison = m_OutputSlot.CompareTo(other.m_OutputSlot);
if (outputSlotComparison != 0) return outputSlotComparison;
return m_InputSlot.CompareTo(other.m_InputSlot);
}
}
}