From 899f058596b4040a6a24d9190b5df31bad00eb9a Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Sun, 22 May 2022 14:26:02 +0200 Subject: [PATCH] 151 - Grenades in Multiplayer --- Source/Blaster/Components/CombatComponent.cpp | 12 ++++++++++-- Source/Blaster/Components/CombatComponent.h | 3 +++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Source/Blaster/Components/CombatComponent.cpp b/Source/Blaster/Components/CombatComponent.cpp index 97ecd49..b623253 100644 --- a/Source/Blaster/Components/CombatComponent.cpp +++ b/Source/Blaster/Components/CombatComponent.cpp @@ -315,10 +315,18 @@ void UCombatComponent::ThrowGrenadeFinished() void UCombatComponent::LaunchGrenade() { ShowAttachedGrenade(false); - if (Character && Character->HasAuthority() && GrenadeClass && Character->GetAttachedGrenade()) + if (Character && Character->IsLocallyControlled()) + { + ServerLaunchGrenade(HitTarget); + } +} + +void UCombatComponent::ServerLaunchGrenade_Implementation(const FVector_NetQuantize& Target) +{ + if (Character && GrenadeClass && Character->GetAttachedGrenade()) { const FVector StartingLocation = Character->GetAttachedGrenade()->GetComponentLocation(); - FVector ToTarget = HitTarget - StartingLocation; + FVector ToTarget = Target - StartingLocation; FActorSpawnParameters SpawnParams; SpawnParams.Owner = Character; SpawnParams.Instigator = Character; diff --git a/Source/Blaster/Components/CombatComponent.h b/Source/Blaster/Components/CombatComponent.h index b75f767..ee85433 100644 --- a/Source/Blaster/Components/CombatComponent.h +++ b/Source/Blaster/Components/CombatComponent.h @@ -39,6 +39,9 @@ public: UFUNCTION(BlueprintCallable) void LaunchGrenade(); + + UFUNCTION(Server, Reliable) + void ServerLaunchGrenade(const FVector_NetQuantize& Target); protected: virtual void BeginPlay() override;