public void Release()
{
if (gameObject == null)
{
return;
}
if (_originalObject == null)
{
gameObject.SetActive(false);
return;
}
if (!_isActive)
{
return;
}
if (_liveNode != null)
{
_originalObject._liveObjs.Remove(_liveNode);
_originalObject._pooledNodes.Push(_liveNode);
_liveNode = null;
}
_isActive = false;
if (!persistAcrossScenes && _tempContainer == null ||
persistAcrossScenes && _persistedContainer == null)
{
// Nothing to release to, might be quitting
return;
}
transform.SetParent(container, false);
gameObject.SetActive(false);
_originalObject._pooledObjs.Push(this);
_numOfActiveObjs--;
}