forked from mirror/DotRecast
26 lines
759 B
C#
26 lines
759 B
C#
using System.Runtime.CompilerServices;
|
|
|
|
namespace DotRecast.Core
|
|
{
|
|
public static class RcHashCodes
|
|
{
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static int CombineHashCodes(int h1, int h2)
|
|
{
|
|
return (((h1 << 5) + h1) ^ h2);
|
|
}
|
|
|
|
// From Thomas Wang, https://gist.github.com/badboy/6267743
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static uint WangHash(uint a)
|
|
{
|
|
a = (~a) + (a << 18); // a = (a << 18) - a - 1;
|
|
a = a ^ (a >> 31);
|
|
a = a * 21; // a = (a + (a << 2)) + (a << 4);
|
|
a = a ^ (a >> 11);
|
|
a = a + (a << 6);
|
|
a = a ^ (a >> 22);
|
|
return (uint)a;
|
|
}
|
|
}
|
|
} |