37{
38
39 const float ZTarget = Capsule->GetScaledCapsuleHalfHeight_WithoutHemisphere() - RadiusOffset + HeightOffset;
40 FVector TraceStart = TargetLocation;
41 TraceStart.Z += ZTarget;
42 FVector TraceEnd = TargetLocation;
43 TraceEnd.Z -= ZTarget;
44 const float Radius = Capsule->GetUnscaledCapsuleRadius() + RadiusOffset;
45
46 const UWorld* World = Capsule->GetWorld();
47 check(World);
48
49 FCollisionQueryParams Params;
50 Params.AddIgnoredActor(Capsule->GetOwner());
51
52 FHitResult HitResult;
53 const FCollisionShape SphereCollisionShape = FCollisionShape::MakeSphere(Radius);
54 const bool bHit = World->SweepSingleByChannel(HitResult, TraceStart, TraceEnd, FQuat::Identity,
55 ECC_Visibility, FCollisionShape::MakeSphere(Radius), Params);
56
57 if (DrawDebugTrace)
58 {
60 TraceStart,
61 TraceEnd,
62 SphereCollisionShape,
63 DebugType,
64 bHit,
65 HitResult,
66 FLinearColor(0.130706f, 0.896269f, 0.144582f, 1.0f),
67 FLinearColor(0.932733f, 0.29136f, 1.0f, 1.0f),
68 1.0f);
69 }
70
71 return !(HitResult.bBlockingHit || HitResult.bStartPenetrating);
72}
static void DrawDebugSphereTraceSingle(const UWorld *World, const FVector &Start, const FVector &End, const FCollisionShape &CollisionShape, EDrawDebugTrace::Type DrawDebugType, bool bHit, const FHitResult &OutHit, FLinearColor TraceColor, FLinearColor TraceHitColor, float DrawTime)
Definition ALSDebugComponent.cpp:337