18{
19 ACharacter* Character = Cast<ACharacter>(SourceActor);
20 if (!Character)
21 {
22 return;
23 }
24
26
27 FVector Start = Character->GetActorLocation();
28 FVector Forward = Character->GetActorForwardVector();
29
31
33
34 FQuat CapsuleRot = FRotationMatrix::MakeFromZ(Forward).ToQuat();
35
37 TArray<FOverlapResult> Overlaps;
38
39 GetWorld()->OverlapMultiByChannel(
40 Overlaps,
41 Center,
42 CapsuleRot,
44 FCollisionShape::MakeCapsule(CurrentRadius, CapsuleHalfHeight),
45 Params
46 );
47
48 for (const FOverlapResult& Overlap : Overlaps)
49 {
50 FHitResult FakeHit(Overlap.GetActor(), Overlap.Component.Get(), Center, FVector::ZeroVector);
51 FakeHit.ImpactPoint = Center;
52 OutHits.Add(FakeHit);
53 }
54
55#if ENABLE_DRAW_DEBUG
57 {
58 FColor DrawColor = OutHits.Num() > 0 ? FColor::Green : FColor::Red;
59 DrawDebugCapsule(GetWorld(), Center, CapsuleHalfHeight, CurrentRadius, CapsuleRot, DrawColor, false, 1.0f);
60 }
61#endif
62
63}
Definition TA_CapsuleOverlap.h:13
ECollisionChannel TraceChannel
Definition TA_Trace.h:38
bool bShowDebug
Definition TA_Trace.h:36
float Level
Definition TA_Trace.h:37