forked from BilalY/Rasagar
75 lines
2.9 KiB
C#
75 lines
2.9 KiB
C#
//#define USE_NOT_BURST_COMPATIBLE_EXTENSIONS
|
|
|
|
using System;
|
|
using Unity.Collections.LowLevel.Unsafe;
|
|
|
|
namespace Unity.Collections.NotBurstCompatible
|
|
{
|
|
/// <summary>
|
|
/// Provides some extension methods for various collections.
|
|
/// </summary>
|
|
public static class Extensions
|
|
{
|
|
/// <summary>
|
|
/// Returns a new managed array with all the elements copied from a set.
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of elements.</typeparam>
|
|
/// <param name="set">The set whose elements are copied to the array.</param>
|
|
/// <returns>A new managed array with all the elements copied from a set.</returns>
|
|
[ExcludeFromBurstCompatTesting("Returns managed array")]
|
|
public static T[] ToArray<T>(this NativeHashSet<T> set)
|
|
where T : unmanaged, IEquatable<T>
|
|
{
|
|
var array = set.ToNativeArray(Allocator.TempJob);
|
|
var managed = array.ToArray();
|
|
array.Dispose();
|
|
return managed;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a new managed array with all the elements copied from a set.
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of elements.</typeparam>
|
|
/// <param name="set">The set whose elements are copied to the array.</param>
|
|
/// <returns>A new managed array with all the elements copied from a set.</returns>
|
|
[ExcludeFromBurstCompatTesting("Returns managed array")]
|
|
public static T[] ToArray<T>(this NativeParallelHashSet<T> set)
|
|
where T : unmanaged, IEquatable<T>
|
|
{
|
|
var array = set.ToNativeArray(Allocator.TempJob);
|
|
var managed = array.ToArray();
|
|
array.Dispose();
|
|
return managed;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a new managed array which is a copy of this list.
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of elements.</typeparam>
|
|
/// <param name="list">The list to copy.</param>
|
|
/// <returns>A new managed array which is a copy of this list.</returns>
|
|
[ExcludeFromBurstCompatTesting("Returns managed array")]
|
|
public static T[] ToArrayNBC<T>(this NativeList<T> list)
|
|
where T : unmanaged
|
|
{
|
|
return list.AsArray().ToArray();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Clears this list and then copies all the elements of an array to this list.
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of elements.</typeparam>
|
|
/// <param name="list">This list.</param>
|
|
/// <param name="array">The managed array to copy from.</param>
|
|
[ExcludeFromBurstCompatTesting("Takes managed array")]
|
|
public static void CopyFromNBC<T>(this NativeList<T> list, T[] array)
|
|
where T : unmanaged
|
|
{
|
|
list.Clear();
|
|
list.Resize(array.Length, NativeArrayOptions.UninitializedMemory);
|
|
NativeArray<T> na = list.AsArray();
|
|
na.CopyFrom(array);
|
|
}
|
|
}
|
|
}
|