implement proper mm/cm conversions
This commit is contained in:
@@ -93,7 +93,7 @@ FSGBasicHandModelImpl FSGBasicHandModelImpl::Deserialize(const FString& Serializ
|
||||
const TArray<TArray<float>>& FSGBasicHandModelImpl::GetBaseFingerLengths()
|
||||
{
|
||||
static const TArray<TArray<float>> BaseFingerLengths{
|
||||
FSGArrayUtils::FromStdVector<float>(
|
||||
FSGArrayUtils::FromMillimeters(
|
||||
FSGBasicHandModelImpl::FBasicHandModelType::GetBaseFingerLengths())
|
||||
};
|
||||
return BaseFingerLengths;
|
||||
@@ -102,7 +102,7 @@ const TArray<TArray<float>>& FSGBasicHandModelImpl::GetBaseFingerLengths()
|
||||
const TArray<FVector>& FSGBasicHandModelImpl::GetBaseJointPositions()
|
||||
{
|
||||
static const TArray<FVector> BaseJointPositions{
|
||||
FSGArrayUtils::FromStdVector<FSGVect3DImpl::FVect3DType, FVector, FSGVect3DImpl, &FSGVect3DImpl::ToFVector>(
|
||||
FSGArrayUtils::FromMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
FBasicHandModelType::GetBaseJointPositions())
|
||||
};
|
||||
return BaseJointPositions;
|
||||
@@ -137,11 +137,12 @@ FSGBasicHandModelImpl::FSGBasicHandModelImpl(bool bRightHanded, const TArray<TAr
|
||||
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 22 ) */
|
||||
{
|
||||
std::vector<std::vector<float>> LengthsVector{
|
||||
FSGArrayUtils::ToStdVector<float>(Lengths)
|
||||
FSGArrayUtils::ToMillimeters(Lengths)
|
||||
};
|
||||
|
||||
std::vector<FSGVect3DImpl::FVect3DType> StartPositionsVector{FSGArrayUtils::ToStdVector<
|
||||
FVector, FSGVect3DImpl::FVect3DType, FSGVect3DImpl, &FSGVect3DImpl::ToVect3D>(StartPositions)};
|
||||
std::vector<FSGVect3DImpl::FVect3DType> StartPositionsVector{
|
||||
FSGArrayUtils::ToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(StartPositions)
|
||||
};
|
||||
|
||||
Pimpl->BasicHandModel = FSGBasicHandModelImpl::FBasicHandModelType(bRightHanded, MoveTemp(LengthsVector),
|
||||
MoveTemp(StartPositionsVector));
|
||||
@@ -157,14 +158,16 @@ FSGBasicHandModelImpl::FSGBasicHandModelImpl(bool bRightHanded, const TArray<TAr
|
||||
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 22 ) */
|
||||
{
|
||||
std::vector<std::vector<float>> LengthsVector{
|
||||
FSGArrayUtils::ToStdVector<float>(Lengths)
|
||||
FSGArrayUtils::ToMillimeters(Lengths)
|
||||
};
|
||||
|
||||
std::vector<FSGVect3DImpl::FVect3DType> StartPositionsVector{FSGArrayUtils::ToStdVector<
|
||||
FVector, FSGVect3DImpl::FVect3DType, FSGVect3DImpl, &FSGVect3DImpl::ToVect3D>(StartPositions)};
|
||||
std::vector<FSGVect3DImpl::FVect3DType> StartPositionsVector{
|
||||
FSGArrayUtils::ToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(StartPositions)
|
||||
};
|
||||
|
||||
std::vector<FSGQuatImpl::FQuatType> StartRotationsVector{FSGArrayUtils::ToStdVector<
|
||||
FQuat, FSGQuatImpl::FQuatType, FSGQuatImpl, &FSGQuatImpl::ToQuat>(StartRotations)};
|
||||
std::vector<FSGQuatImpl::FQuatType> StartRotationsVector{
|
||||
FSGArrayUtils::ToStdVector<FQuat, FSGQuatImpl::FQuatType, FSGQuatImpl, &FSGQuatImpl::ToQuat>(StartRotations)
|
||||
};
|
||||
|
||||
Pimpl->BasicHandModel = FSGBasicHandModelImpl::FBasicHandModelType(bRightHanded, MoveTemp(LengthsVector),
|
||||
MoveTemp(StartPositionsVector),
|
||||
@@ -280,7 +283,7 @@ TArray<float> FSGBasicHandModelImpl::GetFingerRatios(const ESGFinger Finger) con
|
||||
TArray<FVector> FSGBasicHandModelImpl::GetStartJointPositions() const
|
||||
{
|
||||
TArray<FVector> StartJointPositions{
|
||||
FSGArrayUtils::FromStdVector<FSGVect3DImpl::FVect3DType, FVector, FSGVect3DImpl, &FSGVect3DImpl::ToFVector>(
|
||||
FSGArrayUtils::FromMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
Pimpl->BasicHandModel.GetStartJointPositions())
|
||||
};
|
||||
return MoveTemp(StartJointPositions);
|
||||
@@ -289,21 +292,23 @@ TArray<FVector> FSGBasicHandModelImpl::GetStartJointPositions() const
|
||||
void FSGBasicHandModelImpl::SetStartJointPositions(const TArray<FVector>& StartJointPositions)
|
||||
{
|
||||
std::vector<FSGVect3DImpl::FVect3DType> StartJointPositionsVector{
|
||||
FSGArrayUtils::ToStdVector<
|
||||
FVector, FSGVect3DImpl::FVect3DType, FSGVect3DImpl, &FSGVect3DImpl::ToVect3D>(StartJointPositions)
|
||||
FSGArrayUtils::ToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(StartJointPositions)
|
||||
};
|
||||
Pimpl->BasicHandModel.SetStartJointPositions(MoveTemp(StartJointPositionsVector));
|
||||
}
|
||||
|
||||
void FSGBasicHandModelImpl::SetStartJointPosition(ESGFinger Finger, const FVector& Position)
|
||||
void FSGBasicHandModelImpl::SetStartJointPosition(const ESGFinger Finger, const FVector& Position)
|
||||
{
|
||||
Pimpl->BasicHandModel.SetStartJointPosition(FSGCoreEnumCast::ToEFinger(Finger),
|
||||
FSGVect3DImpl(Position).ToVect3D());
|
||||
Pimpl->BasicHandModel.SetStartJointPosition(
|
||||
FSGCoreEnumCast::ToEFinger(Finger),
|
||||
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(Position));
|
||||
}
|
||||
|
||||
void FSGBasicHandModelImpl::SetStartJointPosition(const uint8 Finger, const FVector& Position)
|
||||
{
|
||||
Pimpl->BasicHandModel.SetStartJointPosition(Finger, FSGVect3DImpl(Position).ToVect3D());
|
||||
Pimpl->BasicHandModel.SetStartJointPosition(
|
||||
Finger,
|
||||
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(Position));
|
||||
}
|
||||
|
||||
TArray<FQuat> FSGBasicHandModelImpl::GetStartJointRotations() const
|
||||
@@ -327,13 +332,15 @@ void FSGBasicHandModelImpl::SetStartJointRotations(const TArray<FQuat>& StartJoi
|
||||
|
||||
FVector FSGBasicHandModelImpl::GetJointPosition(const ESGFinger Finger) const
|
||||
{
|
||||
const FSGVect3DImpl Position(Pimpl->BasicHandModel.GetJointPosition(FSGCoreEnumCast::ToEFinger(Finger)));
|
||||
return Position.ToFVector();
|
||||
return FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
Pimpl->BasicHandModel.GetJointPosition(FSGCoreEnumCast::ToEFinger(Finger)));
|
||||
}
|
||||
|
||||
void FSGBasicHandModelImpl::SetJointPosition(const FVector& NewPosition, const ESGFinger Finger)
|
||||
{
|
||||
Pimpl->BasicHandModel.SetJointPosition(FSGVect3DImpl(NewPosition).ToVect3D(), FSGCoreEnumCast::ToEFinger(Finger));
|
||||
Pimpl->BasicHandModel.SetJointPosition(
|
||||
FSGUnits::CentimetersToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(NewPosition),
|
||||
FSGCoreEnumCast::ToEFinger(Finger));
|
||||
}
|
||||
|
||||
FQuat FSGBasicHandModelImpl::GetJointRotation(const ESGFinger Finger) const
|
||||
@@ -364,7 +371,7 @@ float FSGBasicHandModelImpl::GetTotalLength(const ESGFinger Finger) const
|
||||
TArray<FVector> FSGBasicHandModelImpl::Get3DLengths(const ESGFinger Finger) const
|
||||
{
|
||||
const TArray<FVector> Lengths{
|
||||
FSGArrayUtils::FromStdVector<FSGVect3DImpl::FVect3DType, FVector, FSGVect3DImpl, &FSGVect3DImpl::ToFVector>(
|
||||
FSGArrayUtils::FromMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
Pimpl->BasicHandModel.Get3DLengths(FSGCoreEnumCast::ToEFinger(Finger)))
|
||||
};
|
||||
return Lengths;
|
||||
@@ -403,4 +410,4 @@ FSGBasicHandModelImpl::FImpl::~FImpl() = default;
|
||||
void FSGBasicHandModelImpl::FImplDeleter::operator()(const FImpl* P) const
|
||||
{
|
||||
delete P;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user