Ei kuvausta
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.

SlotReference.cs 1.5KB

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