void ASWeaponInstant::ProcessInstantHitConfirmed(const FHitResult& Impact, const FVector& Origin, const FVector& ShootDir)
{
    // Handle damage
    if (ShouldDealDamage(Impact.GetActor()))
    {
        DealDamage(Impact, ShootDir);
    }

    // Play FX on remote clients
    if (Role == ROLE_Authority)
    {
        HitImpactNotify = Impact.ImpactPoint;
    }

    // Play FX locally
    if (GetNetMode() != NM_DedicatedServer)
    {
        SimulateInstantHit(Impact.ImpactPoint);
    }
}
void ASWeaponInstant::OnRep_HitLocation()
{
    // Played on all remote clients
    SimulateInstantHit(HitImpactNotify);
}
void AShooterWeapon_Instant::OnRep_HitNotify()
{
    SimulateInstantHit(HitNotify.Origin, HitNotify.RandomSeed, HitNotify.ReticleSpread);
}
void AAmethystWeapon_Instance::OnRep_HitNotify()
{
    SimulateInstantHit(HitNotify.Origin, HitNotify.RandomSeed, HitNotify.ReticleSpread);
}