本文整理汇总了C++中TWeakObjectPtr::PreInitialize方法的典型用法代码示例。如果您正苦于以下问题:C++ TWeakObjectPtr::PreInitialize方法的具体用法?C++ TWeakObjectPtr::PreInitialize怎么用?C++ TWeakObjectPtr::PreInitialize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TWeakObjectPtr
的用法示例。
在下文中一共展示了TWeakObjectPtr::PreInitialize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SphereParams
TArray<AActor*> URPGEffectBase::SpreadEffect(URPGEffectBase* EffectIn, FVector FromLoc, float Radius, int32 MaxTargets)
{
TArray<AActor*> ActorHits;
if ((!GetWorld()))
return ActorHits;
TWeakObjectPtr<URPGEffectPeriodic> PeriodicEffect = Cast<URPGEffectPeriodic>(EffectIn);
float TargetCounter = 0;
//EffectSpec.SetEffect();
FCollisionQueryParams SphereParams(this->GetFName(), false, CausedBy);
//make sure we have world
TArray<FOverlapResult> Overlaps;
GetWorld()->OverlapMulti(Overlaps, FromLoc, FQuat::Identity, FCollisionShape::MakeSphere(Radius), SphereParams, FCollisionObjectQueryParams(FCollisionObjectQueryParams::InitType::AllDynamicObjects));
for (FOverlapResult& overlap : Overlaps)
{
ActorHits.AddUnique(overlap.GetActor());
}
if (ActorHits.Num() > 0)
{
int32 TargetCounter = 0;
if (MaxTargets > TargetCounter)
{
TargetCounter++;
for (AActor* ActorHit : ActorHits)
{
URPGAttributeComponent* HitActorAttribute = ActorHit->FindComponentByClass<URPGAttributeComponent>();
if (HitActorAttribute)
{
if (PeriodicEffect.IsValid())
{
PeriodicEffect->SetTarget(ActorHit);
PeriodicEffect->PreInitialize();
PeriodicEffect->Initialize();
HitActorAttribute->ApplyPeriodicEffect(PeriodicEffect.Get());
continue;
}
EffectIn->SetTarget(ActorHit);
EffectIn->PreInitialize();
EffectIn->Initialize();
}
}
}
}
return ActorHits;
}