using System; using System.Collections.Generic; // ReSharper disable FieldCanBeMadeReadOnly.Local namespace T3.Core.Utils.ObjectPooling; public sealed class ObjectPool(Func createFunc, Action returnAction = null, int capacity = 10) : ObjectPoolBase { private Queue _objects = new(capacity); public T Get() { if (!_objects.TryDequeue(out var obj)) { obj = createFunc(); } return obj; } public void Return(T obj) { returnAction?.Invoke(obj); _objects.Enqueue(obj); } }