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;