implement proper mm/cm conversions

This commit is contained in:
Mamadou Babaei
2022-11-17 02:23:04 +01:00
parent 4903e11dee
commit aac0bb8a05
11 changed files with 248 additions and 168 deletions
@@ -210,12 +210,16 @@ void FSGSenseGloveImpl::CalculateGloveLocation(const FVector& ReferencePosition,
{
FSGVect3DImpl::FVect3DType GlovePosition;
FSGQuatImpl::FQuatType GloveRotation;
FSenseGloveType::CalculateGloveLocation(FSGVect3DImpl{ReferencePosition}.ToVect3D(),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
bRightHanded, FSGCoreEnumCast::ToEFinger(MountedOn),
GlovePosition, GloveRotation);
OutGlovePosition = FSGVect3DImpl{MoveTemp(GlovePosition)}.ToFVector();
FSenseGloveType::CalculateGloveLocation(
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(ReferencePosition),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
bRightHanded, FSGCoreEnumCast::ToEFinger(MountedOn),
GlovePosition, GloveRotation);
OutGlovePosition = FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
MoveTemp(GlovePosition));;
OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat();
}
@@ -228,14 +232,18 @@ void FSGSenseGloveImpl::CalculateWristLocation(const FVector& ReferencePosition,
{
FSGVect3DImpl::FVect3DType WristPosition;
FSGQuatImpl::FQuatType WristRotation;
FSenseGloveType::CalculateWristLocation(FSGVect3DImpl{ReferencePosition}.ToVect3D(),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
bRightHanded, FSGCoreEnumCast::ToEFinger(MountedOn),
FSGVect3DImpl(GloveWristPositionOffset).ToVect3D(),
FSGQuatImpl(GloveWristRotationOffset).ToQuat(),
WristPosition, WristRotation);
OutWristPosition = FSGVect3DImpl{MoveTemp(WristPosition)}.ToFVector();
FSenseGloveType::CalculateWristLocation(
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(ReferencePosition),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
bRightHanded, FSGCoreEnumCast::ToEFinger(MountedOn),
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(GloveWristPositionOffset),
FSGQuatImpl(GloveWristRotationOffset).ToQuat(),
WristPosition, WristRotation);
OutWristPosition = FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
MoveTemp(WristPosition));
OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat();
}
@@ -470,11 +478,15 @@ void FSGSenseGloveImpl::GetGloveLocation(const FVector& ReferencePosition, const
{
FSGVect3DImpl::FVect3DType GlovePosition;
FSGQuatImpl::FQuatType GloveRotation;
ToSenseGlovePtrChecked()->GetGloveLocation(FSGVect3DImpl{ReferencePosition}.ToVect3D(),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
GlovePosition, GloveRotation);
OutGlovePosition = FSGVect3DImpl{MoveTemp(GlovePosition)}.ToFVector();
ToSenseGlovePtrChecked()->GetGloveLocation(
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(ReferencePosition),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
GlovePosition, GloveRotation);
OutGlovePosition = FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
MoveTemp(GlovePosition));
OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat();
}
@@ -485,12 +497,16 @@ void FSGSenseGloveImpl::GetGloveLocation(const FVector& ReferencePosition, const
{
FSGVect3DImpl::FVect3DType GlovePosition;
FSGQuatImpl::FQuatType GloveRotation;
ToSenseGlovePtrChecked()->GetGloveLocation(FSGVect3DImpl{ReferencePosition}.ToVect3D(),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
FSGCoreEnumCast::ToEFinger(MountedOn),
GlovePosition, GloveRotation);
OutGlovePosition = FSGVect3DImpl{MoveTemp(GlovePosition)}.ToFVector();
ToSenseGlovePtrChecked()->GetGloveLocation(
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(ReferencePosition),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
FSGCoreEnumCast::ToEFinger(MountedOn),
GlovePosition, GloveRotation);
OutGlovePosition = FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
MoveTemp(GlovePosition));
OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat();
}
@@ -500,11 +516,15 @@ void FSGSenseGloveImpl::GetWristLocation(const FVector& ReferencePosition, const
{
FSGVect3DImpl::FVect3DType WristPosition;
FSGQuatImpl::FQuatType WristRotation;
ToSenseGlovePtrChecked()->GetWristLocation(FSGVect3DImpl{ReferencePosition}.ToVect3D(),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
WristPosition, WristRotation);
OutWristPosition = FSGVect3DImpl{MoveTemp(WristPosition)}.ToFVector();
ToSenseGlovePtrChecked()->GetWristLocation(
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(ReferencePosition),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
WristPosition, WristRotation);
OutWristPosition = FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
MoveTemp(WristPosition));
OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat();
}
@@ -515,13 +535,17 @@ void FSGSenseGloveImpl::GetWristLocation(const FVector& ReferencePosition, const
{
FSGVect3DImpl::FVect3DType WristPosition;
FSGQuatImpl::FQuatType WristRotation;
ToSenseGlovePtrChecked()->GetWristLocation(FSGVect3DImpl{ReferencePosition}.ToVect3D(),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
FSGVect3DImpl(GloveWristPositionOffset).ToVect3D(),
FSGQuatImpl(GloveWristRotationOffset).ToQuat(),
WristPosition, WristRotation);
OutWristPosition = FSGVect3DImpl{MoveTemp(WristPosition)}.ToFVector();
ToSenseGlovePtrChecked()->GetWristLocation(
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(ReferencePosition),
FSGQuatImpl{ReferenceRotation}.ToQuat(),
FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware),
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(GloveWristPositionOffset),
FSGQuatImpl(GloveWristRotationOffset).ToQuat(),
WristPosition, WristRotation);
OutWristPosition = FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
MoveTemp(WristPosition));
OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat();
}