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}