diff --git a/Engine.Core/Helpers/Pool.cs b/Engine.Core/Helpers/Pool.cs index 980823f..a5cfc9a 100644 --- a/Engine.Core/Helpers/Pool.cs +++ b/Engine.Core/Helpers/Pool.cs @@ -10,22 +10,25 @@ public class Pool : IPool private readonly Func generator = null!; private readonly Queue queue = new(); + private readonly HashSet queuedHashes = []; public T Get() { if (!queue.TryDequeue(out T? result)) result = generator(); + queuedHashes.Remove(result); OnRemoved?.Invoke(this, result); return result; } public void Return(T item) { - if (queue.Contains(item)) + if (queuedHashes.Contains(item)) return; queue.Enqueue(item); + queuedHashes.Add(item); OnReturned?.Invoke(this, item); }