SlotReference.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using UnityEngine;
  3. namespace UnityEditor.Graphing
  4. {
  5. [Serializable]
  6. struct SlotReference : ISerializationCallbackReceiver, IEquatable<SlotReference>
  7. {
  8. [SerializeField]
  9. private int m_SlotId;
  10. [NonSerialized]
  11. private Guid m_NodeGUID;
  12. [SerializeField]
  13. private string m_NodeGUIDSerialized;
  14. public SlotReference(Guid nodeGuid, int slotId)
  15. {
  16. m_NodeGUID = nodeGuid;
  17. m_SlotId = slotId;
  18. m_NodeGUIDSerialized = string.Empty;
  19. }
  20. public Guid nodeGuid
  21. {
  22. get { return m_NodeGUID; }
  23. }
  24. public int slotId
  25. {
  26. get { return m_SlotId; }
  27. }
  28. public void OnBeforeSerialize()
  29. {
  30. m_NodeGUIDSerialized = m_NodeGUID.ToString();
  31. }
  32. public void OnAfterDeserialize()
  33. {
  34. m_NodeGUID = new Guid(m_NodeGUIDSerialized);
  35. }
  36. public bool Equals(SlotReference other)
  37. {
  38. if (ReferenceEquals(null, other)) return false;
  39. if (ReferenceEquals(this, other)) return true;
  40. return m_SlotId == other.m_SlotId && m_NodeGUID.Equals(other.m_NodeGUID);
  41. }
  42. public override bool Equals(object obj)
  43. {
  44. if (ReferenceEquals(null, obj)) return false;
  45. if (ReferenceEquals(this, obj)) return true;
  46. if (obj.GetType() != this.GetType()) return false;
  47. return Equals((SlotReference)obj);
  48. }
  49. public override int GetHashCode()
  50. {
  51. unchecked
  52. {
  53. return (m_SlotId * 397) ^ m_NodeGUID.GetHashCode();
  54. }
  55. }
  56. }
  57. }