fix a bug where SteamVR trackers such as HTC VIVE and HTC VIVE Focus 3's wrist orientation and location were not being tracked.
This commit is contained in:
+6
-1
@@ -13,12 +13,17 @@ This release breaks ABI/API compatibility with the previous versions in some are
|
||||
|
||||
- Added support for the Meta Quest Pro positional tracking hardware.
|
||||
- Added HTC VIVE Focus 3 positional tracking hardware enum, though it has not been implemented, yet.
|
||||
- Added two options to the wrist tracker component in order to be able to specify a custom motion source for the left and right hands in order to enable SteamVR-based trackers such as HTC VIVE or HTC VIVE Focus 3 to work.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix a bug where SteamVR trackers such as HTC VIVE and HTC VIVE Focus 3's wrist orientation and location were not being tracked.
|
||||
|
||||
### Changed
|
||||
|
||||
- Fully refactored the top-level configurations in the settings system into USTRUCTs.
|
||||
- SenseGlove libraries have been updated to v2.9.0-21c54c5.
|
||||
- Change HTC VIVE Tracker enum's display name in order to clarify it has not been implemented, yet.
|
||||
- Change the HTC VIVE Tracker enum's display name in order to clarify it has not been implemented, yet.
|
||||
|
||||
### Removed
|
||||
|
||||
|
||||
@@ -106,6 +106,9 @@ USGWristTrackerComponent::USGWristTrackerComponent(const FObjectInitializer& Obj
|
||||
SetReceivesDecals(false);
|
||||
SetCanEverAffectNavigation(false);
|
||||
|
||||
LeftHandMotionSource = EControllerHand::Left;
|
||||
RightHandMotionSource = EControllerHand::Right;
|
||||
|
||||
SetRight(true);
|
||||
|
||||
bOverridePluginWristTrackingSettings = false;
|
||||
@@ -152,7 +155,7 @@ void USGWristTrackerComponent::SetWristTrackingSettings(const FSGWristTrackingSe
|
||||
|
||||
void USGWristTrackerComponent::SetRight(const bool bRight)
|
||||
{
|
||||
SetTrackingSource(bRight ? EControllerHand::Right : EControllerHand::Left);
|
||||
SetTrackingSource(bRight ? GetRightHandMotionSource() : GetLeftHandMotionSource());
|
||||
}
|
||||
|
||||
#if WITH_EDITOR
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "GameFramework/Actor.h"
|
||||
#include "InputCoreTypes.h"
|
||||
#include "Math/Rotator.h"
|
||||
#include "Math/Vector.h"
|
||||
#include "MotionControllerComponent.h"
|
||||
@@ -94,6 +95,20 @@ private:
|
||||
FImplDeleter PimplDeleter;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Determines which motion source to use.
|
||||
* For Oculus this is usually Left, and for VIVE usually LeftFoot.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
|
||||
EControllerHand LeftHandMotionSource;
|
||||
|
||||
/**
|
||||
* Determines which motion source to use.
|
||||
* For Oculus this is usually Right, and for VIVE usually RightFoot.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
|
||||
EControllerHand RightHandMotionSource;
|
||||
|
||||
/**
|
||||
* Determines whether to override the plugin's wrist tracking settings or not.
|
||||
*/
|
||||
@@ -121,6 +136,26 @@ private:
|
||||
FRotator WristRotation;
|
||||
|
||||
public:
|
||||
FORCEINLINE EControllerHand GetLeftHandMotionSource() const
|
||||
{
|
||||
return LeftHandMotionSource;
|
||||
}
|
||||
|
||||
void SetLeftHandMotionSource(const EControllerHand InLeftHandMotionSource)
|
||||
{
|
||||
LeftHandMotionSource = InLeftHandMotionSource;
|
||||
}
|
||||
|
||||
FORCEINLINE EControllerHand GetRightHandMotionSource() const
|
||||
{
|
||||
return RightHandMotionSource;
|
||||
}
|
||||
|
||||
void SetRightHandMotionSource(const EControllerHand InRightHandMotionSource)
|
||||
{
|
||||
RightHandMotionSource = InRightHandMotionSource;
|
||||
}
|
||||
|
||||
FORCEINLINE bool OverridesPluginWristTrackingSettings() const
|
||||
{
|
||||
return !!bOverridePluginWristTrackingSettings;
|
||||
@@ -136,12 +171,12 @@ public:
|
||||
|
||||
FORCEINLINE bool IsLeft() const
|
||||
{
|
||||
return GetTrackingSource() == EControllerHand::Left;
|
||||
return GetTrackingSource() == GetLeftHandMotionSource();
|
||||
}
|
||||
|
||||
FORCEINLINE bool IsRight() const
|
||||
{
|
||||
return GetTrackingSource() == EControllerHand::Right;
|
||||
return GetTrackingSource() == GetRightHandMotionSource();
|
||||
}
|
||||
|
||||
void SetRight(const bool bRight);
|
||||
|
||||
@@ -56,6 +56,7 @@ public class SenseGlove : ModuleRules
|
||||
"CoreUObject",
|
||||
"Engine",
|
||||
"HeadMountedDisplay",
|
||||
"InputCore",
|
||||
"SenseGloveConnect",
|
||||
"SenseGloveCore",
|
||||
"SenseGloveDebug",
|
||||
|
||||
@@ -37,6 +37,30 @@
|
||||
|
||||
#include "SenseGlove/Components/SGWristTrackerComponent.h"
|
||||
|
||||
EControllerHand UWristTrackerComponentKismetLibrary::GetLeftHandMotionSource(
|
||||
const USGWristTrackerComponent* WristTrackerComponent)
|
||||
{
|
||||
return WristTrackerComponent->GetLeftHandMotionSource();
|
||||
}
|
||||
|
||||
void UWristTrackerComponentKismetLibrary::SetLeftHandMotionSource(
|
||||
USGWristTrackerComponent* WristTrackerComponent, const EControllerHand InLeftHandMotionSource)
|
||||
{
|
||||
WristTrackerComponent->SetLeftHandMotionSource(InLeftHandMotionSource);
|
||||
}
|
||||
|
||||
EControllerHand UWristTrackerComponentKismetLibrary::GetRightHandMotionSource(
|
||||
const USGWristTrackerComponent* WristTrackerComponent)
|
||||
{
|
||||
return WristTrackerComponent->GetRightHandMotionSource();
|
||||
}
|
||||
|
||||
void UWristTrackerComponentKismetLibrary::SetRightHandMotionSource(
|
||||
USGWristTrackerComponent* WristTrackerComponent, const EControllerHand InRightHandMotionSource)
|
||||
{
|
||||
WristTrackerComponent->SetRightHandMotionSource(InRightHandMotionSource);
|
||||
}
|
||||
|
||||
bool UWristTrackerComponentKismetLibrary::OverridesPluginWristTrackingSettings(
|
||||
const USGWristTrackerComponent* WristTrackerComponent)
|
||||
{
|
||||
|
||||
@@ -37,8 +37,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "SGKismet/SGBlueprintFunctionLibrary.h"
|
||||
#include "InputCoreTypes.h"
|
||||
|
||||
#include "SGKismet/SGBlueprintFunctionLibrary.h"
|
||||
#include "SGSettings/SGWristTrackingSettings.h"
|
||||
|
||||
#include "SGWristTrackerComponentKismetLibrary.generated.h"
|
||||
@@ -54,6 +55,20 @@ class SENSEGLOVEKISMET_API UWristTrackerComponentKismetLibrary final : public US
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component")
|
||||
static EControllerHand GetLeftHandMotionSource(const USGWristTrackerComponent* WristTrackerComponent);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Wrist Tracker Component")
|
||||
static void SetLeftHandMotionSource(UPARAM(ref) USGWristTrackerComponent* WristTrackerComponent,
|
||||
EControllerHand InLeftHandMotionSource);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component")
|
||||
static EControllerHand GetRightHandMotionSource(const USGWristTrackerComponent* WristTrackerComponent);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Wrist Tracker Component")
|
||||
static void SetRightHandMotionSource(UPARAM(ref) USGWristTrackerComponent* WristTrackerComponent,
|
||||
EControllerHand InRightHandMotionSource);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component")
|
||||
static bool OverridesPluginWristTrackingSettings(const USGWristTrackerComponent* WristTrackerComponent);
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ public class SenseGloveKismet : ModuleRules
|
||||
"CoreUObject",
|
||||
"Engine",
|
||||
"HeadMountedDisplay",
|
||||
"InputCore",
|
||||
"SenseGlove",
|
||||
"SenseGloveCore",
|
||||
"SenseGloveLog",
|
||||
|
||||
Reference in New Issue
Block a user