Beispiel #1
0
        public static void Recycle(BufferArray <T> buffer)
        {
            //buffer = new BufferArray<T>(null, 0);
            //return;

            T[] arr = buffer.arr;
            PoolArray <T> .Release(ref arr);
        }
Beispiel #2
0
        public static void Recycle(ref BufferArray <T> buffer)
        {
            T[] arr = buffer.arr;
            if (arr != null)
            {
                System.Array.Clear(arr, 0, arr.Length);
            }
            PoolArray <T> .Release(ref arr);

            buffer = new BufferArray <T>(null, 0);
        }
Beispiel #3
0
        public static void Recycle(BufferArray <T> buffer)
        {
            if (Pools.isActive == false)
            {
                buffer = default;
                return;
            }

            T[] arr = buffer.arr;
            //if (arr != null) System.Array.Clear(arr, 0, arr.Length);
            PoolArray <T> .Release(ref arr);
        }
Beispiel #4
0
        public static void Copy <T, TCopy>(CCList <T> fromArr, ref CCList <T> arr, TCopy copy) where TCopy : IArrayElementCopy <T>
        {
            if (fromArr == null)
            {
                if (arr != null)
                {
                    for (int i = 0; i < arr.Count; ++i)
                    {
                        copy.Recycle(arr[i]);
                    }
                    PoolCCList <T> .Recycle(ref arr);
                }

                arr = null;
                return;
            }

            if (arr != null)
            {
                for (int i = 0; i < arr.Count; ++i)
                {
                    copy.Recycle(arr[i]);
                }

                PoolCCList <T> .Recycle(ref arr);
            }

            arr = PoolCCList <T> .Spawn();

            arr.InitialCopyOf(fromArr);

            for (int i = 0; i < fromArr.array.Length; ++i)
            {
                if (fromArr.array[i] == null && arr.array[i] != null)
                {
                    for (int k = 0; k < arr.array[i].Length; ++k)
                    {
                        copy.Recycle(arr.array[i][k]);
                    }

                    PoolArray <T> .Release(ref arr.array[i]);
                }
                else if (fromArr.array[i] != null && arr.array[i] == null)
                {
                    arr.array[i] = PoolArray <T> .Claim(fromArr.array[i].Length);
                }
                else if (fromArr.array[i] == null && arr.array[i] == null)
                {
                    continue;
                }

                var cnt = fromArr.array[i].Length;
                for (int j = 0; j < cnt; ++j)
                {
                    copy.Copy(fromArr.array[i][j], ref arr.array[i][j]);
                }
            }

            /*
             * if (arr == null || fromArr.Count != arr.Count) {
             *
             *  if (arr != null) {
             *
             *      for (int i = 0; i < arr.Count; ++i) {
             *
             *          copy.Recycle(arr[i]);
             *
             *      }
             *
             *      PoolCCList<T>.Recycle(ref arr);
             *
             *  }
             *
             *  arr = PoolCCList<T>.Spawn();
             *  arr.InitialCopyOf(fromArr);
             *
             * }
             *
             * for (int i = 0; i < fromArr.array.Length; ++i) {
             *
             *  if (fromArr.array[i] == null && arr.array[i] != null) {
             *
             *      for (int k = 0; k < arr.array[i].Length; ++k) {
             *
             *          copy.Recycle(arr.array[i][k]);
             *
             *      }
             *
             *      PoolArray<T>.Release(ref arr.array[i]);
             *
             *  } else if (fromArr.array[i] != null && arr.array[i] == null) {
             *
             *      arr.array[i] = PoolArray<T>.Claim(fromArr.array[i].Length);
             *
             *  } else if (fromArr.array[i] == null && arr.array[i] == null) {
             *
             *      continue;
             *
             *  }
             *
             *  var cnt = fromArr.array[i].Length;
             *  for (int j = 0; j < cnt; ++j) {
             *
             *      copy.Copy(fromArr.array[i][j], ref arr.array[i][j]);
             *
             *  }
             *
             * }*/
        }