diff --git a/Source/Nakatomi/PlayerCharacter.cpp b/Source/Nakatomi/PlayerCharacter.cpp index 1bee0f3..f2404a4 100644 --- a/Source/Nakatomi/PlayerCharacter.cpp +++ b/Source/Nakatomi/PlayerCharacter.cpp @@ -252,24 +252,30 @@ void APlayerCharacter::CalculateHits(TArray* hits) { hits->Add(Result); DrawDebugLine(GetWorld(), TraceStart, Result.ImpactPoint, FColor::Blue, true, 500, 0U, 0); + } + } +} - // TODO: Handle hits in a meaningful way - FActorSpawnParameters SpawnParameters; - SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; +void APlayerCharacter::ProcessHits(TArray hits) +{ + for (FHitResult Hit : hits) + { + // TODO: Handle hits in a meaningful way + FActorSpawnParameters SpawnParameters; + SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - // Spawn field actor - FTransform transform; - transform.SetLocation(Result.ImpactPoint); - auto field = GetWorld()->SpawnActor(CurrentWeapon->GetFieldSystemActor(), transform, SpawnParameters); - - if (Result.GetActor()) + // Spawn field actor + FTransform transform; + transform.SetLocation(Hit.ImpactPoint); + auto field = GetWorld()->SpawnActor(CurrentWeapon->GetFieldSystemActor(), transform, SpawnParameters); + + if (Hit.GetActor()) + { + if (Hit.GetActor()->ActorHasTag("Enemy")) { - if (Result.GetActor()->ActorHasTag("Enemy")) - { - // TODO: Do thing - auto enemy = Cast(Result.GetActor()); - enemy->GetHealthComponent()->TakeDamage(Result.GetActor(),CurrentWeapon->GetWeaponProperties()->WeaponDamage, nullptr, GetController(), this); - } + // TODO: Do thing + auto enemy = Cast(Hit.GetActor()); + enemy->GetHealthComponent()->TakeDamage(Hit.GetActor(), CurrentWeapon->GetWeaponProperties()->WeaponDamage, nullptr, GetController(), this); } } } @@ -300,6 +306,7 @@ void APlayerCharacter::OnFire() TArray Hits = TArray(); CalculateHits(&Hits); + ProcessHits(Hits); CurrentWeapon->DecrementAmmoCount(1); diff --git a/Source/Nakatomi/PlayerCharacter.h b/Source/Nakatomi/PlayerCharacter.h index ad6c2cb..731fc3a 100644 --- a/Source/Nakatomi/PlayerCharacter.h +++ b/Source/Nakatomi/PlayerCharacter.h @@ -114,7 +114,9 @@ public: void SetWalkingCallback(const FInputActionInstance& Instance); - void CalculateHits(TArray* hits); + virtual void CalculateHits(TArray* hits) override; + + virtual void ProcessHits(TArray hits) override; void WeaponSwitchingCallback(const FInputActionInstance& Instance);