make USGGloveTracker::GetInstance as flexible as possible

This commit is contained in:
Mamadou Babaei
2024-08-16 18:01:38 +02:00
parent f044fa9f66
commit 2f23fffb73
5 changed files with 10 additions and 10 deletions
@@ -310,7 +310,7 @@ void USGVirtualHandComponent::UninitializeComponent()
{ {
Super::UninitializeComponent(); Super::UninitializeComponent();
const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)};
USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr};
if (IsValid(Glove) && Glove->IsConnected() && AutoStopsAllHapticsOnEndPlay()) if (IsValid(Glove) && Glove->IsConnected() && AutoStopsAllHapticsOnEndPlay())
{ {
@@ -329,7 +329,7 @@ void USGVirtualHandComponent::EndPlay(const EEndPlayReason::Type EndPlayReason)
{ {
Super::EndPlay(EndPlayReason); Super::EndPlay(EndPlayReason);
const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)};
USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr};
if (IsValid(Glove) && Glove->IsConnected() && AutoStopsAllHapticsOnEndPlay()) if (IsValid(Glove) && Glove->IsConnected() && AutoStopsAllHapticsOnEndPlay())
{ {
@@ -383,14 +383,14 @@ void USGVirtualHandComponent::EditorTick(
bool USGVirtualHandComponent::IsGloveConnected() const bool USGVirtualHandComponent::IsGloveConnected() const
{ {
const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)};
const USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; const USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr};
return IsValid(Glove); return IsValid(Glove);
} }
USGHapticGlove* USGVirtualHandComponent::GetConnectedGlove() const USGHapticGlove* USGVirtualHandComponent::GetConnectedGlove() const
{ {
const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(this)};
USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr};
return Glove; return Glove;
} }
@@ -94,9 +94,9 @@ struct USGGloveTracker::FImpl
void UpdateGloves() const; 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<USGGloveTracker>() : nullptr}; USGGloveTracker* Instance{IsValid(World) ? World->GetSubsystem<USGGloveTracker>() : nullptr};
return Instance; return Instance;
} }
@@ -50,7 +50,7 @@ class SENSEGLOVETRACKING_API USGGloveTracker : public UWorldSubsystem
GENERATED_BODY() GENERATED_BODY()
public: public:
static USGGloveTracker* GetInstance(); static USGGloveTracker* GetInstance(const UObject* WorldContextObject);
private: private:
struct FImpl; struct FImpl;
@@ -38,9 +38,9 @@
#include "SGCore/SGHapticGlove.h" #include "SGCore/SGHapticGlove.h"
#include "SGTracking/SGGloveTracker.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) USGHapticGlove* USGGloveTrackerKismetLibrary::GetGlove(const USGGloveTracker* GloveTracker, const bool bRight)
@@ -50,7 +50,7 @@ class SENSEGLOVETRACKINGKISMET_API USGGloveTrackerKismetLibrary final : public U
public: public:
UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | Glove Tracker", UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | Glove Tracker",
meta=(WorldContext="WorldContextObject")) meta=(WorldContext="WorldContextObject"))
static USGGloveTracker* GetInstance(); static USGGloveTracker* GetInstance(UObject* WorldContextObject);
UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker")
static USGHapticGlove* GetGlove(const USGGloveTracker* GloveTracker, const bool bRight); static USGHapticGlove* GetGlove(const USGGloveTracker* GloveTracker, const bool bRight);