Exemplo n.º 1
0
        public static List <T> ComponentDataArrayToList <T>(ComponentDataArray <T> cda) where T : struct, IComponentData
        {
            NativeArray <T> na   = cda.GetChunkArray(0, cda.Length);
            List <T>        list = new List <T>(na.ToArray());

            return(list);
        }
Exemplo n.º 2
0
        public static void CopyFrom <T>(this ComputeBuffer dst, ref ComponentDataArray <T> src, int length) where T : struct, IComponentData
        {
            NativeArray <T> chunkArray;

            for (int copiedCount = 0; copiedCount < length; copiedCount += chunkArray.Length)
            {
                // Allocator.InvalidであるからDisposeしてはならぬ。
                chunkArray = src.GetChunkArray(copiedCount, length - copiedCount);
                dst.SetData(chunkArray, 0, copiedCount, chunkArray.Length);
            }
        }
Exemplo n.º 3
0
        public static unsafe void CopyFromUnsafe <T>(this ComputeBuffer dst, ref ComponentDataArray <T> src, int length) where T : struct, IComponentData
        {
            var             stride = dst.stride;
            var             ptr    = dst.GetNativeBufferPtr();
            NativeArray <T> chunkArray;

            for (int copiedCount = 0, chunkLength = 0; copiedCount < length; copiedCount += chunkLength)
            {
                chunkArray  = src.GetChunkArray(copiedCount, length - copiedCount);
                chunkLength = chunkArray.Length;
                UnsafeUtility.MemCpy(ptr.ToPointer(), NativeArrayUnsafeUtility.GetUnsafeBufferPointerWithoutChecks(chunkArray), chunkLength * stride);
                ptr += chunkLength * stride;
            }
        }