diff --git a/Source/vampires/ObjectPoolManager.cpp b/Source/vampires/ObjectPoolManager.cpp index 1cbbc34..778eef1 100644 --- a/Source/vampires/ObjectPoolManager.cpp +++ b/Source/vampires/ObjectPoolManager.cpp @@ -70,6 +70,19 @@ void AObjectPoolManager::ReturnObject(AActor* Object) } } +void AObjectPoolManager::ReturnAllObjects() +{ + int ObjectPoolSize = ObjectPool.Num(); + + for (int i = 0; i < ObjectPoolSize; i++) + { + if (!ObjectPool[i]->IsHidden()) + { + ReturnObject(ObjectPool[i]); + } + } +} + void AObjectPoolManager::SetObjectStatus(bool bEnabled, AActor* Object) { Object->SetActorHiddenInGame(!bEnabled); diff --git a/Source/vampires/ObjectPoolManager.h b/Source/vampires/ObjectPoolManager.h index ca2ba18..dc4cbc7 100644 --- a/Source/vampires/ObjectPoolManager.h +++ b/Source/vampires/ObjectPoolManager.h @@ -22,6 +22,8 @@ public: void ReturnObject(AActor* Object); + void ReturnAllObjects(); + protected: // Called when the game starts or when spawned virtual void BeginPlay() override; diff --git a/Source/vampires/VampireGameMode.cpp b/Source/vampires/VampireGameMode.cpp index 46b21a5..143d121 100644 --- a/Source/vampires/VampireGameMode.cpp +++ b/Source/vampires/VampireGameMode.cpp @@ -159,6 +159,21 @@ void AVampireGameMode::AddRandomEnemyTypeToPool() void AVampireGameMode::OnPlayerDeath(FDamageInfo DamageInfo) { GetWorldTimerManager().ClearTimer(SpawnEnemyTimerDelegate); + + if (EnemyObjectPoolManager) + { + EnemyObjectPoolManager->ReturnAllObjects(); + } + + if (ProjectileObjectPoolManager) + { + ProjectileObjectPoolManager->ReturnAllObjects(); + } + + if (PickupObjectPoolManager) + { + PickupObjectPoolManager->ReturnAllObjects(); + } } void AVampireGameMode::EndGame()