Show / Hide Table of Contents

Class Hash

This static class contains functions for calculating hashes from different Unity types.

All functions are deterministic and are well spread across the output range. This is not secure for cryptography.

Vectors are quantized before hashing - for each component of the vector, work out the closest fraction the number is and use that to seed the hashing algorithm. The size of the fraction is controlled by the quantizationResolution parameter.

Inheritance
System.Object
Hash
Inherited Members
System.Object.ToString()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
Namespace: CarbideFunction.Wildtile
Syntax
public static class Hash

Methods

CycleShift(IntegerType, Int32)

Left-shift bits around a word, with no loss of data. All bits that flow off either end are added to the opposite end.

This allows the combination of hashes of several similar inputs by avoiding the collision of equal hashes. In particular, this is designed to support hashing Vector2s and Vector3s that should all be between -1 and 1.

Declaration
public static IntegerType CycleShift(IntegerType input, int leftShiftAmount)
Parameters
Type Name Description
IntegerType input
System.Int32 leftShiftAmount
Returns
Type Description
IntegerType

Int(IntegerType)

Hash an int.

Declaration
public static IntegerType Int(IntegerType seed)
Parameters
Type Name Description
IntegerType seed
Returns
Type Description
IntegerType

Long(Int64)

Hash a long to an int.

Declaration
public static IntegerType Long(long input)
Parameters
Type Name Description
System.Int64 input
Returns
Type Description
IntegerType

QuantizedVector(Vector2, Single)

Hash a Vector2. Both components should be between -1 and 1 for a good hash spread, but all values can be hashed with a potentially poorer spread.

Declaration
public static IntegerType QuantizedVector(Vector2 vector, float quantizationResolution)
Parameters
Type Name Description
Vector2 vector

The vector to hash

System.Single quantizationResolution

How finely should the vector be split up before hashing.

Returns
Type Description
IntegerType

QuantizedVector(Vector3, Single)

Hash a Vector3. All components should be between -1 and 1 for a good hash spread, but all values can be hashed with a potentially poorer spread.

Declaration
public static IntegerType QuantizedVector(Vector3 vector, float quantizationResolution)
Parameters
Type Name Description
Vector3 vector

The vector to hash

System.Single quantizationResolution

How finely should the vector be split up before hashing.

Returns
Type Description
IntegerType

String(String)

Hash a string.

Declaration
public static IntegerType String(string input)
Parameters
Type Name Description
System.String input
Returns
Type Description
IntegerType
In This Article
Generated by DocFX Version: 4.1.0 - click to show/hide other versions