namespace Unity.VisualScripting { public static class HashUtility { public static int GetHashCode(T a) { return a?.GetHashCode() ?? 0; } public static int GetHashCode(T1 a, T2 b) { unchecked { var hash = 17; hash = hash * 23 + (a?.GetHashCode() ?? 0); hash = hash * 23 + (b?.GetHashCode() ?? 0); return hash; } } public static int GetHashCode(T1 a, T2 b, T3 c) { unchecked { var hash = 17; hash = hash * 23 + (a?.GetHashCode() ?? 0); hash = hash * 23 + (b?.GetHashCode() ?? 0); hash = hash * 23 + (c?.GetHashCode() ?? 0); return hash; } } public static int GetHashCode(T1 a, T2 b, T3 c, T4 d) { unchecked { var hash = 17; hash = hash * 23 + (a?.GetHashCode() ?? 0); hash = hash * 23 + (b?.GetHashCode() ?? 0); hash = hash * 23 + (c?.GetHashCode() ?? 0); hash = hash * 23 + (d?.GetHashCode() ?? 0); return hash; } } public static int GetHashCode(T1 a, T2 b, T3 c, T4 d, T5 e) { unchecked { var hash = 17; hash = hash * 23 + (a?.GetHashCode() ?? 0); hash = hash * 23 + (b?.GetHashCode() ?? 0); hash = hash * 23 + (c?.GetHashCode() ?? 0); hash = hash * 23 + (d?.GetHashCode() ?? 0); hash = hash * 23 + (e?.GetHashCode() ?? 0); return hash; } } public static int GetHashCodeAlloc(params object[] values) { unchecked { var hash = 17; foreach (var value in values) { hash = hash * 23 + (value?.GetHashCode() ?? 0); } return hash; } } } }