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();
	}
}
Beispiel #2
0
FPredictionKey UAbilityTask::GetActivationPredictionKey() const
{
	UGameplayAbility* MyAbility = Ability.Get();
	return MyAbility ? MyAbility->GetCurrentActivationInfo().GetActivationPredictionKey() : FPredictionKey();
}