public static void Copy(NativeBucket <T> src, NativeArray <T> dst) { int copied_num = 0; for (int i = 0; i < JobsUtility.MaxJobThreadCount; ++i) { NativeBucketHeader *headerBlock = GetHeaderBlock(src.m_HeaderBlock, i); if (copied_num + headerBlock->itemsInBlock > dst.Length) { throw new ArgumentOutOfRangeException("Size of destination NativeArray is smaller than NativeBucket."); } UnsafeUtility.MemCpy((byte *)dst.GetUnsafePtr() + UnsafeUtility.SizeOf <T>() * copied_num, (byte *)headerBlock->block, headerBlock->unitSize * headerBlock->itemsInBlock); copied_num += headerBlock->itemsInBlock; } }
public static void Copy(NativeBucket <T> src, T[] dst) { int copied_num = 0; var handle = GCHandle.Alloc(dst, GCHandleType.Pinned); var addr = handle.AddrOfPinnedObject(); for (int i = 0; i < JobsUtility.MaxJobThreadCount; ++i) { NativeBucketHeader *headerBlock = GetHeaderBlock(src.m_HeaderBlock, i); if (copied_num + headerBlock->itemsInBlock > dst.Length) { throw new ArgumentOutOfRangeException("Size of destination NativeArray is smaller than NativeBucket."); } UnsafeUtility.MemCpy((byte *)addr + UnsafeUtility.SizeOf <T>() * copied_num, (byte *)headerBlock->block, headerBlock->unitSize * headerBlock->itemsInBlock); copied_num += headerBlock->itemsInBlock; } handle.Free(); }
static public void initialize() { native_sprite_data_list_ = new NativeBucket <SpriteData>(BULK_NUM, Allocator.Persistent); }
public NativeBucketDebugView(NativeBucket <T> bucket) { m_Bucket = bucket; }