namespace Unity.VisualScripting
{
public struct EventHook
{
public readonly string name;
public readonly object target;
public readonly object tag;
public EventHook(string name, object target = null, object tag = null)
{
Ensure.That(nameof(name)).IsNotNull(name);
this.name = name;
this.target = target;
this.tag = tag;
}
public override bool Equals(object obj)
{
if (!(obj is EventHook other))
{
return false;
}
return Equals(other);
}
public bool Equals(EventHook other)
{
return name == other.name && Equals(target, other.target) && Equals(tag, other.tag);
}
public override int GetHashCode()
{
return HashUtility.GetHashCode(name, target, tag);
}
public static bool operator ==(EventHook a, EventHook b)
{
return a.Equals(b);
}
public static bool operator !=(EventHook a, EventHook b)
{
return !(a == b);
}
public static implicit operator EventHook(string name)
{
return new EventHook(name);
}
}
}