namespace Mapbox.Unity.MeshGeneration.Data { using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectPool { private Queue _objects; private Func _objectGenerator; public ObjectPool(Func objectGenerator) { if (objectGenerator == null) throw new ArgumentNullException("objectGenerator"); _objects = new Queue(); _objectGenerator = objectGenerator; } public T GetObject() { if (_objects.Count > 0) return _objects.Dequeue(); return _objectGenerator(); } public void Put(T item) { _objects.Enqueue(item); } public void Clear() { _objects.Clear(); } public IEnumerable GetQueue() { return _objects; } } }