/// <summary>
 /// Adds a pool object to the list.
 /// </summary>
 /// <param name="poolObject"></param>
 public void Add(IPoolObjectRoot poolObject)
 {
     if (!PoolObjects.Contains(poolObject))
     {
         PoolObjects.Add(poolObject);
         PoolObjectCount++;
     }
 }
        /// <summary>
        ///     Returns the given object to the pool.
        /// </summary>
        /// <param name="_object"></param>
        public void ReturnObjectToPool(IPoolObjectRoot _object)
        {
            T convertedObject = (T)_object;

            if (convertedObject != null)
            {
                ReturnObjectToPool(convertedObject);
            }
        }
        /// <summary>
        /// Gets the last pool object from the list.
        /// </summary>
        /// <returns></returns>
        public IPoolObjectRoot PopLast()
        {
            if (PoolObjectCount > 0)
            {
                IPoolObjectRoot poolObject = PoolObjects[PoolObjectCount - 1];
                PoolObjectCount--;
                PoolObjects.RemoveAt(PoolObjectCount);

                return(poolObject);
            }

            return(null);
        }