Files
UnrealEngine/Engine/Source/Runtime/AugmentedReality/Private/ARTraceResult.cpp
2025-05-18 13:04:45 +08:00

68 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ARTraceResult.h"
#include "ARSystem.h"
#include "ARSupportInterface.h"
#include "IXRTrackingSystem.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(ARTraceResult)
//
//
//
FARTraceResult::FARTraceResult()
: FARTraceResult(nullptr, 0.0f, EARLineTraceChannels::None, FTransform(), nullptr)
{
}
FARTraceResult::FARTraceResult( const TSharedPtr<FARSupportInterface , ESPMode::ThreadSafe>& InARSystem, float InDistanceFromCamera, EARLineTraceChannels InTraceChannel, const FTransform& InLocalTransform, UARTrackedGeometry* InTrackedGeometry )
: DistanceFromCamera(InDistanceFromCamera)
, TraceChannel(InTraceChannel)
, LocalTransform(InLocalTransform)
, TrackedGeometry(InTrackedGeometry)
, ARSystem(InARSystem)
{
}
float FARTraceResult::GetDistanceFromCamera() const
{
return DistanceFromCamera;
}
void FARTraceResult::SetLocalToWorldTransform(const FTransform& LocalToWorldTransform)
{
const auto TrackingToWorldTransform = ARSystem->GetXRTrackingSystem()->GetTrackingToWorldTransform();
const auto AlignmentTransform = ARSystem->GetAlignmentTransform();
LocalTransform = LocalToWorldTransform * TrackingToWorldTransform.Inverse() * AlignmentTransform.Inverse();
}
FTransform FARTraceResult::GetLocalToTrackingTransform() const
{
return LocalTransform * ARSystem->GetAlignmentTransform();
}
FTransform FARTraceResult::GetLocalToWorldTransform() const
{
return GetLocalToTrackingTransform() * ARSystem->GetXRTrackingSystem()->GetTrackingToWorldTransform();
}
FTransform FARTraceResult::GetLocalTransform() const
{
return LocalTransform;
}
UARTrackedGeometry* FARTraceResult::GetTrackedGeometry() const
{
return TrackedGeometry;
}
EARLineTraceChannels FARTraceResult::GetTraceChannel() const
{
return TraceChannel;
}