/// <summary>
/// Recycle specified instance to pool.
/// </summary>
/// <param name="obj">Instance to recycle.</param>
/// <summary>
/// Recycle specified instance to pool.
/// </summary>
/// <param name="obj">Instance to recycle.</param>
/// <param name="checkForDoubleRecycle">Check if instance already was recycled. Use false for performance boost.</param>
public void Recycle(IPoolObject obj, bool checkForDoubleRecycle = true)
{
if ((object)obj != null)
{
#if UNITY_EDITOR
if ((object)obj.PoolContainer != (object)this)
{
Debug.LogWarning("Invalid obj to recycle", (UnityEngine.Object)obj);
return;
}
#endif
var tr = obj.PoolTransform;
if ((object)tr != null)
{
tr.gameObject.SetActive(false);
if ((object)tr.parent != (object)_itemsRoot)
{
tr.SetParent(_itemsRoot, true);
}
}
if (checkForDoubleRecycle && _store.Contains(obj))
{
#if UNITY_EDITOR
Debug.LogWarning("Object already was recycled", (UnityEngine.Object)obj);
#endif
}
else
{
_store.Push(obj);
}
}
}