From 7df307d838ee048129e48c43f305e5f0c03cb2f6 Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Fri, 7 Jun 2024 14:10:05 +0200 Subject: [PATCH] make USGGloveTracker::GetInstance as flexible as possible --- .../SenseGlove/Components/SGVirtualHandComponent.cpp | 8 ++++---- .../Private/SGTracking/SGGloveTracker.cpp | 4 ++-- .../SenseGloveTracking/Public/SGTracking/SGGloveTracker.h | 2 +- .../SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp | 4 ++-- .../Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp b/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp index b4ef1150..35427ce9 100644 --- a/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp +++ b/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp @@ -310,7 +310,7 @@ void USGVirtualHandComponent::UninitializeComponent() { Super::UninitializeComponent(); - const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)}; USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; if (IsValid(Glove) && Glove->IsConnected() && AutoStopsAllHapticsOnEndPlay()) { @@ -329,7 +329,7 @@ void USGVirtualHandComponent::EndPlay(const EEndPlayReason::Type EndPlayReason) { Super::EndPlay(EndPlayReason); - const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)}; USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; if (IsValid(Glove) && Glove->IsConnected() && AutoStopsAllHapticsOnEndPlay()) { @@ -383,14 +383,14 @@ void USGVirtualHandComponent::EditorTick( bool USGVirtualHandComponent::IsGloveConnected() const { - const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)}; const USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; return IsValid(Glove); } USGHapticGlove* USGVirtualHandComponent::GetConnectedGlove() const { - const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)}; USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; return Glove; } diff --git a/Source/SenseGloveTracking/Private/SGTracking/SGGloveTracker.cpp b/Source/SenseGloveTracking/Private/SGTracking/SGGloveTracker.cpp index 54eb2c65..d58d98fb 100644 --- a/Source/SenseGloveTracking/Private/SGTracking/SGGloveTracker.cpp +++ b/Source/SenseGloveTracking/Private/SGTracking/SGGloveTracker.cpp @@ -94,9 +94,9 @@ struct USGGloveTracker::FImpl void UpdateGloves() const; }; -USGGloveTracker* USGGloveTracker::GetInstance() +USGGloveTracker* USGGloveTracker::GetInstance(const UObject* WorldContextObject = nullptr) { - UWorld* World{FSGEngineUtils::GetWorld()}; + const UWorld* World{WorldContextObject ? WorldContextObject->GetWorld() : FSGEngineUtils::GetWorld()}; USGGloveTracker* Instance{IsValid(World) ? World->GetSubsystem() : nullptr}; return Instance; } diff --git a/Source/SenseGloveTracking/Public/SGTracking/SGGloveTracker.h b/Source/SenseGloveTracking/Public/SGTracking/SGGloveTracker.h index c51ba81d..96c02a77 100644 --- a/Source/SenseGloveTracking/Public/SGTracking/SGGloveTracker.h +++ b/Source/SenseGloveTracking/Public/SGTracking/SGGloveTracker.h @@ -50,7 +50,7 @@ class SENSEGLOVETRACKING_API USGGloveTracker : public UWorldSubsystem GENERATED_BODY() public: - static USGGloveTracker* GetInstance(); + static USGGloveTracker* GetInstance(const UObject* WorldContextObject); private: struct FImpl; diff --git a/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp b/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp index 304b3e8d..221f7c20 100644 --- a/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp +++ b/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp @@ -38,9 +38,9 @@ #include "SGCore/SGHapticGlove.h" #include "SGTracking/SGGloveTracker.h" -USGGloveTracker* USGGloveTrackerKismetLibrary::GetInstance() +USGGloveTracker* USGGloveTrackerKismetLibrary::GetInstance(UObject* WorldContextObject) { - return USGGloveTracker::GetInstance(); + return USGGloveTracker::GetInstance(WorldContextObject); } USGHapticGlove* USGGloveTrackerKismetLibrary::GetGlove(const USGGloveTracker* GloveTracker, const bool bRight) diff --git a/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h b/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h index a15dbd96..65ae73e3 100644 --- a/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h +++ b/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h @@ -50,7 +50,7 @@ class SENSEGLOVETRACKINGKISMET_API USGGloveTrackerKismetLibrary final : public U public: UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | Glove Tracker", meta=(WorldContext="WorldContextObject")) - static USGGloveTracker* GetInstance(); + static USGGloveTracker* GetInstance(UObject* WorldContextObject); UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") static USGHapticGlove* GetGlove(const USGGloveTracker* GloveTracker, const bool bRight);