Class CoreUnsafeUtils
Static class with unsafe utility functions.
Namespace: UnityEngine.Rendering
Syntax
public static class CoreUnsafeUtils
Methods
CombineHashes(Int32, Hash128*, Hash128*)
Combine hashes.
Declaration
public static void CombineHashes(int count, Hash128*hashes, Hash128*outHash)
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of hash to combine. |
Hash128* | hashes | Hashes to combine. |
Hash128* | outHash | Hash to update. |
CombineHashes<TValue, TGetter>(Int32, Void*, Hash128*)
Combine all of the hashes of a collection of hashes.
Declaration
public static void CombineHashes<TValue, TGetter>(int count, void *hashes, Hash128*outHash)
where TValue : struct where TGetter : struct, CoreUnsafeUtils.IKeyGetter<TValue, Hash128>
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of hash to combine. |
Void* | hashes | Hashes to combine. |
Hash128* | outHash | Hash to update. |
Type Parameters
Name | Description |
---|---|
TValue | Value type. |
TGetter | Getter type. |
CompareHashes(Int32, Hash128*, Int32, Hash128*, Int32*, Int32*, out Int32, out Int32)
Compare hashes.
Declaration
public static int CompareHashes(int oldHashCount, Hash128*oldHashes, int newHashCount, Hash128*newHashes, int *addIndices, int *removeIndices, out int addCount, out int remCount)
Parameters
Type | Name | Description |
---|---|---|
Int32 | oldHashCount | Number of hashes in |
Hash128* | oldHashes | Previous hashes to compare. |
Int32 | newHashCount | Number of hashes in |
Hash128* | newHashes | New hashes to compare. |
Int32* | addIndices | Indices of element to add in |
Int32* | removeIndices | Indices of element to remove in |
Int32 | addCount | Number of elements to add will be written here. |
Int32 | remCount | Number of elements to remove will be written here. |
Returns
Type | Description |
---|---|
Int32 | The number of operation to perform ( )
|
CompareHashes<TOldValue, TOldGetter, TNewValue, TNewGetter>(Int32, Void*, Int32, Void*, Int32*, Int32*, out Int32, out Int32)
Compare hashes of two collections and provide
a list of indices removeIndices
to remove in oldHashes
and a list of indices addIndices
to add in newHashes
.
Assumes that newHashes
and oldHashes
are sorted.
Declaration
public static int CompareHashes<TOldValue, TOldGetter, TNewValue, TNewGetter>(int oldHashCount, void *oldHashes, int newHashCount, void *newHashes, int *addIndices, int *removeIndices, out int addCount, out int remCount)
where TOldValue : struct where TOldGetter : struct, CoreUnsafeUtils.IKeyGetter<TOldValue, Hash128> where TNewValue : struct where TNewGetter : struct, CoreUnsafeUtils.IKeyGetter<TNewValue, Hash128>
Parameters
Type | Name | Description |
---|---|---|
Int32 | oldHashCount | Number of hashes in |
Void* | oldHashes | Previous hashes to compare. |
Int32 | newHashCount | Number of hashes in |
Void* | newHashes | New hashes to compare. |
Int32* | addIndices | Indices of element to add in |
Int32* | removeIndices | Indices of element to remove in |
Int32 | addCount | Number of elements to add will be written here. |
Int32 | remCount | Number of elements to remove will be written here. |
Returns
Type | Description |
---|---|
Int32 | The number of operation to perform ( )
|
Type Parameters
Name | Description |
---|---|
TOldValue | Old value type. |
TOldGetter | Old getter type. |
TNewValue | New value type. |
TNewGetter | New getter type. |
CopyTo<T>(T[], Void*, Int32)
Extension method to copy elements of an array into a buffer.
Declaration
public static void CopyTo<T>(this T[] list, void *dest, int count)
where T : struct
Parameters
Type | Name | Description |
---|---|---|
T[] | list | Input List. |
Void* | dest | Destination buffer. |
Int32 | count | Number of elements to copy. |
Type Parameters
Name | Description |
---|---|
T | Type of the provided array. |
CopyTo<T>(List<T>, Void*, Int32)
Extension method to copy elements of a list into a buffer.
Declaration
public static void CopyTo<T>(this List<T> list, void *dest, int count)
where T : struct
Parameters
Type | Name | Description |
---|---|---|
List<T> | list | Input List. |
Void* | dest | Destination buffer. |
Int32 | count | Number of elements to copy. |
Type Parameters
Name | Description |
---|---|
T | Type of the provided List. |
HaveDuplicates(Int32[])
Checks for duplicates in an array.
Declaration
public static bool HaveDuplicates(int[] arr)
Parameters
Type | Name | Description |
---|---|---|
Int32[] | arr | Input array. |
Returns
Type | Description |
---|---|
Boolean | True if there is any duplicate in the input array. |
IndexOf<T>(Void*, Int32, T)
Index of an element in a buffer.
Declaration
public static int IndexOf<T>(void *data, int count, T v)
where T : struct, IEquatable<T>
Parameters
Type | Name | Description |
---|---|---|
Void* | data | Data buffer. |
Int32 | count | Number of elements. |
T | v | Element to test against. |
Returns
Type | Description |
---|---|
Int32 | The first index of the provided element. |
Type Parameters
Name | Description |
---|---|
T | Data type. |
InsertionSort(UInt32[], Int32)
Insertion sort
Declaration
public static void InsertionSort(uint[] arr, int sortSize)
Parameters
Type | Name | Description |
---|---|---|
UInt32[] | arr | Array to sort. |
Int32 | sortSize | Size of the array to sort. If greater than array capacity, it will get clamped. |
InsertionSort(NativeArray<UInt32>, Int32)
Insertion sort
Declaration
public static void InsertionSort(NativeArray<uint> arr, int sortSize)
Parameters
Type | Name | Description |
---|---|---|
NativeArray<UInt32> | arr | Array to sort. |
Int32 | sortSize | Size of the array to sort. If greater than array capacity, it will get clamped. |
MergeSort(UInt32[], Int32, ref UInt32[])
Merge sort - non recursive
Declaration
public static void MergeSort(uint[] arr, int sortSize, ref uint[] supportArray)
Parameters
Type | Name | Description |
---|---|---|
UInt32[] | arr | Array to sort. |
Int32 | sortSize | Size of the array to sort. If greater than array capacity, it will get clamped. |
UInt32[] | supportArray | Secondary array reference, used to store intermediate merge results. |
MergeSort(NativeArray<UInt32>, Int32, ref NativeArray<UInt32>)
Merge sort - non recursive
Declaration
public static void MergeSort(NativeArray<uint> arr, int sortSize, ref NativeArray<uint> supportArray)
Parameters
Type | Name | Description |
---|---|---|
NativeArray<UInt32> | arr | Array to sort. |
Int32 | sortSize | Size of the array to sort. If greater than array capacity, it will get clamped. |
NativeArray<UInt32> | supportArray | Secondary array reference, used to store intermediate merge results. |
QuickSort(UInt32[], Int32, Int32)
Quick Sort
Declaration
public static void QuickSort(uint[] arr, int left, int right)
Parameters
Type | Name | Description |
---|---|---|
UInt32[] | arr | uint array. |
Int32 | left | Left boundary. |
Int32 | right | Left boundary. |
QuickSort<T>(Int32, Void*)
Quick sort.
Declaration
public static void QuickSort<T>(int count, void *data)
where T : struct, IComparable<T>
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of element. |
Void* | data | Buffer to sort. |
Type Parameters
Name | Description |
---|---|
T | Type to compare. |
QuickSort<TValue, TKey, TGetter>(Int32, Void*)
Quick sort.
Declaration
public static void QuickSort<TValue, TKey, TGetter>(int count, void *data)
where TValue : struct where TKey : struct, IComparable<TKey> where TGetter : struct, CoreUnsafeUtils.IKeyGetter<TValue, TKey>
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of element. |
Void* | data | Data to sort. |
Type Parameters
Name | Description |
---|---|
TValue | Value type. |
TKey | Key Type. |
TGetter | Getter type. |
QuickSort<TValue, TKey, TGetter>(Void*, Int32, Int32)
Quick sort.
Declaration
public static void QuickSort<TValue, TKey, TGetter>(void *data, int left, int right)
where TValue : struct where TKey : struct, IComparable<TKey> where TGetter : struct, CoreUnsafeUtils.IKeyGetter<TValue, TKey>
Parameters
Type | Name | Description |
---|---|---|
Void* | data | Data to sort. |
Int32 | left | Left boundary. |
Int32 | right | Right boundary. |
Type Parameters
Name | Description |
---|---|
TValue | Value type. |
TKey | Key Type. |
TGetter | Getter type. |
RadixSort(UInt32[], Int32, ref UInt32[], Int32)
Radix Sort Radix sort or bucket sort, stable and non in place.
Declaration
public static void RadixSort(uint[] arr, int sortSize, ref uint[] supportArray, int radixBits = 8)
Parameters
Type | Name | Description |
---|---|---|
UInt32[] | arr | Array to sort. |
Int32 | sortSize | Size of the array to sort. If greater than array capacity, it will get clamped. |
UInt32[] | supportArray | Array of uints that is used for support data. The algorithm will automatically allocate it if necessary. |
Int32 | radixBits | Number of bits to use for each bucket. Can only be 8, 4 or 2. |
RadixSort(NativeArray<UInt32>, Int32, ref NativeArray<UInt32>, Int32)
Radix Sort Radix sort or bucket sort, stable and non in place.
Declaration
public static void RadixSort(NativeArray<uint> array, int sortSize, ref NativeArray<uint> supportArray, int radixBits = 8)
Parameters
Type | Name | Description |
---|---|---|
NativeArray<UInt32> | array | Array to sort. |
Int32 | sortSize | Size of the array to sort. If greater than array capacity, it will get clamped. |
NativeArray<UInt32> | supportArray | Array of uints that is used for support data. The algorithm will automatically allocate it if necessary. |
Int32 | radixBits | Number of bits to use for each bucket. Can only be 8, 4 or 2. |