FScopedPredictionWindow::~FScopedPredictionWindow() { if (Ability.IsValid()) { // Restore old activation info settings FGameplayAbilityActivationInfo& ActivationInfo = Ability->GetCurrentActivationInfoRef(); if (ActivationInfo.ActivationMode != EGameplayAbilityActivationMode::Authority) { ActivationInfo.ActivationMode = static_cast< TEnumAsByte<EGameplayAbilityActivationMode::Type> > (ClientPrevActivationMode); } ActivationInfo.SetPredictionStale(); } if (ClearScopedPredictionKey && Owner.IsValid()) { Owner->ScopedPedictionKey = FPredictionKey(); } }
FPredictionKey UAbilityTask::GetActivationPredictionKey() const { UGameplayAbility* MyAbility = Ability.Get(); return MyAbility ? MyAbility->GetCurrentActivationInfo().GetActivationPredictionKey() : FPredictionKey(); }