diff --git a/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp b/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp index 03462ce9..46a8a4cd 100644 --- a/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp +++ b/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp @@ -88,11 +88,11 @@ struct USGVirtualHandComponent::FImpl return Path; } - static const FSGVirtualHandTrackingSettings& GetVirtualHandTrackingSettings() + static const FSGVirtualHandSettings& GetVirtualHandSettings() { const USGSettings* Settings{USGSettings::GetInstance()}; ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); - return Settings->GetTrackingSettings().VirtualHandTrackingSettings; + return Settings->GetVirtualHandSettings(); } /************************ @@ -152,12 +152,12 @@ struct USGVirtualHandComponent::FImpl const TArray& USGVirtualHandComponent::GetLeftHandBoneNames() { - return FImpl::GetVirtualHandTrackingSettings().LeftHandBoneNames; + return FImpl::GetVirtualHandSettings().LeftHandBoneNames; } const TArray& USGVirtualHandComponent::GetRightHandBoneNames() { - return FImpl::GetVirtualHandTrackingSettings().RightHandBoneNames; + return FImpl::GetVirtualHandSettings().RightHandBoneNames; } const FName& USGVirtualHandComponent::GetLeftHandBoneName(const int32 Joint) diff --git a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp index f1bd4bf5..206295aa 100644 --- a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp +++ b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp @@ -79,11 +79,11 @@ struct ASGPawn::FImpl * Methods ************************/ - FORCEINLINE static const FSGVirtualHandTrackingSettings& GetVirtualHandTrackingSettings() + FORCEINLINE static const FSGVirtualHandSettings& GetVirtualHandSettings() { const USGSettings* Settings{USGSettings::GetInstance()}; ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); - return Settings->GetTrackingSettings().VirtualHandTrackingSettings; + return Settings->GetVirtualHandSettings(); } void BindRealHandsOverlapEvents(); @@ -206,7 +206,7 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer) HandLeft->SetCollisionResponseToChannel(ECC_Destructible, ECR_Block); HandLeft->SetRight(false); HandLeft->SetVisibleWhenHandDataUnavailable(false); - HandLeft->SetRelativeRotation(FImpl::GetVirtualHandTrackingSettings().RootBoneRotationCorrection, + HandLeft->SetRelativeRotation(FImpl::GetVirtualHandSettings().RootBoneRotationCorrection, false, nullptr, ETeleportType::None); HandLeft->SetRelativeLocation(FVector{30.0f, -20.0f, -10.0f}, false, nullptr, ETeleportType::None); @@ -230,7 +230,7 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer) RealHandLeft->SetRight(false); Pimpl->SetVisibility(RealHandLeft, false); RealHandLeft->SetVisibleWhenHandDataUnavailable(false); - RealHandLeft->SetRelativeRotation(FImpl::GetVirtualHandTrackingSettings().RootBoneRotationCorrection, + RealHandLeft->SetRelativeRotation(FImpl::GetVirtualHandSettings().RootBoneRotationCorrection, false, nullptr, ETeleportType::None); RealHandLeft->SetRelativeLocation(FVector{30.0f, -20.0f, -10.0f}, false, nullptr, ETeleportType::None); @@ -365,7 +365,7 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer) HandRight->SetCollisionResponseToChannel(ECC_Destructible, ECR_Block); HandRight->SetRight(true); HandRight->SetVisibleWhenHandDataUnavailable(false); - HandRight->SetRelativeRotation(FImpl::GetVirtualHandTrackingSettings().RootBoneRotationCorrection, + HandRight->SetRelativeRotation(FImpl::GetVirtualHandSettings().RootBoneRotationCorrection, false, nullptr, ETeleportType::None); HandRight->SetRelativeLocation(FVector{30.0f, 20.0f, -10.0f}, false, nullptr, ETeleportType::None); @@ -389,7 +389,7 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer) RealHandRight->SetRight(true); Pimpl->SetVisibility(RealHandRight, false); RealHandRight->SetVisibleWhenHandDataUnavailable(false); - RealHandRight->SetRelativeRotation(FImpl::GetVirtualHandTrackingSettings().RootBoneRotationCorrection, + RealHandRight->SetRelativeRotation(FImpl::GetVirtualHandSettings().RootBoneRotationCorrection, false, nullptr, ETeleportType::None); RealHandRight->SetRelativeLocation(FVector{30.0f, 20.0f, -10.0f}, false, nullptr, ETeleportType::None); @@ -1702,7 +1702,7 @@ void ASGPawn::FImpl::UpdateHandRotation(const bool bRight, const FRotator& Rotat void ASGPawn::FImpl::UpdateLeftHandRotation(const FRotator& Rotation, const bool bUpdateVirtualHand) { const FQuat NewRotation{ - Rotation.Quaternion() * GetVirtualHandTrackingSettings().RootBoneRotationCorrection.Quaternion() + Rotation.Quaternion() * GetVirtualHandSettings().RootBoneRotationCorrection.Quaternion() }; if (bUpdateVirtualHand) { @@ -1714,7 +1714,7 @@ void ASGPawn::FImpl::UpdateLeftHandRotation(const FRotator& Rotation, const bool void ASGPawn::FImpl::UpdateRightHandRotation(const FRotator& Rotation, const bool bUpdateVirtualHand) { const FQuat NewRotation{ - Rotation.Quaternion() * GetVirtualHandTrackingSettings().RootBoneRotationCorrection.Quaternion() + Rotation.Quaternion() * GetVirtualHandSettings().RootBoneRotationCorrection.Quaternion() }; if (bUpdateVirtualHand) { diff --git a/Source/SenseGloveSettings/Private/SGSettings/SGTrackingSettings.cpp b/Source/SenseGloveSettings/Private/SGSettings/SGTrackingSettings.cpp index 53a84419..e8f77d8a 100644 --- a/Source/SenseGloveSettings/Private/SGSettings/SGTrackingSettings.cpp +++ b/Source/SenseGloveSettings/Private/SGSettings/SGTrackingSettings.cpp @@ -41,7 +41,6 @@ FSGTrackingSettings::FSGTrackingSettings() FSGGloveTrackingSettings{}, FSGHandTrackingSettings{}, FSGHMDTrackingSettings{}, - FSGVirtualHandTrackingSettings{}, FSGWristTrackingSettings{}) { } @@ -51,13 +50,11 @@ FSGTrackingSettings::FSGTrackingSettings( const FSGGloveTrackingSettings& InGloveTrackingSettings, const FSGHandTrackingSettings& InHandTrackingSettings, const FSGHMDTrackingSettings& InHmdTrackingSettings, - const FSGVirtualHandTrackingSettings& InVirtualHandTrackingSettings, const FSGWristTrackingSettings& InWristTrackingSettings) : bFallbackToHandTrackingIfNoGloveDetected(bInFallbackToHandTrackingIfNoGloveDetected), GloveTrackingSettings(InGloveTrackingSettings), HandTrackingSettings(InHandTrackingSettings), HMDTrackingSettings(InHmdTrackingSettings), - VirtualHandTrackingSettings(InVirtualHandTrackingSettings), WristTrackingSettings(InWristTrackingSettings) { } \ No newline at end of file diff --git a/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandTrackingSettings.cpp b/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettings.cpp similarity index 98% rename from Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandTrackingSettings.cpp rename to Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettings.cpp index ff8a4276..521e9521 100644 --- a/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandTrackingSettings.cpp +++ b/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettings.cpp @@ -33,12 +33,12 @@ */ -#include "SGSettings/SGVirtualHandTrackingSettings.h" +#include "SGSettings/SGVirtualHandSettings.h" #include "Engine/SkeletalMesh.h" -FSGVirtualHandTrackingSettings::FSGVirtualHandTrackingSettings() - : FSGVirtualHandTrackingSettings( +FSGVirtualHandSettings::FSGVirtualHandSettings() + : FSGVirtualHandSettings( nullptr, nullptr, 2.4f, @@ -50,7 +50,7 @@ FSGVirtualHandTrackingSettings::FSGVirtualHandTrackingSettings() { } -FSGVirtualHandTrackingSettings::FSGVirtualHandTrackingSettings( +FSGVirtualHandSettings::FSGVirtualHandSettings( const TSoftObjectPtr& InLeftHandReferenceMesh, const TSoftObjectPtr& InRightHandReferenceMesh, const float InThumbDistalPhalanxLength, diff --git a/Source/SenseGloveSettings/Public/SGSettings/SGSettings.h b/Source/SenseGloveSettings/Public/SGSettings/SGSettings.h index 66b90803..9d260de5 100644 --- a/Source/SenseGloveSettings/Public/SGSettings/SGSettings.h +++ b/Source/SenseGloveSettings/Public/SGSettings/SGSettings.h @@ -42,6 +42,7 @@ #include "SGSettings/SGGameUserSettingSettings.h" #include "SGSettings/SGInitializationSettings.h" #include "SGSettings/SGTrackingSettings.h" +#include "SGSettings/SGVirtualHandSettings.h" #include "SGSettings.generated.h" @@ -77,6 +78,9 @@ private: UPROPERTY(Config, EditDefaultsOnly, Category = "SenseGlove") FSGTrackingSettings TrackingSettings; + UPROPERTY(Config, EditDefaultsOnly, Category="SenseGlove") + FSGVirtualHandSettings VirtualHandSettings; + private: USGSettings(); @@ -111,6 +115,16 @@ public: TrackingSettings = InTrackingSettings; } + FORCEINLINE const FSGVirtualHandSettings& GetVirtualHandSettings() const + { + return VirtualHandSettings; + } + + void SetVirtualHandSettings(const FSGVirtualHandSettings& InVirtualHandSettings) + { + VirtualHandSettings = InVirtualHandSettings; + } + public: virtual bool ShouldCreateSubsystem(UObject* Outer) const override; diff --git a/Source/SenseGloveSettings/Public/SGSettings/SGTrackingSettings.h b/Source/SenseGloveSettings/Public/SGSettings/SGTrackingSettings.h index b8f1c5f2..4bb1a5a2 100644 --- a/Source/SenseGloveSettings/Public/SGSettings/SGTrackingSettings.h +++ b/Source/SenseGloveSettings/Public/SGSettings/SGTrackingSettings.h @@ -40,7 +40,6 @@ #include "SGSettings/SGGloveTrackingSettings.h" #include "SGSettings/SGHandTrackingSettings.h" #include "SGSettings/SGHMDTrackingSettings.h" -#include "SGSettings/SGVirtualHandTrackingSettings.h" #include "SGSettings/SGWristTrackingSettings.h" #include "SGTrackingSettings.generated.h" @@ -71,9 +70,6 @@ public: UPROPERTY(Config, EditDefaultsOnly, Category="Tracking") FSGHMDTrackingSettings HMDTrackingSettings; - UPROPERTY(Config, EditDefaultsOnly, Category="Tracking") - FSGVirtualHandTrackingSettings VirtualHandTrackingSettings; - UPROPERTY(Config, EditDefaultsOnly, Category="Tracking") FSGWristTrackingSettings WristTrackingSettings; @@ -85,6 +81,5 @@ public: const FSGGloveTrackingSettings& InGloveTrackingSettings, const FSGHandTrackingSettings& InHandTrackingSettings, const FSGHMDTrackingSettings& InHmdTrackingSettings, - const FSGVirtualHandTrackingSettings& InVirtualHandTrackingSettings, const FSGWristTrackingSettings& InWristTrackingSettings); }; \ No newline at end of file diff --git a/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandTrackingSettings.h b/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettings.h similarity index 92% rename from Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandTrackingSettings.h rename to Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettings.h index ae7d75f2..5210d7e7 100644 --- a/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandTrackingSettings.h +++ b/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettings.h @@ -38,15 +38,15 @@ #include "UObject/ObjectMacros.h" #include "UObject/SoftObjectPtr.h" -#include "SGVirtualHandTrackingSettings.generated.h" +#include "SGVirtualHandSettings.generated.h" class USkeletalMesh; /** -* Implements the hand tracking settings for the SenseGlove Tracking module. +* Implements the hand tracking settings for the SenseGlove module. */ USTRUCT(BlueprintType) -struct SENSEGLOVESETTINGS_API FSGVirtualHandTrackingSettings +struct SENSEGLOVESETTINGS_API FSGVirtualHandSettings { GENERATED_USTRUCT_BODY() @@ -88,9 +88,9 @@ public: TArray RightHandBoneNames; public: - FSGVirtualHandTrackingSettings(); + FSGVirtualHandSettings(); - FSGVirtualHandTrackingSettings( + FSGVirtualHandSettings( const TSoftObjectPtr& InLeftHandReferenceMesh, const TSoftObjectPtr& InRightHandReferenceMesh, float InThumbDistalPhalanxLength, diff --git a/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp b/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp index ab7ae0cd..f091a2a0 100644 --- a/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp +++ b/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp @@ -130,11 +130,11 @@ struct FSGXRTracker::FImpl return Settings->GetTrackingSettings().HandTrackingSettings; } - FORCEINLINE static const FSGVirtualHandTrackingSettings& GetVirtualHandTrackingSettings() + FORCEINLINE static const FSGVirtualHandSettings& GetVirtualHandSettings() { const USGSettings* Settings{USGSettings::GetInstance()}; ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); - return Settings->GetTrackingSettings().VirtualHandTrackingSettings; + return Settings->GetVirtualHandSettings(); } FORCEINLINE static const FSGWristTrackingSettings& GetWristTrackingSettings() @@ -403,7 +403,7 @@ struct FSGXRTracker::FImpl FORCEINLINE static const FName& GetLeftMeshBoneName(const int32 JointIndex) { - const FName& Name{GetVirtualHandTrackingSettings().LeftHandBoneNames[JointIndex]}; + const FName& Name{GetVirtualHandSettings().LeftHandBoneNames[JointIndex]}; return Name; } @@ -416,7 +416,7 @@ struct FSGXRTracker::FImpl FORCEINLINE static const FName& GetRightMeshBoneName(const int32 JointIndex) { - const FName& Name{GetVirtualHandTrackingSettings().RightHandBoneNames[JointIndex]}; + const FName& Name{GetVirtualHandSettings().RightHandBoneNames[JointIndex]}; return Name; } @@ -765,7 +765,7 @@ TArray FSGXRTracker::FImpl::GetFingerLengths( TArray> FSGXRTracker::FImpl::GetFingerLengths(const bool bRight) { - const FSGVirtualHandTrackingSettings& Settings{GetVirtualHandTrackingSettings()}; + const FSGVirtualHandSettings& Settings{GetVirtualHandSettings()}; const TArray> Lengths{ GetFingerLengths(bRight, @@ -901,8 +901,8 @@ FTransform FSGXRTracker::FImpl::GetMeshRawBoneRefTransform(const bool bRight, co { const TSoftObjectPtr& HandMesh{ bRight - ? GetVirtualHandTrackingSettings().LeftHandReferenceMesh - : GetVirtualHandTrackingSettings().RightHandReferenceMesh + ? GetVirtualHandSettings().LeftHandReferenceMesh + : GetVirtualHandSettings().RightHandReferenceMesh }; if (HandMesh.IsValid()) @@ -924,7 +924,7 @@ FTransform FSGXRTracker::FImpl::GetMeshRawBoneRefTransform(const bool bRight, co return Transform; } - const FSGVirtualHandTrackingSettings& Settings{GetVirtualHandTrackingSettings()}; + const FSGVirtualHandSettings& Settings{GetVirtualHandSettings()}; ensureAlwaysMsgf( bRight ? Settings.RightHandDefaultReferenceBoneTransforms.Contains(BoneName) @@ -942,7 +942,7 @@ FTransform FSGXRTracker::FImpl::GetMeshRawBoneRefTransform(const bool bRight, co FTransform FSGXRTracker::FImpl::GetMeshWristChildBoneRefTransform(const bool bRight, const FName& BoneName) { FQuat RootRotationCorrection{ - GetVirtualHandTrackingSettings().RootBoneRotationCorrection + GetVirtualHandSettings().RootBoneRotationCorrection }; const FTransform& RootBoneRefTransform{GetMeshRawBoneRefTransform(bRight, EHandKeypoint::Wrist)}; const FTransform& RawTransform{GetMeshRawBoneRefTransform(bRight, BoneName)}; @@ -957,7 +957,7 @@ FTransform FSGXRTracker::FImpl::GetMeshFingerStartBoneRefTransform( const bool bRight, const EHandKeypoint Parent, const FName& BoneName) { FQuat RootRotationCorrection{ - GetVirtualHandTrackingSettings().RootBoneRotationCorrection + GetVirtualHandSettings().RootBoneRotationCorrection }; const FTransform& RootBoneRefTransform{GetMeshRawBoneRefTransform(bRight, EHandKeypoint::Wrist)}; FQuat CorrectedRootBoneRefRotation{MoveTemp(RootRotationCorrection) * RootBoneRefTransform.GetRotation()};