public static void ClearValues <T>(ref ChiselBlobArray <T> array) where T : unmanaged { if (array.Length == 0) { return; } UnsafeUtility.MemSet(array.GetUnsafePtr(), 0, array.Length * sizeof(T)); }
public override unsafe int GetHashCode() { unchecked { return((int)math.hash( new uint3(polygons.Length == 0 ? 0 : math.hash(polygons.GetUnsafePtr(), UnsafeUtility.SizeOf <Polygon>() * polygons.Length), localVertices.Length == 0 ? 0 : math.hash(localVertices.GetUnsafePtr(), UnsafeUtility.SizeOf <float3>() * localVertices.Length), halfEdges.Length == 0 ? 0 : math.hash(halfEdges.GetUnsafePtr(), UnsafeUtility.SizeOf <HalfEdge>() * halfEdges.Length)))); } }
public static ChiselBlobBuilderArray <T> Construct <T>(this ChiselBlobBuilder builder, ref ChiselBlobArray <T> blobArray, ref ChiselBlobArray <T> data) where T : unmanaged { var blobBuilderArray = builder.Allocate(ref blobArray, data.Length); if (data.Length > 0) { UnsafeUtility.MemCpy(blobBuilderArray.GetUnsafePtr(), data.GetUnsafePtr(), blobBuilderArray.Length * sizeof(T)); } return(blobBuilderArray); }
public static ChiselBlobBuilderArray <T> Construct <T>(this ChiselBlobBuilder builder, ref ChiselBlobArray <T> blobArray, ref ChiselBlobArray <T> data, int length) where T : unmanaged { length = math.max(length, 0); var blobBuilderArray = builder.Allocate(ref blobArray, length); if (length > 0) { var srcPtr = data.GetUnsafePtr(); var dstPtr = blobBuilderArray.GetUnsafePtr(); UnsafeUtility.MemCpy(dstPtr, srcPtr, blobBuilderArray.Length * sizeof(T)); } return(blobBuilderArray); }
public static unsafe T2[] ToArray <T1, T2>(ref ChiselBlobArray <T1> array) where T1 : unmanaged where T2 : unmanaged { var newArray = new T2[array.Length]; if (array.Length > 0) { if (sizeof(T1) != sizeof(T2)) throw new InvalidOperationException(); fixed(T2 *newArrayPtr = &newArray[0]) { UnsafeUtility.MemCpy(newArrayPtr, array.GetUnsafePtr(), array.Length * sizeof(T2)); } } return(newArray); }
public static unsafe uint GetHashCode <T>(ChiselBlobArray <T> value) where T : unmanaged { return(math.hash(value.GetUnsafePtr(), sizeof(T) * value.Length)); }