A game about forced loneliness, made by TACStudios
1using System; 2using UnityEditor.ShaderGraph; 3using UnityEditor.ShaderGraph.Serialization; 4using UnityEngine; 5 6namespace UnityEditor.Graphing 7{ 8 [Serializable] 9 struct SlotReference : IEquatable<SlotReference>, IComparable<SlotReference> 10 { 11 [SerializeField] 12 JsonRef<AbstractMaterialNode> m_Node; 13 14 [SerializeField] 15 int m_SlotId; 16 17 public SlotReference(AbstractMaterialNode node, int slotId) 18 { 19 m_Node = node; 20 m_SlotId = slotId; 21 } 22 23 public AbstractMaterialNode node => m_Node; 24 25 // public Guid nodeGuid => m_Node.value.guid; 26 27 public int slotId => m_SlotId; 28 29 public MaterialSlot slot => m_Node.value?.FindSlot<MaterialSlot>(m_SlotId); 30 31 public bool Equals(SlotReference other) => m_SlotId == other.m_SlotId && m_Node.value == other.m_Node.value; 32 33 public override bool Equals(object obj) 34 { 35 if (ReferenceEquals(null, obj)) return false; 36 return obj.GetType() == GetType() && Equals((SlotReference)obj); 37 } 38 39 public override int GetHashCode() 40 { 41 unchecked 42 { 43 return (m_SlotId * 397) ^ m_Node.GetHashCode(); 44 } 45 } 46 47 public int CompareTo(SlotReference other) 48 { 49 var nodeIdComparison = m_Node.value.objectId.CompareTo(other.m_Node.value.objectId); 50 if (nodeIdComparison != 0) 51 { 52 return nodeIdComparison; 53 } 54 55 return m_SlotId.CompareTo(other.m_SlotId); 56 } 57 } 58}