Compare commits

..
23 Commits
Author SHA1 Message Date
Mamadou Babaei c8801a48fa bump the plugin version to v2.1.3 2024-10-11 12:30:22 +02:00
Mamadou Babaei de11ff03c8 update the platform support matrix and also add a note in regards to fab and ue marketplace transition 2024-10-11 12:30:22 +02:00
Mamadou Babaei 42c560c43c add the planned features for the v2.2.x release series 2024-10-11 12:30:22 +02:00
Mamadou Babaei dfdb6017dc silence another ue 5.5 deprecation warning with a temporary workaround for the time being 2024-10-11 12:30:22 +02:00
Mamadou Babaei 2523b54a91 avoid mentioning the patch releases in the planned features completion status page 2024-10-11 12:30:22 +02:00
Mamadou Babaei 1d9ca12cf8 address a few ue 5.5 deprecation warnings 2024-10-11 12:30:22 +02:00
Mamadou Babaei 50599d2832 add a missing header 2024-10-11 12:30:22 +02:00
Mamadou Babaei 843c528fe1 add support for epic native toolchain v23 2024-10-11 12:30:22 +02:00
Mamadou Babaei 33a0bc10b8 bump the senseglove libraries to v2.105.2-f2de4b89 2024-10-11 12:30:21 +02:00
Mamadou Babaei 2dfb39842e fix code formatting 2024-10-11 12:30:21 +02:00
Mamadou Babaei bae22c36f5 remove a redundant header 2024-10-11 12:30:21 +02:00
Mamadou Babaei cfa01f1b97 fix a bug inside USGVirtualHandComponent::PostEditChangeProperty() where the get member name check happens against the wrong class and member names 2024-10-11 12:30:21 +02:00
Mamadou Babaei ab72a893e5 fix a grammatical typo in a comment 2024-10-11 12:30:21 +02:00
Mamadou Babaei 5c902276e9 bump the plugin version to v2.1.2 2024-09-02 19:38:01 +02:00
Mamadou Babaei 63ff7ba433 update the changelog 2024-09-02 19:38:01 +02:00
Mamadou Babaei 4ee17604dd update the changelog 2024-09-02 19:38:01 +02:00
Mamadou Babaei 937b298d83 fix a few virtual hand component visibility issues 2024-09-02 19:38:01 +02:00
Mamadou Babaei 5c33917333 fix the non-existent default hand-mesh warnings polluting the logs when packaging the game 2024-09-02 19:38:01 +02:00
Mamadou Babaei 6d2103bb9b update the changelog 2024-09-02 19:38:01 +02:00
Mamadou Babaei 0b30940ee7 fix the wrong script name for USXRTrackerKismetLibrary 2024-09-02 19:38:01 +02:00
Mamadou Babaei ba92e4313d fix the wrong script name for USGHMDTrackerKismetLibrary 2024-09-02 19:38:01 +02:00
Mamadou Babaei c9e8e24ee0 expand the clickable area on the handbook index page revision buttons 2024-09-02 19:38:01 +02:00
Mamadou Babaei f19f76d439 an overview title fix to match the summary file 2024-09-02 19:38:00 +02:00
60 changed files with 220 additions and 84 deletions
+3
View File
@@ -635,6 +635,9 @@ endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@echo "transform: scale(1.05);" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".cell a {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "display: block;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "height: 100%;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "width: 100%;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "text-decoration: none;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "color: #fff;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "font-weight: bold;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
+32 -1
View File
@@ -5,6 +5,37 @@ 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/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.1.3] - 2024-10-11
### Added
- Added initial support for the upcoming Unreal Engine `5.5` release. Please note that, while the plugin is functional, a few adjustments are still required to address deprecation warnings. Specifically, the `FXRMotionControllerData` struct needs to be replaced with the newly introduced `FXRMotionControllerState` and `FXRHandTrackingState` structs, along with adjustments to adhere to the new hand-tracking API changes.
- Added support for Epic Native Toolchain `v23`.
### Fixed
- Fix a bug inside `USGVirtualHandComponent::PostEditChangeProperty()` where the get member name check happens against the wrong class and member names.
- Additional minor fixes and improvements that may not be listed here.
### Changed
- The SenseGlove libraries have been updated to `v2.105.0-02a2e508`.
## [2.1.2] - 2024-09-02
This is a bugfix release that addresses a few non-critical issues and documentation fixes.
### Fixed
- Fix a bug where the hands are always visible even when `bVisibleWhenHandDataUnavailable` is disabled.
- Fix a bug where the `HandVisibilityChangedEvent` event is not triggered on the virtual hand component visibility changes.
- Fix the wrong script name for `USGHMDTrackerKismetLibrary`.
- Fix the wrong script name for `USGXRTrackerKismetLibrary `.
- Fix `LogPython: Warning: 'SGHMDTrackerKismetLibrary' and 'SGXRTrackerKismetLibrary' have the same name (SenseGloveHeadMountDisplayKismetLibrary) when exposed to Python. Rename one of them using 'ScriptName' meta-data` when packaging the game.
- Fix the non-existent default hand-mesh warnings polluting the logs when packaging the game.
- Expanded the clickable area on the handbook index page revision buttons.
- Minor documentation fixes.
## [2.1.1] - 2024-08-18
This is a bugfix release with no actual plugin code changes, mostly addressing issues in the documentation and third-party dependencies caused by source control merge conflicts.
@@ -691,4 +722,4 @@ This is a minor release focusing on adherence to the Unreal Engine Marketplace G
### Added
- Initial public release of the SenseGlove haptic API for Unreal Engine with support for Microsoft Windows and GNU/Linux.
- Initial public release of the SenseGlove haptic API for Unreal Engine with support for Microsoft Windows and GNU/Linux.
@@ -1,6 +1,6 @@
## Planned Features Completion Status
### Implemented as of v2.1.0
### Implemented as of v2.1.x
- [X] Full SenseGlove low-level core API access through Unreal C++.
- [X] Full SenseGlove low-level core API access through Blueprint.
@@ -36,8 +36,9 @@
- [X] A flexible virtual hand animation system that can take the mesh bone's transforms into account for a more reliable hand animation.
- [X] Ability to manage the Engine Scalability Settings through the SenseGlove plugin in order to change the graphics settings on the fly.
### Upcoming features planned for the v2.2.0 release
### Upcoming features planned for the v2.2.x release
- [ ] Migrating away from the deprecated `FXRMotionControllerData` in favor of `FXRMotionControllerState` and `FXRHandTrackingState`.
### Planned features long-term
@@ -2,9 +2,10 @@
| | **Windows (MSVC 2017)** | **Windows (MSVC 2019)** | **Windows (MSVC 2022)** | **Linux x86-64 (Native Toolchain)** | **Linux AArch64 (Native Toolchain)** | **Meta Quest Stand-alone (Android NDK)** | **HTC VIVE Stand-alone (Android NDK)** | **UE Marketplace Version** | **Azure DevOps Version** |
|:--------:|:-----------------------:|:-----------------------:|:-----------------------:|:-----------------------------------:|:------------------------------------:|:----------------------------------------:|:--------------------------------------:|:--------------------------:|:------------------------:|
| **5.4** | ❌ | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.1 | ✅ v2.1.1 |
| **5.3** | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.1 | ✅ v2.1.1 |
| **5.2** | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.1 | ✅ v2.1.1 |
| **5.5** | ❌ | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | | ✅ v2.1.3 |
| **5.4** | ❌ | | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.2 | ✅ v2.1.3 |
| **5.3** | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.2 | ✅ v2.1.3 |
| **5.2** | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.2 | ✅ v2.1.3 |
| **5.1** | ❌ | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x (r25b) | ❓ | ⚠️ v2.0.1 | ⚠️ v2.0.2 |
| **5.0** | ❌ | ⚠️ v1.6.x | ⚠️ v1.6.x | ⚠️ v1.6.x | ⚠️ v1.6.x | ⚠️ v1.6.x (r21e) | ❓ | ⚠️ v1.6.1 | ⚠️ v1.6.1 |
| **4.27** | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x (r21e) | ❓ | ⚠️ v1.3.1 | ⚠️ v1.4.3 |
@@ -20,6 +21,7 @@
* <code>❓</code> Unknown or untested
Remarks:
* With the Fab content marketplace scheduled to launch at an unspecified date in October 2024, and the fact that the Unreal Engine Marketplace no longer accepting any new submissions starting from October 1, any releases made during the transition from the Unreal Engine Marketplace to Fab will only be accessible through the [SenseGlove Microsoft Azure repositories](../getting-started/installation/microsoft-azure-devops-repositories.md).
* Per [Epic's Marketplace Guidelines](https://www.unrealengine.com/en-US/marketplace-guidelines) in regards to Code Plugins (sections `2.6.3`.d and `3.1.b`), we are only able to distribute or update the SenseGlove plugin for the last `3` stable versions of Unreal Engine. As a result, we won't be able to publish updates or bug fixes for the older versions of the Engine except on rare occasions and only through our official repository on Microsoft Azure DevOps.
* All third-party libraries on Windows built against Windows SDK `10.0`.
* Oculus and VIVE support is only provided through the recommended Android NDK versions by Epic Games.
+1 -1
View File
@@ -57,7 +57,7 @@ Toipcs that do not fall under any specific category:
- [SenseGlove Console Commands](../misc/console-commands/)
- [Deploying to Android (Standalone)](../misc/android-standalone-deployment/)
- [Upgrade Guide](../misc/upgrade-guide/)
- [Optimizing for More FPS](../misc/optimize-higher-fps/)
- [Optimizing for Higher FPS](../misc/optimize-higher-fps/)
## 🛠️ Advanced Topics
+1 -1
View File
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "2.1.1",
"VersionName": "2.1.3",
"FriendlyName": "SenseGlove",
"Description": "Integrating the SenseGlove haptic controller into Unreal Engine",
"Category": "Virtual Reality",
@@ -326,8 +326,8 @@ void USGVirtualHandComponent::PostEditChangeProperty(FPropertyChangedEvent& Prop
static const FName OverridePluginSettingsName{
FImpl::ParseVirtualHandSettingsOverridesPropertyName(
GET_MEMBER_NAME_CHECKED(FSGWristTrackingSettingsOverrides,
FSGWristTrackingSettingsOverrides::bOverridePluginSettings))
GET_MEMBER_NAME_CHECKED(FSGVirtualHandSettingsOverrides,
FSGVirtualHandSettingsOverrides::bOverridePluginSettings))
};
if (PropertyName == RightName)
@@ -651,17 +651,26 @@ bool USGVirtualHandComponent::FImpl::IsUsingUserMesh() const
USkeletalMesh* USGVirtualHandComponent::FImpl::LoadDefaultMesh() const
{
const FString DefaultMeshPath{GetDefaultMeshPath()};
USkeletalMesh* DefaultMesh{
Cast<USkeletalMesh>(StaticLoadObject(USkeletalMesh::StaticClass(), nullptr, *DefaultMeshPath))
};
// FIXME
// Disable this warning altogether as it results in polluting the packaging logs, at least until we ship a set of
// virtual hand meshes again.
// const FString DefaultMeshPath{GetDefaultMeshPath()};
// USkeletalMesh* DefaultMesh{
// Cast<USkeletalMesh>(StaticLoadObject(USkeletalMesh::StaticClass(), nullptr, *DefaultMeshPath))
// };
if (!IsValid(DefaultMesh))
{
SGLOG_WARNING(FString::Printf(TEXT("Failed to load the default skeletal mesh: '%s'"), *DefaultMeshPath));
}
// FIXME
// Disable this warning altogether as it results in polluting the packaging logs, at least until we ship a set of
// virtual hand meshes again.
// if (!IsValid(DefaultMesh))
// {
// SGLOG_WARNING(FString::Printf(TEXT("Failed to load the default skeletal mesh: '%s'"), *DefaultMeshPath));
// }
return DefaultMesh;
// FIXME
//return DefaultMesh;
return nullptr;
}
void USGVirtualHandComponent::FImpl::SetDefaultMesh() const
@@ -677,7 +686,10 @@ void USGVirtualHandComponent::FImpl::SetDefaultMesh() const
//Owner->SetSkeletalMesh(LoadDefaultMesh(), true);
// Temporary hack to make it work inside the Blueprint Editor.
#if WITH_EDITOR
Owner->SetSkeletalMesh(LoadDefaultMesh(), true);
// FIXME
//Owner->SetSkeletalMesh(LoadDefaultMesh(), true);
// Instead
Owner->SetSkeletalMesh(nullptr, true);
#endif /* WITH_EDITOR */
}
@@ -719,7 +731,7 @@ void USGVirtualHandComponent::FImpl::RestoreCollisionResponse() const
void USGVirtualHandComponent::FImpl::SetVisibility(const bool bInVisible)
{
Owner->SetVisibility(bInVisible, true);
Owner->SetHiddenInGame(!bInVisible, false);
if (bInVisible)
{
@@ -786,7 +798,7 @@ void USGVirtualHandComponent::FImpl::UpdateVisibility()
if (bSetNewVisibility)
{
Owner->SetHiddenInGame(bHandDataAvailable);
SetVisibility(bHandDataAvailable);
}
}
@@ -39,6 +39,7 @@
#include "Components/PrimitiveComponent.h"
#include "Components/SphereComponent.h"
#include "Kismet/KismetMathLibrary.h"
#include "Runtime/Launch/Resources/Version.h"
#include "UObject/UObjectGlobals.h"
#include "XRDeviceVisualizationComponent.h"
@@ -430,7 +431,7 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer)
this, TEXT("RightThumbFingertipTouchCollider"));
RightThumbFingertipTouchCollider->SetRelativeScale3D(RightHandSettings.TouchSettings.DefaultColliderSize);
RightThumbFingertipTouchCollider->SetupAttachment(
HandRight,RightHandSettings.TouchSettings.ThumbColliderSocketName);
HandRight, RightHandSettings.TouchSettings.ThumbColliderSocketName);
RightThumbFingertipTouchCollider->SetCastShadow(false);
RightThumbFingertipTouchCollider->bCastDynamicShadow = false;
RightThumbFingertipTouchCollider->SetReceivesDecals(true);
@@ -1986,7 +1987,7 @@ void ASGPawn::FImpl::SetVisibility(USceneComponent* SceneComponent, const bool b
return;
}
SceneComponent->SetHiddenInGame(!bVisibility);
SceneComponent->SetHiddenInGame(!bVisibility, false);
}
void ASGPawn::FImpl::UpdateHandLocation(const bool bRight, const FVector& Location, const bool bUpdateVirtualHand) const
@@ -2192,7 +2193,13 @@ void ASGPawn::FImpl::RecordHandVelocity(FSGGrabState& GrabState, const float Del
{
if (GrabState.HandVelocityHistory.IsValidIndex(0))
{
GrabState.HandVelocityHistory.RemoveAt(0, 1, false);
GrabState.HandVelocityHistory.RemoveAt(0, 1,
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5
EAllowShrinking::No
#else /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
false
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
);
GrabState.HandVelocityHistory.Emplace(MoveTemp(HandVelocity));
}
}
@@ -113,7 +113,9 @@ public class SenseGloveConnectImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux"));
LibraryName = string.Format("lib{0}.a", LibraryName);
#if UE_5_3_OR_LATER
#if UE_5_5_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23"));
#elif UE_5_3_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22"));
#elif UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21"));
@@ -128,7 +130,9 @@ public class SenseGloveConnectImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux"));
LibraryName = string.Format("lib{0}.a", LibraryName);
#if UE_5_3_OR_LATER
#if UE_5_5_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23"));
#elif UE_5_3_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22"));
#elif UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21"));
@@ -233,7 +237,9 @@ public class SenseGloveConnectImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux"));
LibraryName = string.Format("lib{0}.a", LibraryName);
#if UE_5_3_OR_LATER
#if UE_5_5_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23"));
#elif UE_5_3_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22"));
#elif UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21"));
@@ -248,7 +254,9 @@ public class SenseGloveConnectImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux"));
LibraryName = string.Format("lib{0}.a", LibraryName);
#if UE_5_3_OR_LATER
#if UE_5_5_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23"));
#elif UE_5_3_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22"));
#elif UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21"));
@@ -112,7 +112,9 @@ public class SenseGloveCoreImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux"));
LibraryName = string.Format("lib{0}.a", LibraryName);
#if UE_5_3_OR_LATER
#if UE_5_5_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23"));
#elif UE_5_3_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22"));
#elif UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21"));
@@ -127,7 +129,9 @@ public class SenseGloveCoreImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux"));
LibraryName = string.Format("lib{0}.a", LibraryName);
#if UE_5_3_OR_LATER
#if UE_5_5_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23"));
#elif UE_5_3_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22"));
#elif UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21"));
@@ -59,7 +59,7 @@ struct SENSEGLOVESETTINGS_API FSGTrackingSettings
public:
/**
* Determines whether to fallback to hand-tracking, or not, when no SenseGlove device is detected:
* Determines whether to fall back to hand-tracking, or not, when no SenseGlove device is detected:
*
* - If disabled, only a real glove will be tracked.
* - If enabled, the plugin will fall back to hand-tracking when it's available and supported by the HMD device.
@@ -50,7 +50,6 @@
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 3
#include "OpenXRHMD.h"
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 3 */
#include "Runtime/Launch/Resources/Version.h"
#include "SGCore/SGHapticGlove.h"
#include "SGLog/SGLog.h"
@@ -1164,9 +1163,28 @@ bool FSGXRTracker::GetMotionControllerData(
{
OutMotionControllerData.DeviceVisualType = EXRVisualType::Hand;
/// TODO
// This is a just a temporary workaround to silence a UE 5.5 deprecation warning.
// Should be refactored with a proper implementation when migrating away from the deprecated
// `FXRMotionControllerData` in favor of newly introduced
// `FXRMotionControllerState` and `FXRHandTrackingState` structs.
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5
bool bTracked = false;
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
OutMotionControllerData.bValid = HandTracker->GetAllKeypointStates(
Hand, OutMotionControllerData.HandKeyPositions, OutMotionControllerData.HandKeyRotations,
OutMotionControllerData.HandKeyRadii);
OutMotionControllerData.HandKeyRadii
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5
, bTracked
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
);
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5
if (!bTracked)
{
return false;
}
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
if (!ensureAlwaysMsgf(
!OutMotionControllerData.bValid
@@ -42,7 +42,7 @@
#include "SGHMDTrackerKismetLibrary.generated.h"
UCLASS(meta=(ScriptName = "SenseGloveHeadMountDisplayKismetLibrary"))
UCLASS(meta=(ScriptName = "SenseGloveHMDTrackerKismetLibrary"))
class SENSEGLOVETRACKINGKISMET_API USGHMDTrackerKismetLibrary final : public USGBlueprintFunctionLibrary
{
GENERATED_BODY()
@@ -45,7 +45,7 @@
class UObject;
UCLASS(meta=(ScriptName = "SenseGloveHeadMountDisplayKismetLibrary"))
UCLASS(meta=(ScriptName = "SenseGloveXRTrackerKismetLibrary"))
class SENSEGLOVETRACKINGKISMET_API USGXRTrackerKismetLibrary final : public USGBlueprintFunctionLibrary
{
GENERATED_BODY()
@@ -35,6 +35,7 @@
#include "SGUtils/SGEngineUtils.h"
#include "CoreGlobals.h"
#if WITH_EDITOR
#include "Editor.h"
#endif /* WITH_EDITOR */
@@ -53,8 +54,21 @@ UWorld* FSGEngineUtils::GetWorld()
if (IsValid(GEditor))
{
{
const bool bIsPIE = GPlayInEditorID != -1;
const int32 WorldPIEInstance = bIsPIE ? GPlayInEditorID : 1;
const bool bIsPIE =
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5
UE::GetPlayInEditorID()
#else /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
GPlayInEditorID
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
!= -1;
const int32 WorldPIEInstance = bIsPIE
?
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5
UE::GetPlayInEditorID()
#else /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
GPlayInEditorID
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
: 1;
const FWorldContext* WorldContext{GEditor->GetPIEWorldContext(WorldPIEInstance)};
if (WorldContext)
{
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.