using System.Collections.Generic; using UnityEngine; namespace WPM { public class BufferPool { struct BufferEntry { public List buffer; public bool inUse; } static BufferEntry[] buffers = new BufferEntry[16]; public static List Get() { for (int k = 0; k < buffers.Length; k++) { if (!buffers[k].inUse) { if (buffers[k].buffer == null) { buffers[k].buffer = new List(); } buffers[k].inUse = true; return buffers[k].buffer; } } Debug.LogError("Buffer pool exhausted. This shouldn't occur. Are you releasing the pool after using it?"); return null; } public static void Release(List buffer) { if (buffer == null) return; for (int k = 0; k < buffers.Length; k++) { if (buffers[k].buffer == buffer) { buffer.Clear(); buffers[k].inUse = false; return; } } } } }