Add ability to VLOG what spring arm is occluded from

This commit is contained in:
Steve Streeting 2024-03-14 16:36:24 +00:00
parent 84e4560cde
commit 7127c9e729

View File

@ -1,6 +1,10 @@

#include "StevesSpringArmComponent.h"
#include "StevesUEHelpers.h"
// Set this to 1 to VLOG where camera is being occluded from
#define ENABLE_VLOG_CAMERA_OCCLUSION 0
UStevesSpringArmComponent::UStevesSpringArmComponent()
{
@ -12,6 +16,24 @@ FVector UStevesSpringArmComponent::BlendLocations(const FVector& DesiredArmLocat
bool bHitSomething,
float DeltaTime)
{
#if ENABLE_VLOG_CAMERA_OCCLUSION
#if ENABLE_VISUAL_LOG
if (bHitSomething)
{
FVector NewDesiredLoc = PreviousDesiredLoc - PreviousDesiredRot.Vector() * TargetArmLength;
// Add socket offset in local space
NewDesiredLoc += FRotationMatrix(PreviousDesiredRot).TransformVector(SocketOffset);
FCollisionQueryParams QueryParams(SCENE_QUERY_STAT(SpringArm), false, GetOwner());
FHitResult Result;
if (GetWorld()->SweepSingleByChannel(Result, PreviousArmOrigin, NewDesiredLoc, FQuat::Identity, ProbeChannel, FCollisionShape::MakeSphere(ProbeSize), QueryParams))
{
UE_VLOG_ARROW(this, LogStevesUEHelpers, Log, PreviousArmOrigin, Result.Location, FColor::Cyan, TEXT(""));
UE_VLOG_LOCATION(this, LogStevesUEHelpers, Log, Result.Location, ProbeSize, FColor::Cyan, TEXT("%s"), *Result.GetActor()->GetActorNameOrLabel());
}
}
#endif
#endif
// These locations are in world space, we only want to blend the arm length, not the rest
const FVector Base = Super::BlendLocations(DesiredArmLocation, TraceHitLocation, bHitSomething, DeltaTime);