using System.Collections.Generic; namespace HPJ.Simulation.Utilities { [System.Serializable] public class Pool { public List Active; public List Inactive; public Pool() { Active = new List(); Inactive = new List(); } public T GetItem() { if (Inactive.Count > 0) { T Item = Inactive[0]; Inactive.RemoveAt(0); return Item; } return default(T); } public void ReturnItem(T Item) { if (Active.Contains(Item)) { Active.Remove(Item); Inactive.Add(Item); } } public void AddItem(T Item, bool AddToActiveList = true) { if (AddToActiveList) { Active.Add(Item); } else { Inactive.Add(Item); } } public void ReturnAll() { for (int i = 0; i < Active.Count; i++) { Inactive.Add(Active[i]); } Active.Clear(); } } }