using System; using UnityEngine; namespace Misaki.GraphView { /// /// Represents a connection between two connection ports. /// [Serializable] public struct SlotConnection : IEquatable { [SerializeField] private SlotData _inputSlotData; [SerializeField] private SlotData _outputSlotData; /// /// Initializes a new instance of the struct. /// /// The input connection port. /// The output connection port. public SlotConnection(SlotData inputSlotData, SlotData outputSlotData) { _inputSlotData = inputSlotData; _outputSlotData = outputSlotData; } public SlotData InputSlotData => _inputSlotData; public SlotData OutputSlotData => _outputSlotData; public bool Equals(SlotConnection other) { return _inputSlotData.Equals(other._inputSlotData) && _outputSlotData.Equals(other._outputSlotData); } public override bool Equals(object obj) { return obj is SlotConnection other && Equals(other); } public override int GetHashCode() { return HashCode.Combine(InputSlotData, OutputSlotData); } } }