You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
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); |
|
} |
|
} |
|
}
|
|
|