本文整理汇总了C++中FGAGameEffectHandle::GetContextRef方法的典型用法代码示例。如果您正苦于以下问题:C++ FGAGameEffectHandle::GetContextRef方法的具体用法?C++ FGAGameEffectHandle::GetContextRef怎么用?C++ FGAGameEffectHandle::GetContextRef使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FGAGameEffectHandle
的用法示例。
在下文中一共展示了FGAGameEffectHandle::GetContextRef方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InternalCheckDurationEffectStacking
void FGAGameEffectContainer::InternalCheckDurationEffectStacking(const FGAGameEffectHandle& HandleIn)
{
UGAGameEffectSpec* Spec = HandleIn.GetEffectSpec();
//sEGAEffectStacking Stacking = Spec->EffectStacking;
EGAEffectAggregation Aggregation = Spec->EffectAggregation;
EGAEffectStacking Stacking = HandleIn.GetEffectSpec()->EffectStacking;
UE_LOG(GameAttributes, Log, TEXT("Stacking Type: %s"), *EnumToString::GetStatckingAsString(Stacking));
FGAGameEffectHandle* Handle = nullptr;
switch (Aggregation)
{
case EGAEffectAggregation::AggregateByInstigator:
{
TMap<FName, TSet<FGAGameEffectHandle>>* EffectHandle = InstigatorEffectHandles.Find(HandleIn.GetContextRef().Instigator.Get());
TSet<FGAGameEffectHandle>* HandleSet = nullptr;
if (EffectHandle)
{
HandleSet = EffectHandle->Find(HandleIn.GetEffectSpec()->GetFName());
if (HandleSet)
{
Handle = HandleSet->Find(HandleIn);
}
}
}
case EGAEffectAggregation::AggregateByTarget:
{
TSet<FGAGameEffectHandle>* HandleSet = TargetEffectByType.Find(HandleIn.GetEffectSpec()->GetFName());
if (HandleSet)
{
Handle = HandleSet->Find(HandleIn);
}
break;
}
}
switch (Stacking)
{
case EGAEffectStacking::Add:
{
InternalApplyDuration(HandleIn);
break;
}
case EGAEffectStacking::Duration:
{
if (Handle)
{
InternalExtendEffectDuration(*Handle, HandleIn);
}
else
{
FGAGameEffectHandle InvalidHandle;
InternalExtendEffectDuration(HandleIn, InvalidHandle);
}
break;
}
case EGAEffectStacking::Intensity:
{
break;
}
case EGAEffectStacking::Override:
{
if (Handle)
{
RemoveEffect(*Handle);
}
InternalApplyDuration(HandleIn);
break;
}
case EGAEffectStacking::StrongerOverride:
{
if (Handle)
{
RemoveEffect(*Handle);
}
InternalApplyDuration(HandleIn);
break;
}
}
InternalApplyEffectByAggregation(HandleIn);
}