fix a chain of glove and hand-tracking bugs that render the hand-tracking state invalid at certain times

This commit is contained in:
Mamadou Babaei
2024-11-08 12:24:47 +01:00
parent 78f0d43637
commit a6025cb793
3 changed files with 20 additions and 3 deletions
+8
View File
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
This patch release addresses a few issues with both glove and hand-tracking.
# Fixed
- Fixed a chain of critical bugs that gets triggered due to `GloveConnectivityCheckInterval` getting passed as seconds to the engine rather than milliseconds. Thus, the default or any large value for `GloveConnectivityCheckInterval` causes noticeable long delays between glove-connectivity-check intervals and consequently renders the hand-tracking state invalid in certain situations when the `bFallbackToHandTrackingIfNoGloveDetected` option is false.
## [2.2.1] - 2024-10-23 ## [2.2.1] - 2024-10-23
This patch release focuses exclusively on updates to the documentation. This patch release focuses exclusively on updates to the documentation.
@@ -51,7 +51,7 @@ struct SENSEGLOVESETTINGS_API FSGGloveTrackingSettings
public: public:
/** /**
* The interval in which the tracking module checks for glove connectivity. * The interval in which the tracking module checks for glove connectivity (in milliseconds).
* *
* The default is 16.666666f which means 60 times per second. * The default is 16.666666f which means 60 times per second.
*/ */
@@ -58,7 +58,7 @@ struct USGGloveTracker::FImpl
{ {
const USGSettings* Settings{USGSettings::GetInstance()}; const USGSettings* Settings{USGSettings::GetInstance()};
ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!"));
return Settings->GetTrackingSettings().GloveTrackingSettings.GloveConnectivityCheckInterval; return Settings->GetTrackingSettings().GloveTrackingSettings.GloveConnectivityCheckInterval * 0.001f;
} }
/************************ /************************
@@ -137,7 +137,16 @@ void USGGloveTracker::Initialize(FSubsystemCollectionBase& Collection)
Pimpl->GloveConnectivityCheckTimer, GloveConnectivityCheckHandler, GloveConnectivityCheckInterval, Pimpl->GloveConnectivityCheckTimer, GloveConnectivityCheckHandler, GloveConnectivityCheckInterval,
true, -1.0f); true, -1.0f);
SGLOG("The glove connectivity check timer has been started successfully!"); if (ensureAlwaysMsgf(TimerManager.IsTimerActive(Pimpl->GloveConnectivityCheckTimer),
TEXT("GloveConnectivityCheckTimer is not active")))
{
SGLOG("The glove connectivity check timer has been started successfully!");
SGLOG("The glove connectivity timer interval is: ", GloveConnectivityCheckInterval);
}
else
{
SGLOG_ERROR("The glove connectivity check timer has failed to start!");
}
} }
SGLOG("The SenseGlove tracking singleton has been successfully initialized with the world lifetime!"); SGLOG("The SenseGlove tracking singleton has been successfully initialized with the world lifetime!");