60 lines
1.2 KiB
C#
Raw Permalink Normal View History

2024-02-20 18:39:12 +08:00
using System.Collections.Generic;
namespace HPJ.Simulation.Utilities
{
[System.Serializable]
public class Pool<T>
{
public List<T> Active;
public List<T> Inactive;
public Pool()
{
Active = new List<T>();
Inactive = new List<T>();
}
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();
}
}
}