refactor the way we populate and utilize motion sources for viveopenxr compatibility

This commit is contained in:
Mamadou Babaei
2025-02-14 12:02:28 +01:00
parent d8c308e1ef
commit 67810c0e7f
9 changed files with 386 additions and 33 deletions
@@ -291,19 +291,15 @@ struct FSGXRTracker::FImpl
return Name;
}
FORCEINLINE static FName GetLeftPositionalTrackingHardwareMotionSourceName()
FORCEINLINE static const FName& GetLeftPositionalTrackingHardwareMotionSourceName()
{
const FName Name{
GetControllerHandEnumName(GetWristTrackingSettings().LeftHandMotionSource)
};
const FName& Name{GetWristTrackingSettings().LeftHandMotionSource};
return Name;
}
FORCEINLINE static FName GetRightPositionalTrackingHardwareMotionSourceName()
FORCEINLINE static const FName& GetRightPositionalTrackingHardwareMotionSourceName()
{
const FName Name{
GetControllerHandEnumName(GetWristTrackingSettings().RightHandMotionSource)
};
const FName& Name{GetWristTrackingSettings().RightHandMotionSource};
return Name;
}
@@ -2028,12 +2024,9 @@ void FSGXRTracker::FImpl::BuildMotionSourceToKeypointMap()
}
const FSGWristTrackingSettings& WristTrackingSettings{GetWristTrackingSettings()};
const FName LeftHandSGMotionSourceName{
GetControllerHandEnumName(WristTrackingSettings.LeftHandMotionSource)
};
const FName RightHandSGMotionSourceName{
GetControllerHandEnumName(WristTrackingSettings.RightHandMotionSource)
};
const FName& LeftHandSGMotionSourceName{WristTrackingSettings.LeftHandMotionSource};
const FName& RightHandSGMotionSourceName{WristTrackingSettings.RightHandMotionSource};
MotionSourceToKeypointMap.Add(
LeftHandSGMotionSourceName, FSGMotionSourceInfo(EHandKeypoint::Wrist, true));
MotionSourceToKeypointMap.Add(
@@ -2122,12 +2115,10 @@ bool FSGXRTracker::FImpl::GetControllerTransform(
static const FName OpenXRViveTrackerName{TEXT("OpenXRViveTracker")};
const FSGWristTrackingSettings& WristTrackingSettings{GetWristTrackingSettings()};
const EControllerHand PositionalTrackingHardwareHand =
const FName& PositionalTrackingHardwareMotionSource{
bRight
? WristTrackingSettings.RightHandMotionSource
: WristTrackingSettings.LeftHandMotionSource;
const FName& PositionalTrackingHardwareMotionSource{
GetControllerHandEnumName(PositionalTrackingHardwareHand)
: WristTrackingSettings.LeftHandMotionSource
};
bool bTracked = false;
@@ -2221,12 +2212,10 @@ bool FSGXRTracker::FImpl::GetControllerTransform(
bool FSGXRTracker::FImpl::GetWristTransform(const bool bRight, FTransform& OutTransform) const
{
const FSGWristTrackingSettings& WristTrackingSettings{GetWristTrackingSettings()};
const EControllerHand PositionalTrackingHardwareHand =
const FName& MotionSource{
bRight
? WristTrackingSettings.RightHandMotionSource
: WristTrackingSettings.LeftHandMotionSource;
const FName& MotionSource{
GetControllerHandEnumName(PositionalTrackingHardwareHand)
: WristTrackingSettings.LeftHandMotionSource
};
if (!ensureAlwaysMsgf(XRTrackingSystem, TEXT("Invalid XR tracking system!")))