Return all pooled objects to pool on player death

This commit is contained in:
baz 2025-09-11 02:21:18 +01:00
parent d49010ff68
commit 56d4c5f5b4
3 changed files with 30 additions and 0 deletions

View File

@ -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);

View File

@ -22,6 +22,8 @@ public:
void ReturnObject(AActor* Object);
void ReturnAllObjects();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;

View File

@ -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()