using System; using System.Collections.Generic; using UnityEngine.Assertions; namespace NegUtils; public interface NativePool where T : class, IPoolable { private static readonly List Instances = new(10); public static T Get() { T item; if (Instances.Count == 0) item = Activator.CreateInstance(); else { item = Instances[^1]; Instances.RemoveAt(Instances.Count - 1); } item.OnGet(); return item; } public static void Return(T obj) { Assert.IsNotNull(obj); obj.OnRelease(); if(Instances.Count >= Capacity) return; Instances.Add(obj); } public static int Capacity { get => Instances.Count; set => Instances.Capacity = value; } } public interface IPoolable { void OnGet(); void OnRelease(); }