Ejemplo n.º 1
0
        public ChunkData AddData(ChunkData chunk, T data)
        {
            if (chunk.useLength == chunk.dataLength)
            {
                // 拡張

                // 新しいチャンクを割り当て
                int len = chunk.dataLength;
                len += Mathf.Min(len, 4096);
                var newChunk = AddChunk(len);

                // 現在のデータをコピーする
                nativeArray.CopyBlock(chunk.startIndex, newChunk.startIndex, chunk.dataLength);
                newChunk.useLength = chunk.useLength;

                // 現在のチャンクを破棄する
                RemoveChunk(chunk);
                chunk = newChunk;
            }

            nativeArray[chunk.startIndex + chunk.useLength] = data;
            chunk.useLength++;

            return(chunk);
        }