// ---------------------------------------------------------------------------------------------------- #endregion #region Despawn Methods // ---------------------------------------------------------------------------------------------------- /// <summary> /// Despawns and returns an instance. /// </summary> /// <param name="instance">The instance.</param> public void Despawn(FeatherPoolInstance instance) { // Check if object already despwned if (!this.activeInstances.Contains(instance)) { return; } // Remove instance from active instances and makes it available this.activeInstances.Remove(instance); this.availableInstances.Push(instance); // Signal if implementing instance.InvokeOnDespawning(); // Reset Object instance.PrefabInstance.SetActive(false); instance.PrefabInstance.transform.SetParent(this.transform); instance.ResetTransform(); // Signal if implementing instance.InvokeOnDespawning(); #if UNITY_EDITOR UpdateProgressBar(); #endif }