| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- using System.Collections.Generic;
 
- using UnityEngine;
 
- using UnityEngine.Events;
 
- namespace XCharts.Runtime
 
- {
 
-     public class ObjectPool<T> where T : new()
 
-     {
 
-         private readonly bool m_NewIfEmpty = true;
 
-         private readonly Stack<T> m_Stack = new Stack<T>();
 
-         private readonly UnityAction<T> m_ActionOnGet;
 
-         private readonly UnityAction<T> m_ActionOnRelease;
 
-         public int countAll { get; private set; }
 
-         public int countActive { get { return countAll - countInactive; } }
 
-         public int countInactive { get { return m_Stack.Count; } }
 
-         public ObjectPool(UnityAction<T> actionOnGet, UnityAction<T> actionOnRelease, bool newIfEmpty = true)
 
-         {
 
-             m_NewIfEmpty = newIfEmpty;
 
-             m_ActionOnGet = actionOnGet;
 
-             m_ActionOnRelease = actionOnRelease;
 
-         }
 
-         public T Get()
 
-         {
 
-             T element;
 
-             if (m_Stack.Count == 0)
 
-             {
 
-                 if (!m_NewIfEmpty) return default(T);
 
-                 element = new T();
 
-                 countAll++;
 
-             }
 
-             else
 
-             {
 
-                 element = m_Stack.Pop();
 
-             }
 
-             if (m_ActionOnGet != null)
 
-                 m_ActionOnGet(element);
 
-             return element;
 
-         }
 
-         public void Release(T element)
 
-         {
 
-             if (m_Stack.Count > 0 && ReferenceEquals(m_Stack.Peek(), element))
 
-                 Debug.LogError("Internal error. Trying to destroy object that is already released to pool.");
 
-             if (m_ActionOnRelease != null)
 
-                 m_ActionOnRelease(element);
 
-             m_Stack.Push(element);
 
-         }
 
-         public void ClearAll()
 
-         {
 
-             m_Stack.Clear();
 
-         }
 
-     }
 
- }
 
 
  |