diff --git a/Engine.Systems/Network/Hasher.cs b/Engine.Systems/Network/Hasher.cs new file mode 100644 index 0000000..0f881e5 --- /dev/null +++ b/Engine.Systems/Network/Hasher.cs @@ -0,0 +1,21 @@ +namespace Engine.Systems.Network; + +public static class Hasher +{ + public static long FNV1a(string name) + { + const long fnvPrime = 1099511628211; + long result = 1469598103934665603; + + unchecked + { + foreach (char c in name) + { + result ^= c; + result *= fnvPrime; + } + } + + return result; + } +} diff --git a/Engine.Systems/Network/TypeHasher.cs b/Engine.Systems/Network/TypeHasher.cs index 82451d4..58dc572 100644 --- a/Engine.Systems/Network/TypeHasher.cs +++ b/Engine.Systems/Network/TypeHasher.cs @@ -8,18 +8,7 @@ public static class TypeHasher get { if (_fnv1a == 0) - unchecked - { - const long fnvPrime = 1099511628211; - _fnv1a = 1469598103934665603; - - string typeName = typeof(T).FullName ?? typeof(T).Name; - foreach (char c in typeName) - { - _fnv1a ^= c; - _fnv1a *= fnvPrime; - } - } + _fnv1a = Hasher.FNV1a(typeof(T).FullName ?? typeof(T).Name); return _fnv1a; }