public static void Recycle(BufferArray <T> buffer) { //buffer = new BufferArray<T>(null, 0); //return; T[] arr = buffer.arr; PoolArray <T> .Release(ref arr); }
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); }
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); }
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]); * * } * * }*/ }