From 0061ea9cb65a20478d481356a096a1094c9b09ad Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Fri, 1 Mar 2024 17:39:02 +0100 Subject: [PATCH] implement the api updates and bump the senseglove libraries to v2.101.2-2eb7439f --- CHANGELOG.md | 2 +- .../GameFramework/SGPlayerController.cpp | 85 ++---- .../Private/SGCore/SGHandLayer.cpp | 51 ++-- .../Private/SGCore/SGHapticGlove.cpp | 14 + .../Private/SGCore/SGNova2Glove.cpp | 14 + .../Private/SGCore/SGNovaGlove.cpp | 24 +- .../Private/SGCore/SGSenseGlove.cpp | 25 +- .../Private/SGCore/SGTracking.cpp | 84 ++++++ .../Public/SGCore/SGHandLayer.h | 48 ++-- .../Public/SGCore/SGHapticGlove.h | 33 ++- .../Public/SGCore/SGNova2Glove.h | 20 ++ .../Public/SGCore/SGNovaGlove.h | 23 +- .../Public/SGCore/SGSenseGlove.h | 23 +- .../SenseGloveCore/Public/SGCore/SGTracking.h | 60 ++++ .../Private/SGCoreImpl/SGCoreEnumCast.cpp | 4 + .../SGCoreImpl/SGExportedFunctions.cpp | 258 +++++++++++++----- .../Private/SGCoreImpl/SGHandLayerImpl.cpp | 63 +++-- .../Private/SGCoreImpl/SGHapticGloveImpl.cpp | 21 +- .../Private/SGCoreImpl/SGNova2GloveImpl.cpp | 11 + .../Private/SGCoreImpl/SGNovaGloveImpl.cpp | 5 + .../Private/SGCoreImpl/SGSenseGloveImpl.cpp | 17 +- .../Private/SGCoreImpl/SGTrackingImpl.cpp | 60 ++++ .../Public/SGCoreImpl/SGExportedFunctions.h | 138 +++++++--- .../Public/SGCoreImpl/SGHandLayerImpl.h | 23 +- .../Public/SGCoreImpl/SGHapticGloveImpl.h | 8 +- .../Public/SGCoreImpl/SGNova2GloveImpl.h | 4 + .../Public/SGCoreImpl/SGNovaGloveImpl.h | 6 +- .../Public/SGCoreImpl/SGSenseGloveImpl.h | 6 +- .../Public/SGCoreImpl/SGTrackingImpl.h | 12 + .../SGCoreKismet/SGHandLayerKismetLibrary.cpp | 58 ++-- .../SGHapticGloveKismetLibrary.cpp | 33 ++- .../SGNova2GloveKismetLibrary.cpp | 11 + .../SGCoreKismet/SGNovaGloveKismetLibrary.cpp | 18 +- .../SGSenseGloveKismetLibrary.cpp | 19 +- .../SGCoreKismet/SGTrackingKismetLibrary.cpp | 60 ++++ .../SGCoreKismet/SGHandLayerKismetLibrary.h | 82 +++--- .../SGCoreKismet/SGHapticGloveKismetLibrary.h | 49 +++- .../SGCoreKismet/SGNova2GloveKismetLibrary.h | 19 +- .../SGCoreKismet/SGNovaGloveKismetLibrary.h | 24 +- .../SGCoreKismet/SGSenseGloveKismetLibrary.h | 20 +- .../SGCoreKismet/SGTrackingKismetLibrary.h | 124 +++++++-- .../Public/SGTypes/SGCoreTypes.h | 5 +- .../include/SenseGlove/Core/HandLayer.hpp | 4 +- .../include/SenseGlove/Core/HapticGlove.hpp | 4 +- .../include/SenseGlove/Core/Nova2Glove.hpp | 4 +- .../include/SenseGlove/Core/NovaGlove.hpp | 4 +- .../include/SenseGlove/Core/SenseGlove.hpp | 4 +- .../include/SenseGlove/Core/Tracking.hpp | 4 +- .../lib/android/r25b/arm64/debug/libsgcore.a | 4 +- .../android/r25b/arm64/release/libsgcore.a | 4 +- .../lib/android/r25b/armv7/debug/libsgcore.a | 4 +- .../android/r25b/armv7/release/libsgcore.a | 4 +- .../lib/android/r25b/x64/debug/libsgcore.a | 4 +- .../lib/android/r25b/x64/release/libsgcore.a | 4 +- .../lib/android/r25b/x86/debug/libsgcore.a | 4 +- .../lib/android/r25b/x86/release/libsgcore.a | 4 +- .../linux/v20/aarch64/debug/libsgconnect.a | 2 +- .../lib/linux/v20/aarch64/debug/libsgcore.a | 4 +- .../linux/v20/aarch64/release/libsgconnect.a | 2 +- .../lib/linux/v20/aarch64/release/libsgcore.a | 4 +- .../lib/linux/v20/x86-64/debug/libsgconnect.a | 2 +- .../lib/linux/v20/x86-64/debug/libsgcore.a | 4 +- .../linux/v20/x86-64/release/libsgconnect.a | 2 +- .../lib/linux/v20/x86-64/release/libsgcore.a | 4 +- .../linux/v21/aarch64/debug/libsgconnect.a | 2 +- .../lib/linux/v21/aarch64/debug/libsgcore.a | 4 +- .../linux/v21/aarch64/release/libsgconnect.a | 2 +- .../lib/linux/v21/aarch64/release/libsgcore.a | 4 +- .../lib/linux/v21/x86-64/debug/libsgconnect.a | 2 +- .../lib/linux/v21/x86-64/debug/libsgcore.a | 4 +- .../linux/v21/x86-64/release/libsgconnect.a | 2 +- .../lib/linux/v21/x86-64/release/libsgcore.a | 4 +- .../linux/v22/aarch64/debug/libsgconnect.a | 2 +- .../lib/linux/v22/aarch64/debug/libsgcore.a | 4 +- .../linux/v22/aarch64/release/libsgconnect.a | 2 +- .../lib/linux/v22/aarch64/release/libsgcore.a | 4 +- .../lib/linux/v22/x86-64/debug/libsgconnect.a | 2 +- .../lib/linux/v22/x86-64/debug/libsgcore.a | 4 +- .../linux/v22/x86-64/release/libsgconnect.a | 2 +- .../lib/linux/v22/x86-64/release/libsgcore.a | 4 +- .../lib/win64/msvc142/debug/serial.lib | 2 +- .../lib/win64/msvc142/debug/sgconnect.lib | 2 +- .../lib/win64/msvc142/debug/sgcore.lib | 4 +- .../lib/win64/msvc142/release/serial.lib | 2 +- .../lib/win64/msvc142/release/sgconnect.lib | 2 +- .../lib/win64/msvc142/release/sgcore.lib | 4 +- .../lib/win64/msvc143/debug/serial.lib | 4 +- .../lib/win64/msvc143/debug/sgconnect.lib | 4 +- .../lib/win64/msvc143/debug/sgcore.lib | 4 +- .../lib/win64/msvc143/release/serial.lib | 4 +- .../lib/win64/msvc143/release/sgconnect.lib | 4 +- .../lib/win64/msvc143/release/sgcore.lib | 4 +- 92 files changed, 1305 insertions(+), 527 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b449756e..34223543 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ This is the second major release of the SenseGlove Unreal Engine Plugin adding s ### Changed -- SenseGlove libraries have been updated to v2.101.1-edc1163a. +- SenseGlove libraries have been updated to v2.101.2-2eb7439f. - Various classes and parts of the API have been changed in order to reflect and adhere to upstream SenseGlove libraries. - Reverse the Platform Support Matrix order from newer Unreal Engine versions to the older ones. - Clarify the engine support policy in the main readme file by adding the corresponding references from the Epic Marketplace Guidelines and a URL to their guidelines page. diff --git a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPlayerController.cpp b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPlayerController.cpp index fc2efc64..615e21b7 100644 --- a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPlayerController.cpp +++ b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPlayerController.cpp @@ -45,15 +45,12 @@ #include "TimerManager.h" -#include "SenseGlove/Components/SGGrabComponent.h" #include "SenseGlove/Components/SGTouchComponent.h" #include "SenseGlove/GameFramework/SGPawn.h" #include "SenseGlove/Haptics/SGGrabState.h" #include "SenseGlove/Haptics/SGTouchState.h" #include "SGBuildHacks/SGPlatform.h" #include "SGCore/SGHapticGlove.h" -#include "SGCore/SGNova2Glove.h" -#include "SGCore/SGNovaGlove.h" struct ASGPlayerController::FImpl { @@ -329,72 +326,36 @@ void ASGPlayerController::FImpl::UpdateHapticsFeedback(const FSGTouchState& Touc }; Glove->QueueForceFeedbackLevels(MoveTemp(ForceFeedbackLevels)); - USGNova2Glove* Nova2Glove = nullptr; - if (Glove->IsANova2Glove()) - { - Nova2Glove = Glove->AsNova2Glove(Owner); - } - - USGNovaGlove* NovaGlove = nullptr; - if (Glove->IsANovaGlove()) - { - NovaGlove = Glove->AsNovaGlove(Owner); - } - - // Queue the Vibrotactile command if a Nova 2 or Nova glove... - if (IsValid(Nova2Glove) || IsValid(NovaGlove)) - { - TArray VibrotactileLevels{ - GetVibrotactileLevels( - TouchState.ActorThumbTouching, TouchState.ActorIndexTouching, TouchState.ActorMiddleTouching, - TouchState.ActorRingTouching, TouchState.ActorPinkyTouching) - }; - - // Queue the Vibrotactile command if a Nova 2 glove... - if (IsValid(Nova2Glove)) - { - /// TODO - } - - // Queue the Vibrotactile command if a Nova glove... - if (IsValid(NovaGlove)) - { - NovaGlove->QueueVibroLevels(MoveTemp(VibrotactileLevels)); - } - } + // Queue the Vibrotactile command... + TArray VibrotactileLevels{ + GetVibrotactileLevels( + TouchState.ActorThumbTouching, TouchState.ActorIndexTouching, TouchState.ActorMiddleTouching, + TouchState.ActorRingTouching, TouchState.ActorPinkyTouching) + }; + Glove->QueueVibroLevels(MoveTemp(VibrotactileLevels)); // Send the haptics commands! Glove->SendHaptics(); - // Stop the Vibrotactile command after the timeout if a Nova 2 or Nova glove. - if (IsValid(Nova2Glove) || IsValid(NovaGlove)) + // Stop the Vibrotactile command after the timeout if a. + const float VibrotactileDuration = FImpl::GetVibrotactileDuration( + TouchState.ActorThumbTouching, TouchState.ActorIndexTouching, TouchState.ActorMiddleTouching, + TouchState.ActorRingTouching, TouchState.ActorPinkyTouching); + + Owner->GetWorldTimerManager().ClearTimer(TouchVibrotactileStopTimer); + + FTimerDelegate TouchVibrotactileStopHandler; + TouchVibrotactileStopHandler.BindLambda([= SG_CAPTURE_THIS]()-> void { - const float VibrotactileDuration = FImpl::GetVibrotactileDuration( - TouchState.ActorThumbTouching, TouchState.ActorIndexTouching, TouchState.ActorMiddleTouching, - TouchState.ActorRingTouching, TouchState.ActorPinkyTouching); - - Owner->GetWorldTimerManager().ClearTimer(TouchVibrotactileStopTimer); - - FTimerDelegate TouchVibrotactileStopHandler; - TouchVibrotactileStopHandler.BindLambda([= SG_CAPTURE_THIS]()-> void + if (IsValid(Glove)) { - // Stop the Vibrotactile command after the timeout if a Nova 2 Glove. - if (IsValid(Nova2Glove)) - { - // TODO - } + Glove->QueueVibroLevels(VibrotactileOffCommand); + Glove->SendHaptics(); + } + }); - // Stop the Vibrotactile command after the timeout if a Nova Glove. - if (IsValid(NovaGlove)) - { - NovaGlove->QueueVibroLevels(VibrotactileOffCommand); - NovaGlove->SendHaptics(); - } - }); - - Owner->GetWorldTimerManager().SetTimer( - TouchVibrotactileStopTimer, TouchVibrotactileStopHandler, VibrotactileDuration, false, -1.0f); - } + Owner->GetWorldTimerManager().SetTimer( + TouchVibrotactileStopTimer, TouchVibrotactileStopHandler, VibrotactileDuration, false, -1.0f); } void ASGPlayerController::FImplDeleter::operator()(const FImpl* P) const diff --git a/Source/SenseGloveCore/Private/SGCore/SGHandLayer.cpp b/Source/SenseGloveCore/Private/SGCore/SGHandLayer.cpp index c4326298..e5e45f5e 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGHandLayer.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGHandLayer.cpp @@ -132,14 +132,29 @@ void FSGHandLayer::GetWristLocation( OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); } +void FSGHandLayer::StopAllHaptics(const bool bRightHanded) +{ + SGCoreImpl_FSGHandLayerImpl_StopAllHaptics(bRightHanded); +} + bool FSGHandLayer::SendHaptics(const bool bRightHanded) { return SGCoreImpl_FSGHandLayerImpl_SendHaptics(bRightHanded); } -void FSGHandLayer::StopAllHaptics(const bool bRightHanded) +bool FSGHandLayer::SupportsCustomWaveform( + const bool bRightHanded, const ESGHapticLocation AtLocation) { - SGCoreImpl_FSGHandLayerImpl_StopAllHaptics(bRightHanded); + FSGIC_ESGHapticLocation AtLocationContainer{AtLocation}; + return SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform(bRightHanded, &AtLocationContainer); +} + +bool FSGHandLayer::SendCustomWaveform( + const bool bRightHanded, USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) +{ + FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform(bRightHanded, &OutWaveformContainer, &LocationContainer); } bool FSGHandLayer::QueueCommand_ForceFeedbackLevel( @@ -156,32 +171,26 @@ bool FSGHandLayer::QueueCommand_ForceFeedbackLevels( bRightHanded, &Levels01Container, bSendImmediate); } -bool FSGHandLayer::QueueCommand_SetVibroLevel( - const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) -{ - return SGCoreImpl_FSGHandLayerImpl_QueueCommand_SetVibroLevel(bRightHanded, Finger, Level01, bSendImmediate); -} - -bool FSGHandLayer::QueueCommand_SetVibroLevels( +bool FSGHandLayer::QueueCommand_VibroLevels( const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) { FSGIC_TArray_float Levels01Container{Levels01}; - return SGCoreImpl_FSGHandLayerImpl_QueueCommand_SetVibroLevels(bRightHanded, &Levels01Container, bSendImmediate); + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevels(bRightHanded, &Levels01Container, bSendImmediate); } -bool FSGHandLayer::SupportsCustomWaveform( - const bool bRightHanded, const ESGHapticLocation AtLocation) +bool FSGHandLayer::QueueCommand_VibroLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_Finger_Level0_bSendImmediate( + bRightHanded, Finger, Level01, bSendImmediate); +} + +bool FSGHandLayer::QueueCommand_VibroLevel( + const bool bRightHanded, const ESGHapticLocation AtLocation, const float Level01, const bool bSendImmediate) { FSGIC_ESGHapticLocation AtLocationContainer{AtLocation}; - return SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform(bRightHanded, &AtLocationContainer); -} - -bool FSGHandLayer::SendCustomWaveform( - const bool bRightHanded, USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) -{ - FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; - FSGIC_ESGHapticLocation LocationContainer{Location}; - return SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform(bRightHanded, &OutWaveformContainer, &LocationContainer); + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_AtLocation_Level01_bSendImmediate( + bRightHanded, &AtLocationContainer, Level01, bSendImmediate); } bool FSGHandLayer::SupportsWristSqueeze(const bool bRightHanded) diff --git a/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp b/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp index 5add87c8..0ff50447 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp @@ -394,6 +394,20 @@ bool USGHapticGlove::QueueForceFeedbackLevel(const int32 Finger, const float Lev return SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); } +bool USGHapticGlove::QueueVibroLevels(const TArray& Levels01) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevels(&InstanceContainer, &Levels01Container); +} + +bool USGHapticGlove::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevel(&InstanceContainer, &LocationContainer, Level01); +} + bool USGHapticGlove::SupportsCustomWaveform(const ESGHapticLocation AtLocation) const { FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; diff --git a/Source/SenseGloveCore/Private/SGCore/SGNova2Glove.cpp b/Source/SenseGloveCore/Private/SGCore/SGNova2Glove.cpp index 0ea30daf..7319815b 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGNova2Glove.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGNova2Glove.cpp @@ -531,6 +531,20 @@ bool USGNova2Glove::QueueForceFeedbackLevel(const int32 Finger, const float Leve return SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); } +bool USGNova2Glove::QueueVibroLevels(const TArray& Amplitudes) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_TArray_float AmplitudesContainer{Amplitudes}; + return SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); +} + +bool USGNova2Glove::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevel(&InstanceContainer, &LocationContainer, Level01); +} + bool USGNova2Glove::QueueSqueezeLevel(const float SqueezeLevel01) { FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; diff --git a/Source/SenseGloveCore/Private/SGCore/SGNovaGlove.cpp b/Source/SenseGloveCore/Private/SGCore/SGNovaGlove.cpp index 72207d61..544e9537 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGNovaGlove.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGNovaGlove.cpp @@ -551,6 +551,21 @@ bool USGNovaGlove::QueueForceFeedbackLevel(const int32 Finger, const float Level return SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); } +bool USGNovaGlove::QueueVibroLevels(const TArray& Amplitudes) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_TArray_float AmplitudesContainer{Amplitudes}; + return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); +} + +bool USGNovaGlove::QueueVibroLevel(ESGHapticLocation Location, float Level01) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Localtion_Level01( + &InstanceContainer, &LocationContainer, Level01); +} + void USGNovaGlove::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, const ESGPositionalTrackingHardware TrackingHardware, FVector& OutGlovePosition, FQuat& OutGloveRotation) const @@ -701,17 +716,10 @@ FString USGNovaGlove::ToNovaCommand( return MoveTemp(OutStringContainer.String); } -bool USGNovaGlove::QueueVibroLevels(const TArray& Amplitudes) -{ - FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; - FSGIC_TArray_float AmplitudesContainer{Amplitudes}; - return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); -} - bool USGNovaGlove::QueueVibroLevel(const int32 Finger, const float Amplitude) { FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; - return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel(&InstanceContainer, Finger, Amplitude); + return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Finger_Amplitude(&InstanceContainer, Finger, Amplitude); } bool USGNovaGlove::QueueWristLevel(const float Amplitude) diff --git a/Source/SenseGloveCore/Private/SGCore/SGSenseGlove.cpp b/Source/SenseGloveCore/Private/SGCore/SGSenseGlove.cpp index 41f37081..8c9fc95f 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGSenseGlove.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGSenseGlove.cpp @@ -52,6 +52,7 @@ #include "SGInterop/SGIC_ESGDeviceType.h" #include "SGInterop/SGIC_ESGFinger.h" #include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" +#include "SGInterop/SGIC_ESGHapticLocation.h" #include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" #include "SGInterop/SGIC_ESGSenseGloveThumperCommand.h" #include "SGInterop/SGIC_FQuat.h" @@ -535,6 +536,21 @@ bool USGSenseGlove::QueueForceFeedbackLevel(const int32 Finger, const float Leve return SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); } +bool USGSenseGlove::QueueVibroLevels(const TArray& Amplitudes) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_TArray_float AmplitudesContainer{Amplitudes}; + return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); +} + +bool USGSenseGlove::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Location_Level01( + &InstanceContainer, &LocationContainer, Level01); +} + void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, const ESGPositionalTrackingHardware TrackingHardware, FVector& OutGlovePosition, FQuat& OutGloveRotation) const @@ -790,17 +806,10 @@ bool USGSenseGlove::GetGlovePose( return bResult; } -bool USGSenseGlove::QueueVibroLevels(const TArray& Amplitudes) -{ - FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; - FSGIC_TArray_float AmplitudesContainer{Amplitudes}; - return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); -} - bool USGSenseGlove::QueueVibroLevel(const int32 Finger, const float Amplitude) { FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; - return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel(&InstanceContainer, Finger, Amplitude); + return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Finger_Amplitude(&InstanceContainer, Finger, Amplitude); } bool USGSenseGlove::QueueThumperCommand(ESGSenseGloveThumperCommand Command) diff --git a/Source/SenseGloveCore/Private/SGCore/SGTracking.cpp b/Source/SenseGloveCore/Private/SGCore/SGTracking.cpp index 7ec9de82..02ee3eb5 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGTracking.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGTracking.cpp @@ -451,6 +451,48 @@ FRotator FSGTracking::GetLeftNovaViveFocus3ToAttachRotation() return OutRotationContainer.Quat.Rotator(); } +FVector FSGTracking::GetRightNovaQuest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachPosition(&OutPositionContainer); + return MoveTemp(OutPositionContainer.Vector); +} + +FQuat FSGTracking::GetRightNovaQuest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation(&OutRotationContainer); + return MoveTemp(OutRotationContainer.Quat); +} + +FRotator FSGTracking::GetRightNovaQuest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNovaQuest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachPosition(&OutPositionContainer); + return MoveTemp(OutPositionContainer.Vector); +} + +FQuat FSGTracking::GetLeftNovaQuest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation(&OutRotationContainer); + return MoveTemp(OutRotationContainer.Quat); +} + +FRotator FSGTracking::GetLeftNovaQuest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + void FSGTracking::GetNovaGloveWristOffset(const bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset) { FSGIC_FVector OutPositionOffsetContainer; @@ -686,6 +728,48 @@ FQuat FSGTracking::GetRightNova2ViveWristTrackerToAttachRotationQ() return MoveTemp(OutRotationContainer.Quat); } +FVector FSGTracking::GetRightNova2Quest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachPosition(&OutPositionContainer); + return MoveTemp(OutPositionContainer.Vector); +} + +FQuat FSGTracking::GetRightNova2Quest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation(&OutRotationContainer); + return MoveTemp(OutRotationContainer.Quat); +} + +FRotator FSGTracking::GetRightNova2Quest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNova2Quest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachPosition(&OutPositionContainer); + return MoveTemp(OutPositionContainer.Vector); +} + +FQuat FSGTracking::GetLeftNova2Quest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation(&OutRotationContainer); + return MoveTemp(OutRotationContainer.Quat); +} + +FRotator FSGTracking::GetLeftNova2Quest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + FRotator FSGTracking::GetRightNova2ViveWristTrackerToAttachRotation() { FSGIC_FQuat OutRotationContainer; diff --git a/Source/SenseGloveCore/Public/SGCore/SGHandLayer.h b/Source/SenseGloveCore/Public/SGCore/SGHandLayer.h index 98939d11..9c002aa6 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGHandLayer.h +++ b/Source/SenseGloveCore/Public/SGCore/SGHandLayer.h @@ -148,6 +148,13 @@ public: ESGPositionalTrackingHardware TrackingHardware, FVector& OutWristPosition, FQuat& OutWristRotation); + /** + * Stop all haptics on the chosen hand. + * + * @param bRightHanded + */ + static void StopAllHaptics(bool bRightHanded); + /** * Sends all haptics in the queue for the Left / Right hand. * @param bRightHanded @@ -155,11 +162,21 @@ public: static bool SendHaptics(bool bRightHanded); /** - * Stop all haptics on the chosen hand. + * Returns true if the glove for this hand supports a custom waveform vibration on said location. * * @param bRightHanded + * @param AtLocation */ - static void StopAllHaptics(bool bRightHanded); + static bool SupportsCustomWaveform(bool bRightHanded, ESGHapticLocation AtLocation); + + /** + * Send a Custom Waveform to a glove at a specific location. + * + * @param bRightHanded + * @param OutWaveform + * @param Location + */ + static bool SendCustomWaveform(bool bRightHanded, USGCustomWaveform* OutWaveform, ESGHapticLocation Location); /** * Tell a specific hand to hold the force-feedback at a certain level. @@ -186,38 +203,33 @@ public: * DK1.0. * * @param bRightHanded - * @param Finger - * @param Level01 + * @param Levels01 * @param bSendImmediate */ - static bool QueueCommand_SetVibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + static bool QueueCommand_VibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); /** * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and * DK1.0. * * @param bRightHanded - * @param Levels01 + * @param Finger + * @param Level01 * @param bSendImmediate */ - static bool QueueCommand_SetVibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + static bool QueueCommand_VibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); /** - * Returns true if the glove for this hand supports a custom waveform vibration on said location. + * Queue a vibration level command for a specific HapticLocation. If the gloves has this vibration motor installed. + * Cross-compatible with Nova 2.0. * * @param bRightHanded * @param AtLocation + * @param Level01 + * @param bSendImmediate */ - static bool SupportsCustomWaveform(bool bRightHanded, ESGHapticLocation AtLocation); - - /** - * Send a Custom Waveform to a glove at a specific location. - * - * @param bRightHanded - * @param OutWaveform - * @param Location - */ - static bool SendCustomWaveform(bool bRightHanded, USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + static bool QueueCommand_VibroLevel( + bool bRightHanded, ESGHapticLocation AtLocation, float Level01, bool bSendImmediate); /** * Returns true if the chosen glove supports active contact feedback on the Wrist. diff --git a/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h b/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h index 068d43e4..9c529d8c 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h +++ b/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h @@ -295,6 +295,22 @@ public: virtual bool SendHaptics(); public: + /** + * Returns true if the HapticGlove supports vibration feedback on the specified location. + * + * @param AtLocation + */ + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const; + + /** + * Sends a custom waveform to the location specified, provided that the glove has a motor there, and can support + * custom waveforms. + * + * @param OutWaveform + * @param Location + */ + virtual bool SendCustomWaveform(USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + /** * Queue a list of force-feedback levels, between 0.0f and 1.0f. Your list should be sorted from thumb to pinky. * @@ -315,20 +331,23 @@ public: virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01); /** - * Returns true if the HapticGlove supports vibration feedback on the specified location. + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. * - * @param AtLocation + * @param Levels01 Array containing the vibration levels, from 0.0 (no vibration) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. */ - virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const; + virtual bool QueueVibroLevels(const TArray& Levels01); /** - * Sends a custom waveform to the location specified, provided that the glove has a motor there, and can support - * custom waveforms. + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. * - * @param OutWaveform * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. */ - virtual bool SendCustomWaveform(USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01); public: /** diff --git a/Source/SenseGloveCore/Public/SGCore/SGNova2Glove.h b/Source/SenseGloveCore/Public/SGCore/SGNova2Glove.h index ee26565e..baf066b0 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGNova2Glove.h +++ b/Source/SenseGloveCore/Public/SGCore/SGNova2Glove.h @@ -420,6 +420,26 @@ public: */ virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + /** + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Amplitudes Array containing the vibration levels, from 0.0 (no vibration) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. This is to + * support backwards compatibility for older plugins. Use of Customwaveforms is encouraged. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + /** * Set the amount of squeeze-feedback to the desired level (0 = no squeeze, 1 = full squeeze). * diff --git a/Source/SenseGloveCore/Public/SGCore/SGNovaGlove.h b/Source/SenseGloveCore/Public/SGCore/SGNovaGlove.h index 15bdee76..92827b6a 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGNovaGlove.h +++ b/Source/SenseGloveCore/Public/SGCore/SGNovaGlove.h @@ -440,6 +440,22 @@ public: */ virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + /** + * Queue a vibrotactile level for each finger. + * + * @param Amplitudes + */ + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + public: /** * Retrieve the location of the glove origin, based on a reference location. @@ -543,13 +559,6 @@ public: virtual FString ToNovaCommand( const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, float WristLevel) const; - /** - * Queue a vibrotactile level for each finger. - * - * @param Amplitudes - */ - virtual bool QueueVibroLevels(const TArray& Amplitudes); - /** * Queue a vibrotactle level for a specific finger. * diff --git a/Source/SenseGloveCore/Public/SGCore/SGSenseGlove.h b/Source/SenseGloveCore/Public/SGCore/SGSenseGlove.h index 31b22b04..60d7baaf 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGSenseGlove.h +++ b/Source/SenseGloveCore/Public/SGCore/SGSenseGlove.h @@ -423,6 +423,22 @@ public: */ virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + /** + * Queue a vibrotactile level for each finger. + * + * @param Amplitudes + */ + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + public: /** * Retrieve the location of the glove origin, based on a reference location. @@ -582,13 +598,6 @@ public: bool GetGlovePose(UObject* Outer, const USGSenseGloveSensorData* SensorData, USGSenseGlovePose*& OutGlovePose); public: - /** - * Queue a vibrotactile level for each finger. - * - * @param Amplitudes - */ - virtual bool QueueVibroLevels(const TArray& Amplitudes); - /** * Queue a vibrotactle level for a specific finger. * diff --git a/Source/SenseGloveCore/Public/SGCore/SGTracking.h b/Source/SenseGloveCore/Public/SGCore/SGTracking.h index cbe44554..19502a8c 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGTracking.h +++ b/Source/SenseGloveCore/Public/SGCore/SGTracking.h @@ -319,6 +319,36 @@ public: */ static FRotator GetLeftNovaViveFocus3ToAttachRotation(); + /** + * + */ + static FVector GetRightNovaQuest3ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNovaQuest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNovaQuest3ToAttachRotation(); + + /** + * + */ + static FVector GetLeftNovaQuest3ToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNovaQuest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNovaQuest3ToAttachRotation(); + /** * Returns the Offsets that will bring us from the Nova origin to the wrist position. */ @@ -503,6 +533,36 @@ public: */ static FRotator GetLeftNova2ViveWristTrackerToAttachRotation(); + /** + * + */ + static FVector GetRightNova2Quest3ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNova2Quest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNova2Quest3ToAttachRotation(); + + /** + * + */ + static FVector GetLeftNova2Quest3ToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNova2Quest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNova2Quest3ToAttachRotation(); + /** * Returns the Offsets that will bring us from the Nova origin to the wrist position. * diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.cpp index d9ec4f79..93ef801b 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.cpp @@ -435,6 +435,8 @@ FSGCoreEnumCast::FEPositionalTrackingHardwareType FSGCoreEnumCast::ToEPositional return FEPositionalTrackingHardwareType::ViveFocus3WristTracker; case ESGPositionalTrackingHardware::QuestProController: return FEPositionalTrackingHardwareType::QuestProController; + case ESGPositionalTrackingHardware::Quest3Controller: + return FEPositionalTrackingHardwareType::Quest3Controller; default: ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); break; @@ -459,6 +461,8 @@ ESGPositionalTrackingHardware FSGCoreEnumCast::ToESGPositionalTrackingHardware( return ESGPositionalTrackingHardware::ViveFocus3WristTracker; case FEPositionalTrackingHardwareType::QuestProController: return ESGPositionalTrackingHardware::QuestProController; + case FEPositionalTrackingHardwareType::Quest3Controller: + return ESGPositionalTrackingHardware::Quest3Controller; default: ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); break; diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp index 5bc5407f..02609e81 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp @@ -1188,9 +1188,9 @@ void SGCoreImpl_FSGDeviceImpl_GetFirmwareString( bool SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_bInclusive( void* Instance, - int32 MyFirmwareMain, - int32 MyFirmwareSub, - bool bInclusive) + const int32 MyFirmwareMain, + const int32 MyFirmwareSub, + const bool bInclusive) { return StaticCast(Instance)->Ptr->FirmwareNewerThan( MyFirmwareMain, @@ -1200,9 +1200,9 @@ bool SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_bIn bool SGCoreImpl_FSGDeviceImpl_FirmwareOlderThan_MyFirmwareMain_MyFirmwareSub_bInclusive( void* Instance, - int32 MyFirmwareMain, - int32 MyFirmwareSub, - bool bInclusive) + const int32 MyFirmwareMain, + const int32 MyFirmwareSub, + const bool bInclusive) { return StaticCast(Instance)->Ptr->FirmwareOlderThan( MyFirmwareMain, @@ -1539,11 +1539,12 @@ bool SGCoreImpl_FSGDeviceModelImpl_FirmwareOlderThan( void SGCoreImpl_FSGHandInterpolatorImpl_Deserialize( void* OutHandInterpolatorImpl, void* SerializedString, - bool bRightHanded) + const bool bRightHanded) { StaticCast(OutHandInterpolatorImpl)->HandInterpolatorImpl = FSGHandInterpolatorImpl::Deserialize( - StaticCast(SerializedString)->String); + StaticCast(SerializedString)->String, + bRightHanded); } void SGCoreImpl_FSGHandInterpolatorImpl_ctor( @@ -1727,6 +1728,13 @@ void SGCoreImpl_FSGHandLayerImpl_GetWristLocation( StaticCast(OutWristRotation)->Quat); } +void SGCoreImpl_FSGHandLayerImpl_StopAllHaptics( + const bool bRightHanded) +{ + FSGHandLayerImpl::StopAllHaptics( + bRightHanded); +} + bool SGCoreImpl_FSGHandLayerImpl_SendHaptics( const bool bRightHanded) { @@ -1734,11 +1742,24 @@ bool SGCoreImpl_FSGHandLayerImpl_SendHaptics( bRightHanded); } -void SGCoreImpl_FSGHandLayerImpl_StopAllHaptics( - const bool bRightHanded) +bool SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform( + const bool bRightHanded, + void* AtLocation) { - FSGHandLayerImpl::StopAllHaptics( - bRightHanded); + return FSGHandLayerImpl::SupportsCustomWaveform( + bRightHanded, + StaticCast(AtLocation)->Location); +} + +bool SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform( + const bool bRightHanded, + void* OutWaveform, + void* Location) +{ + return FSGHandLayerImpl::SendCustomWaveform( + bRightHanded, + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Location)->Location); } bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevel( @@ -1765,50 +1786,43 @@ bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevels( bSendImmediate); } -bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_SetVibroLevel( +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevels( + const bool bRightHanded, + void* Levels01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_VibroLevels( + bRightHanded, + StaticCast(Levels01)->Array, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_Finger_Level0_bSendImmediate( const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) { - return FSGHandLayerImpl::QueueCommand_SetVibroLevel( + return FSGHandLayerImpl::QueueCommand_VibroLevel( bRightHanded, Finger, Level01, bSendImmediate); } -bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_SetVibroLevels( +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_AtLocation_Level01_bSendImmediate( const bool bRightHanded, - void* Levels01, + void* AtLocation, + const float Level01, const bool bSendImmediate) { - return FSGHandLayerImpl::QueueCommand_SetVibroLevels( + return FSGHandLayerImpl::QueueCommand_VibroLevel( bRightHanded, - StaticCast(Levels01)->Array, + StaticCast(AtLocation)->Location, + Level01, bSendImmediate); } -bool SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform( - const bool bRightHanded, - void* AtLocation) -{ - return FSGHandLayerImpl::SupportsCustomWaveform( - bRightHanded, - StaticCast(AtLocation)->Location); -} - -bool SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform( - const bool bRightHanded, - void* OutWaveform, - void* Location) -{ - return FSGHandLayerImpl::SendCustomWaveform( - bRightHanded, - StaticCast(OutWaveform)->CustomWaveformImpl, - StaticCast(Location)->Location); -} - bool SGCoreImpl_FSGHandLayerImpl_SupportsWristSqueeze( const bool bRightHanded) { @@ -2434,6 +2448,24 @@ bool SGCoreImpl_FSGHapticGloveImpl_SendHaptics( return StaticCast(Instance)->Ptr->SendHaptics(); } +bool SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation) +{ + return StaticCast(Instance)->Ptr->SupportsCustomWaveform( + StaticCast(AtLocation)->Location); +} + +bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location) +{ + return StaticCast(Instance)->Ptr->SendCustomWaveform( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Location)->Location); +} + bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevels( void* Instance, void* Levels01) @@ -2452,22 +2484,22 @@ bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevel( Level01); } -bool SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform( +bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevels( void* Instance, - void* AtLocation) + void* Levels01) { - return StaticCast(Instance)->Ptr->SupportsCustomWaveform( - StaticCast(AtLocation)->Location); + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Levels01)->Array); } -bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform( +bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevel( void* Instance, - void* OutWaveform, - void* Location) + void* Location, + const float Level01) { - return StaticCast(Instance)->Ptr->SendCustomWaveform( - StaticCast(OutWaveform)->CustomWaveformImpl, - StaticCast(Location)->Location); + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); } void SGCoreImpl_FSGHapticGloveImpl_GetWristLocation( @@ -3114,9 +3146,27 @@ bool SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevel( Level01); } +bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Amplitudes)->Array); +} + +bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevel( + void* Instance, + void* Location, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); +} + bool SGCoreImpl_FSGNova2GloveImpl_QueueSqueezeLevel( void* Instance, - float SqueezeLevel01) + const float SqueezeLevel01) { return StaticCast(Instance)->Ptr->QueueSqueezeLevel( SqueezeLevel01); @@ -3758,6 +3808,24 @@ bool SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevel( Level01); } +bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Amplitudes)->Array); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Localtion_Level01( + void* Instance, + void* Location, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); +} + void SGCoreImpl_FSGNovaGloveImpl_GetGloveLocation( void* Instance, void* ReferencePosition, @@ -3837,7 +3905,7 @@ void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommand( void* OutString, void* ForceFeedbackLevels, void* BuzzLevels, - float WristLevel) + const float WristLevel) { StaticCast(OutString)->String = StaticCast(Instance)->Ptr->ToNovaCommand( @@ -3846,15 +3914,7 @@ void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommand( WristLevel); } -bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels( - void* Instance, - void* Amplitudes) -{ - return StaticCast(Instance)->Ptr->QueueVibroLevels( - StaticCast(Amplitudes)->Array); -} - -bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel( +bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Finger_Amplitude( void* Instance, const int32 Finger, const float Amplitude) @@ -3866,7 +3926,7 @@ bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel( bool SGCoreImpl_FSGNovaGloveImpl_QueueWristLevel( void* Instance, - float Amplitude) + const float Amplitude) { return StaticCast(Instance)->Ptr->QueueWristLevel( Amplitude); @@ -3915,7 +3975,7 @@ bool SGCoreImpl_FSGNovaGloveImpl_SendCustomWaveform_Nova( bool SGCoreImpl_FSGNovaGloveImpl_QueueThresholdCommand_Flexion( void* Instance, const int32 Finger, - float FlexionThreshold) + const float FlexionThreshold) { return StaticCast(Instance)->Ptr->QueueThresholdCommand_Flexion( Finger, @@ -4617,6 +4677,24 @@ bool SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevel( Level01); } +bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Amplitudes)->Array); +} + +bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Location_Level01( + void* Instance, + void* Location, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); +} + void SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutGlovePosition_OutGloveRotation( void* Instance, @@ -4750,15 +4828,7 @@ bool SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_SensorData_OutGlovePose( StaticCast(OutGlovePose)->SenseGlovePoseImpl); } -bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels( - void* Instance, - void* Amplitudes) -{ - return StaticCast(Instance)->Ptr->QueueVibroLevels( - StaticCast(Amplitudes)->Array); -} - -bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel( +bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Finger_Amplitude( void* Instance, const int32 Finger, const float Amplitude) @@ -5945,6 +6015,30 @@ void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachRotation( StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachRotation(); } +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaQuest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaQuest3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNovaQuest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaQuest3ToAttachRotation(); +} + void SGCoreImpl_FSGTrackingImpl_GetNovaGloveWristOffset( const bool bRightHanded, void* OutPositionOffset, @@ -6091,6 +6185,30 @@ void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachRotation( StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2ViveWristTrackerToAttachRotation(); } +void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNova2Quest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2Quest3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNova2Quest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2Quest3ToAttachRotation(); +} + void SGCoreImpl_FSGTrackingImpl_GetNova2GloveWristOffset( const bool bRightHanded, void* HardwareVersion, diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandLayerImpl.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandLayerImpl.cpp index 3a07f037..7c61afcf 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandLayerImpl.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandLayerImpl.cpp @@ -136,40 +136,14 @@ void FSGHandLayerImpl::GetWristLocation( OutWristRotation = FSGQuatImpl{WristRotation}.ToFQuat(); } -bool FSGHandLayerImpl::SendHaptics(const bool bRightHanded) -{ - return FHandLayerType::SendHaptics(bRightHanded); -} - void FSGHandLayerImpl::StopAllHaptics(const bool bRightHanded) { FHandLayerType::StopAllHaptics(bRightHanded); } -bool FSGHandLayerImpl::QueueCommand_ForceFeedbackLevel( - const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +bool FSGHandLayerImpl::SendHaptics(const bool bRightHanded) { - return FHandLayerType::QueueCommand_ForceFeedbackLevel(bRightHanded, Finger, Level01, bSendImmediate); -} - -bool FSGHandLayerImpl::QueueCommand_ForceFeedbackLevels( - const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) -{ - std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; - return FHandLayerType::QueueCommand_ForceFeedbackLevels(bRightHanded, MoveTemp(Levels01Vector), bSendImmediate); -} - -bool FSGHandLayerImpl::QueueCommand_SetVibroLevel( - const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) -{ - return FHandLayerType::QueueCommand_SetVibroLevel(bRightHanded, Finger, Level01, bSendImmediate); -} - -bool FSGHandLayerImpl::QueueCommand_SetVibroLevels( - const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) -{ - std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; - return FHandLayerType::QueueCommand_SetVibroLevels(bRightHanded, MoveTemp(Levels01Vector), bSendImmediate); + return FHandLayerType::SendHaptics(bRightHanded); } bool FSGHandLayerImpl::SupportsCustomWaveform(const bool bRightHanded, const ESGHapticLocation AtLocation) @@ -185,6 +159,39 @@ bool FSGHandLayerImpl::SendCustomWaveform( return bResult; } +bool FSGHandLayerImpl::QueueCommand_ForceFeedbackLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return FHandLayerType::QueueCommand_ForceFeedbackLevels(bRightHanded, MoveTemp(Levels01Vector), bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_ForceFeedbackLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_ForceFeedbackLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_VibroLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return FHandLayerType::QueueCommand_VibroLevels(bRightHanded, MoveTemp(Levels01Vector), bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_VibroLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_VibroLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_VibroLevel( + const bool bRightHanded, const ESGHapticLocation AtLocation, const float Level01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_VibroLevel( + bRightHanded, FSGCoreEnumCast::ToEHapticLocation(AtLocation), Level01, bSendImmediate); +} + bool FSGHandLayerImpl::SupportsWristSqueeze(const bool bRightHanded) { return FHandLayerType::SupportsWristSqueeze(bRightHanded); diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticGloveImpl.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticGloveImpl.cpp index dbf06f5f..46ec7582 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticGloveImpl.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticGloveImpl.cpp @@ -293,6 +293,17 @@ bool FSGHapticGloveImpl::SendHaptics() return ToHapticGlovePtrChecked()->SendHaptics(); } +bool FSGHapticGloveImpl::SupportsCustomWaveform(const ESGHapticLocation AtLocation) const +{ + return ToHapticGlovePtrChecked()->SupportsCustomWaveform(FSGCoreEnumCast::ToEHapticLocation(AtLocation)); +} + +bool FSGHapticGloveImpl::SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, const ESGHapticLocation Location) +{ + return ToHapticGlovePtrChecked()->SendCustomWaveform( + OutWaveform.ToCustomWaveform(), FSGCoreEnumCast::ToEHapticLocation(Location)); +} + bool FSGHapticGloveImpl::QueueForceFeedbackLevels(const TArray& Levels01) { std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; @@ -304,15 +315,15 @@ bool FSGHapticGloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float return ToHapticGlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01); } -bool FSGHapticGloveImpl::SupportsCustomWaveform(const ESGHapticLocation AtLocation) const +bool FSGHapticGloveImpl::QueueVibroLevels(const TArray& Levels01) { - return ToHapticGlovePtrChecked()->SupportsCustomWaveform(FSGCoreEnumCast::ToEHapticLocation(AtLocation)); + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return ToHapticGlovePtrChecked()->QueueVibroLevels(MoveTemp(Levels01Vector)); } -bool FSGHapticGloveImpl::SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, const ESGHapticLocation Location) +bool FSGHapticGloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) { - return ToHapticGlovePtrChecked()->SendCustomWaveform( - OutWaveform.ToCustomWaveform(), FSGCoreEnumCast::ToEHapticLocation(Location)); + return ToHapticGlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); } void FSGHapticGloveImpl::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveImpl.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveImpl.cpp index a08a8a9b..9646a938 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveImpl.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveImpl.cpp @@ -408,6 +408,17 @@ bool FSGNova2GloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float return ToNova2GlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01); } +bool FSGNova2GloveImpl::QueueVibroLevels(const TArray& Amplitudes) +{ + std::vector AmplitudesVector{FSGArrayUtils::ToStdVector(Amplitudes)}; + return ToNova2GlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector)); +} + +bool FSGNova2GloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + return ToNova2GlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); +} + bool FSGNova2GloveImpl::QueueSqueezeLevel(const float SqueezeLevel01) { return ToNova2GlovePtrChecked()->QueueSqueezeLevel(SqueezeLevel01); diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveImpl.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveImpl.cpp index 520382ea..57b1bf16 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveImpl.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveImpl.cpp @@ -516,6 +516,11 @@ bool FSGNovaGloveImpl::QueueVibroLevels(const TArray& Amplitudes) return ToNovaGlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector)); } +bool FSGNovaGloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + return ToNovaGlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); +} + bool FSGNovaGloveImpl::QueueVibroLevel(const int32 Finger, const float Amplitude) { return ToNovaGlovePtrChecked()->QueueVibroLevel(Finger, Amplitude); diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveImpl.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveImpl.cpp index d1af4541..83cec29c 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveImpl.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveImpl.cpp @@ -419,6 +419,17 @@ bool FSGSenseGloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float return ToSenseGlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01); } +bool FSGSenseGloveImpl::QueueVibroLevels(const TArray& Amplitudes) +{ + std::vector AmplitudesVector{FSGArrayUtils::ToStdVector(Amplitudes)}; + return ToSenseGlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector)); +} + +bool FSGSenseGloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + return ToSenseGlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); +} + void FSGSenseGloveImpl::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, const ESGPositionalTrackingHardware TrackingHardware, FVector& OutGlovePosition, FQuat& OutGloveRotation) const @@ -547,12 +558,6 @@ bool FSGSenseGloveImpl::GetGlovePose(const FSGSenseGloveSensorDataImpl& SensorDa return bResult; } -bool FSGSenseGloveImpl::QueueVibroLevels(const TArray& Amplitudes) -{ - std::vector AmplitudesVector{FSGArrayUtils::ToStdVector(Amplitudes)}; - return ToSenseGlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector)); -} - bool FSGSenseGloveImpl::QueueVibroLevel(const int32 Finger, const float Amplitude) { return ToSenseGlovePtrChecked()->QueueVibroLevel(Finger, Amplitude); diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGTrackingImpl.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGTrackingImpl.cpp index 1282dc50..2e97c4ab 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGTrackingImpl.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGTrackingImpl.cpp @@ -319,6 +319,36 @@ const FQuat& FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachRotation() return Rotation; } +const FVector& FSGTrackingImpl::GetRightNovaQuest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNovaQuest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNovaQuest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNovaQuest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNovaQuest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNovaQuest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNovaQuest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNovaQuest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + void FSGTrackingImpl::GetNovaGloveWristOffset(const bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset) { @@ -460,6 +490,36 @@ const FVector& FSGTrackingImpl::GetLeftNova2ViveTrackerToAttachPosition() return Position; } +const FVector& FSGTrackingImpl::GetRightNova2Quest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNova2Quest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNova2Quest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNova2Quest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNova2Quest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNova2Quest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNova2Quest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2Quest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + const FQuat& FSGTrackingImpl::GetLeftNova2ViveTrackerToAttachRotation() { static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2ViveTrackerToAttachRotation()).ToFQuat()); diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h index 70c3db6e..64922b5b 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h @@ -885,33 +885,11 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_GetWristLocation( void* OutWristPosition, void* OutWristRotation); -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SendHaptics( - bool bRightHanded); - SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_StopAllHaptics( bool bRightHanded); -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevel( - bool bRightHanded, - int32 Finger, - float Level01, - bool bSendImmediate); - -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevels( - bool bRightHanded, - void* Levels01, - bool bSendImmediate); - -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_SetVibroLevel( - bool bRightHanded, - int32 Finger, - float Level01, - bool bSendImmediate); - -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_SetVibroLevels( - bool bRightHanded, - void* Levels01, - bool bSendImmediate); +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SendHaptics( + bool bRightHanded); SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform( bool bRightHanded, @@ -922,6 +900,36 @@ SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SendCustomWavefor void* OutWaveform, void* Location); +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevels( + bool bRightHanded, + void* Levels01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevel( + bool bRightHanded, + int32 Finger, + float Level01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevels( + bool bRightHanded, + void* Levels01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool + SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_Finger_Level0_bSendImmediate( + bool bRightHanded, + int32 Finger, + float Level01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool + SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_AtLocation_Level01_bSendImmediate( + bool bRightHanded, + void* AtLocation, + float Level01, + bool bSendImmediate); + SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SupportsWristSqueeze( bool bRightHanded); @@ -1229,6 +1237,15 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_StopVibrations( SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SendHaptics( void* Instance); +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location); + SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevels( void* Instance, void* Levels01); @@ -1238,14 +1255,14 @@ SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedb int32 Finger, float Level01); -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform( +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevels( void* Instance, - void* AtLocation); + void* Levels01); -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform( +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevel( void* Instance, - void* OutWaveform, - void* Location); + void* Location, + float Level01); SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetWristLocation( void* Instance, @@ -1572,6 +1589,15 @@ SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedba int32 Finger, float Level01); +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevel( + void* Instance, + void* Location, + float Level01); + SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueSqueezeLevel( void* Instance, float SqueezeLevel01); @@ -1889,6 +1915,15 @@ SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbac int32 Finger, float Level01); +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Localtion_Level01( + void* Instance, + void* Location, + float Level01); + SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetGloveLocation( void* Instance, void* ReferencePosition, @@ -1933,11 +1968,7 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommand( void* BuzzLevels, float WristLevel); -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels( - void* Instance, - void* Amplitudes); - -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel( +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Finger_Amplitude( void* Instance, int32 Finger, float Amplitude); @@ -2320,6 +2351,15 @@ SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedba int32 Finger, float Level01); +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Location_Level01( + void* Instance, + void* Location, + float Level01); + SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutGlovePosition_OutGloveRotation( void* Instance, @@ -2389,11 +2429,7 @@ SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_Sen void* SensorData, void* OutGlovePose); -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels( - void* Instance, - void* Amplitudes); - -SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel( +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Finger_Amplitude( void* Instance, int32 Finger, float Amplitude); @@ -2995,6 +3031,18 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFoc SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachRotation( void* OutRotation); +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation( + void* OutRotation); + SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNovaGloveWristOffset( bool bRightHanded, void* OutPositionOffset, @@ -3066,6 +3114,18 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWr SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachRotation( void* OutRotation); +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation( + void* OutRotation); + SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNova2GloveWristOffset( bool bRightHanded, void* HardwareVersion, diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandLayerImpl.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandLayerImpl.h index 17ee7984..20f67823 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandLayerImpl.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandLayerImpl.h @@ -85,23 +85,26 @@ public: ESGPositionalTrackingHardware TrackingHardware, FVector& OutWristPosition, FQuat& OutWristRotation); - static bool SendHaptics(bool bRightHanded); - static void StopAllHaptics(bool bRightHanded); - static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); - - static bool QueueCommand_ForceFeedbackLevels( - bool bRightHanded, const TArray& Levels01, bool bSendImmediate); - - static bool QueueCommand_SetVibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); - - static bool QueueCommand_SetVibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + static bool SendHaptics(bool bRightHanded); static bool SupportsCustomWaveform(bool bRightHanded, ESGHapticLocation AtLocation); static bool SendCustomWaveform(bool bRightHanded, FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location); + static bool QueueCommand_ForceFeedbackLevels( + bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + static bool QueueCommand_VibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + static bool QueueCommand_VibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + static bool QueueCommand_VibroLevel( + bool bRightHanded, ESGHapticLocation AtLocation, float Level01, bool bSendImmediate); + static bool SupportsWristSqueeze(bool bRightHanded); static bool QueueCommand_WristSqueeze(bool bRightHanded, float SqueezeLevel01, bool bSendImmediate); diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticGloveImpl.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticGloveImpl.h index 39acbca0..cfdb3d51 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticGloveImpl.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticGloveImpl.h @@ -183,13 +183,17 @@ public: virtual bool SendHaptics(); public: + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const; + + virtual bool SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location); + virtual bool QueueForceFeedbackLevels(const TArray& Levels01); virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01); - virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const; + virtual bool QueueVibroLevels(const TArray& Levels01); - virtual bool SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location); + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01); public: virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveImpl.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveImpl.h index 15bdc148..67de4204 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveImpl.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveImpl.h @@ -240,6 +240,10 @@ public: virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + virtual bool QueueSqueezeLevel(float SqueezeLevel01); public: diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveImpl.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveImpl.h index 485d1080..ef2360b3 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveImpl.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveImpl.h @@ -250,6 +250,10 @@ public: virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + public: virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, ESGPositionalTrackingHardware TrackingHardware, @@ -277,8 +281,6 @@ public: virtual FString ToNovaCommand( const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, float WristLevel) const; - virtual bool QueueVibroLevels(const TArray& Amplitudes); - virtual bool QueueVibroLevel(int32 Finger, float Amplitude); virtual bool QueueWristLevel(float Amplitude); diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveImpl.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveImpl.h index 59e1fa72..75874124 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveImpl.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveImpl.h @@ -241,6 +241,10 @@ public: virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + public: virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, ESGPositionalTrackingHardware TrackingHardware, @@ -277,8 +281,6 @@ public: bool GetGlovePose(const FSGSenseGloveSensorDataImpl& SensorData, FSGSenseGlovePoseImpl& OutGlovePose) const; public: - virtual bool QueueVibroLevels(const TArray& Amplitudes); - virtual bool QueueVibroLevel(int32 Finger, float Amplitude); virtual bool QueueThumperCommand(ESGSenseGloveThumperCommand Command); diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGTrackingImpl.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGTrackingImpl.h index 896d98bf..73eb7832 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGTrackingImpl.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGTrackingImpl.h @@ -105,6 +105,12 @@ public: static const FVector& GetLeftNovaViveFocus3ToAttachPosition(); static const FQuat& GetLeftNovaViveFocus3ToAttachRotation(); + static const FVector& GetRightNovaQuest3ToAttachPosition(); + static const FQuat& GetRightNovaQuest3ToAttachRotation(); + + static const FVector& GetLeftNovaQuest3ToAttachPosition(); + static const FQuat& GetLeftNovaQuest3ToAttachRotation(); + static void GetNovaGloveWristOffset(bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset); static void GetNovaGloveTrackerOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, @@ -137,6 +143,12 @@ public: static const FVector& GetRightNova2ViveWristTrackerToAttachPosition(); static const FQuat& GetRightNova2ViveWristTrackerToAttachRotation(); + static const FVector& GetRightNova2Quest3ToAttachPosition(); + static const FQuat& GetRightNova2Quest3ToAttachRotation(); + + static const FVector& GetLeftNova2Quest3ToAttachPosition(); + static const FQuat& GetLeftNova2Quest3ToAttachRotation(); + static const FVector& GetLeftNova2ViveWristTrackerToAttachPosition(); static const FQuat& GetLeftNova2ViveWristTrackerToAttachRotation(); diff --git a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandLayerKismetLibrary.cpp b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandLayerKismetLibrary.cpp index 32dfed5a..1f8da290 100644 --- a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandLayerKismetLibrary.cpp +++ b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandLayerKismetLibrary.cpp @@ -100,38 +100,14 @@ void USGHandLayerKismetLibrary::GetWristLocation(const bool bRightHanded, OutWristPosition, OutWristRotation); } -bool USGHandLayerKismetLibrary::SendHaptics(const bool bRightHanded) -{ - return FSGHandLayer::SendHaptics(bRightHanded); -} - void USGHandLayerKismetLibrary::StopAllHaptics(const bool bRightHanded) { FSGHandLayer::StopAllHaptics(bRightHanded); } -bool USGHandLayerKismetLibrary::QueueCommand_ForceFeedbackLevel( - const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +bool USGHandLayerKismetLibrary::SendHaptics(const bool bRightHanded) { - return FSGHandLayer::QueueCommand_ForceFeedbackLevel(bRightHanded, Finger, Level01, bSendImmediate); -} - -bool USGHandLayerKismetLibrary::QueueCommand_ForceFeedbackLevels( - const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) -{ - return FSGHandLayer::QueueCommand_ForceFeedbackLevels(bRightHanded, Levels01, bSendImmediate); -} - -bool USGHandLayerKismetLibrary::QueueCommand_SetVibroLevel( - const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) -{ - return FSGHandLayer::QueueCommand_SetVibroLevel(bRightHanded, Finger, Level01, bSendImmediate); -} - -bool USGHandLayerKismetLibrary::QueueCommand_SetVibroLevels( - const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) -{ - return FSGHandLayer::QueueCommand_SetVibroLevels(bRightHanded, Levels01, bSendImmediate); + return FSGHandLayer::SendHaptics(bRightHanded); } bool USGHandLayerKismetLibrary::SupportsCustomWaveform(const bool bRightHanded, const ESGHapticLocation AtLocation) @@ -145,6 +121,36 @@ bool USGHandLayerKismetLibrary::SendCustomWaveform( return FSGHandLayer::SendCustomWaveform(bRightHanded, OutWaveform, Location); } +bool USGHandLayerKismetLibrary::QueueCommand_ForceFeedbackLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_ForceFeedbackLevels(bRightHanded, Levels01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_ForceFeedbackLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_ForceFeedbackLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_VibroLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_VibroLevels(bRightHanded, Levels01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_VibroLevel_bRH_F_L01_bSI( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_VibroLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_VibroLevel_bRH_AL_L01_bSI( + const bool bRightHanded, const ESGHapticLocation AtLocation, const float Level01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_VibroLevel(bRightHanded, AtLocation, Level01, bSendImmediate); +} + bool USGHandLayerKismetLibrary::SupportsWristSqueeze(const bool bRightHanded) { return FSGHandLayer::SupportsWristSqueeze(bRightHanded); diff --git a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticGloveKismetLibrary.cpp b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticGloveKismetLibrary.cpp index 87de09e4..6bc8f35f 100644 --- a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticGloveKismetLibrary.cpp +++ b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticGloveKismetLibrary.cpp @@ -175,17 +175,6 @@ bool USGHapticGloveKismetLibrary::SendHaptics(USGHapticGlove* HapticGlove) return HapticGlove->SendHaptics(); } -bool USGHapticGloveKismetLibrary::QueueForceFeedbackLevels(USGHapticGlove* HapticGlove, const TArray& Levels01) -{ - return HapticGlove->QueueForceFeedbackLevels(Levels01); -} - -bool USGHapticGloveKismetLibrary::QueueForceFeedbackLevel(USGHapticGlove* HapticGlove, - const int32 Finger, const float Level01) -{ - return HapticGlove->QueueForceFeedbackLevel(Finger, Level01); -} - bool USGHapticGloveKismetLibrary::SupportsCustomWaveform(const USGHapticGlove* HapticGlove, const ESGHapticLocation AtLocation) { @@ -198,6 +187,28 @@ bool USGHapticGloveKismetLibrary::SendCustomWaveform(USGHapticGlove* HapticGlove return HapticGlove->SendCustomWaveform(OutWaveform, Location); } +bool USGHapticGloveKismetLibrary::QueueForceFeedbackLevels(USGHapticGlove* HapticGlove, const TArray& Levels01) +{ + return HapticGlove->QueueForceFeedbackLevels(Levels01); +} + +bool USGHapticGloveKismetLibrary::QueueForceFeedbackLevel(USGHapticGlove* HapticGlove, + const int32 Finger, const float Level01) +{ + return HapticGlove->QueueForceFeedbackLevel(Finger, Level01); +} + +bool USGHapticGloveKismetLibrary::QueueVibroLevels(USGHapticGlove* HapticGlove, const TArray& Levels01) +{ + return HapticGlove->QueueVibroLevels(Levels01); +} + +bool USGHapticGloveKismetLibrary::QueueVibroLevel(USGHapticGlove* HapticGlove, + const ESGHapticLocation Location, const float Level01) +{ + return HapticGlove->QueueVibroLevel(Location, Level01); +} + void USGHapticGloveKismetLibrary::GetWristLocation_RP_FQuat_RR_TH_OutWP_OutWR( const USGHapticGlove* HapticGlove, const FVector& ReferencePosition, const FQuat& ReferenceRotation, diff --git a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveKismetLibrary.cpp b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveKismetLibrary.cpp index d8c0c70a..008251ef 100644 --- a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveKismetLibrary.cpp +++ b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveKismetLibrary.cpp @@ -261,6 +261,17 @@ bool USGNova2GloveKismetLibrary::QueueForceFeedbackLevel( return Nova2Glove->QueueForceFeedbackLevel(Finger, Level01); } +bool USGNova2GloveKismetLibrary::QueueVibroLevels(USGNova2Glove* Nova2Glove, const TArray& Amplitudes) +{ + return Nova2Glove->QueueVibroLevels(Amplitudes); +} + +bool USGNova2GloveKismetLibrary::QueueVibroLevel(USGNova2Glove* Nova2Glove, + const ESGHapticLocation Location, const float Level01) +{ + return Nova2Glove->QueueVibroLevel(Location, Level01); +} + void USGNova2GloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( const USGNova2Glove* Nova2Glove, const FVector& ReferencePosition, const FQuat& ReferenceRotation, diff --git a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveKismetLibrary.cpp b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveKismetLibrary.cpp index 904ffb8c..3e562a38 100644 --- a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveKismetLibrary.cpp +++ b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveKismetLibrary.cpp @@ -280,6 +280,17 @@ bool USGNovaGloveKismetLibrary::QueueForceFeedbackLevel( return NovaGlove->QueueForceFeedbackLevel(Finger, Level01); } +bool USGNovaGloveKismetLibrary::QueueVibroLevels(USGNovaGlove* NovaGlove, const TArray& Amplitudes) +{ + return NovaGlove->QueueVibroLevels(Amplitudes); +} + +bool USGNovaGloveKismetLibrary::QueueVibroLevel_L_L(USGNovaGlove* NovaGlove, + const ESGHapticLocation Location, const float Level01) +{ + return NovaGlove->QueueVibroLevel(Location, Level01); +} + void USGNovaGloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( const USGNovaGlove* NovaGlove, const FVector& ReferencePosition, const FQuat& ReferenceRotation, @@ -357,12 +368,7 @@ FString USGNovaGloveKismetLibrary::ToNovaCommand( return NovaGlove->ToNovaCommand(ForceFeedbackLevels, BuzzLevels, WristLevel); } -bool USGNovaGloveKismetLibrary::QueueVibroLevels(USGNovaGlove* NovaGlove, const TArray& Amplitudes) -{ - return NovaGlove->QueueVibroLevels(Amplitudes); -} - -bool USGNovaGloveKismetLibrary::QueueVibroLevel(USGNovaGlove* NovaGlove, const int32 Finger, const float Amplitude) +bool USGNovaGloveKismetLibrary::QueueVibroLevel_F_A(USGNovaGlove* NovaGlove, const int32 Finger, const float Amplitude) { return NovaGlove->QueueVibroLevel(Finger, Amplitude); } diff --git a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveKismetLibrary.cpp b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveKismetLibrary.cpp index 65f6ad11..2fa50a87 100644 --- a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveKismetLibrary.cpp +++ b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveKismetLibrary.cpp @@ -268,6 +268,17 @@ bool USGSenseGloveKismetLibrary::QueueForceFeedbackLevel(USGSenseGlove* SenseGlo return SenseGlove->QueueForceFeedbackLevel(Finger, Level01); } +bool USGSenseGloveKismetLibrary::QueueVibroLevels(USGSenseGlove* SenseGlove, const TArray& Amplitudes) +{ + return SenseGlove->QueueVibroLevels(Amplitudes); +} + +bool USGSenseGloveKismetLibrary::QueueVibroLevel_L_L(USGSenseGlove* SenseGlove, + const ESGHapticLocation Location, const float Level01) +{ + return SenseGlove->QueueVibroLevel(Location, Level01); +} + void USGSenseGloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( const USGSenseGlove* SenseGlove, const FVector& ReferencePosition, const FQuat& ReferenceRotation, @@ -401,12 +412,8 @@ bool USGSenseGloveKismetLibrary::GetGlovePose_SD_OutGP( return SenseGlove->GetGlovePose(WorldContextObject, SensorData, OutGlovePose); } -bool USGSenseGloveKismetLibrary::QueueVibroLevels(USGSenseGlove* SenseGlove, const TArray& Amplitudes) -{ - return SenseGlove->QueueVibroLevels(Amplitudes); -} - -bool USGSenseGloveKismetLibrary::QueueVibroLevel(USGSenseGlove* SenseGlove, const int32 Finger, const float Amplitude) +bool USGSenseGloveKismetLibrary::QueueVibroLevel_F_A(USGSenseGlove* SenseGlove, const int32 Finger, + const float Amplitude) { return SenseGlove->QueueVibroLevel(Finger, Amplitude); } diff --git a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGTrackingKismetLibrary.cpp b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGTrackingKismetLibrary.cpp index e7068b69..21fcc157 100644 --- a/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGTrackingKismetLibrary.cpp +++ b/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGTrackingKismetLibrary.cpp @@ -305,6 +305,36 @@ FRotator USGTrackingKismetLibrary::GetLeftNovaViveFocus3ToAttachRotation_FRotato return FSGTracking::GetLeftNovaViveFocus3ToAttachRotation(); } +FVector USGTrackingKismetLibrary::GetRightNovaQuest3ToAttachPosition() +{ + return FSGTracking::GetRightNovaQuest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNovaQuest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNovaQuest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNovaQuest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNovaQuest3ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNovaQuest3ToAttachPosition() +{ + return FSGTracking::GetLeftNovaQuest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNovaQuest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNovaQuest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNovaQuest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNovaQuest3ToAttachRotation(); +} + void USGTrackingKismetLibrary::GetNovaGloveWristOffset_bRH_OutPO_FQuat_OutRO( const bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset) { @@ -482,6 +512,36 @@ FRotator USGTrackingKismetLibrary::GetLeftNova2ViveWristTrackerToAttachRotation_ return FSGTracking::GetLeftNova2ViveWristTrackerToAttachRotation(); } +FVector USGTrackingKismetLibrary::GetRightNova2Quest3ToAttachPosition() +{ + return FSGTracking::GetRightNova2Quest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNova2Quest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNova2Quest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNova2Quest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNova2Quest3ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNova2Quest3ToAttachPosition() +{ + return FSGTracking::GetLeftNova2Quest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNova2Quest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNova2Quest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNova2Quest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNova2Quest3ToAttachRotation(); +} + void USGTrackingKismetLibrary::GetNova2GloveWristOffset_bRH_HW_OutPO_FQuat_OutRO( const bool bRightHanded, const FString& HardwareVersion, FVector& OutPositionOffset, FQuat& OutRotationOffset) diff --git a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandLayerKismetLibrary.h b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandLayerKismetLibrary.h index a6dfd492..e1ae570f 100644 --- a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandLayerKismetLibrary.h +++ b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandLayerKismetLibrary.h @@ -124,16 +124,10 @@ public: */ UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") static void GetWristLocation( - bool bRightHanded, - const FVector& ReferencePosition, const FQuat& ReferenceRotation, - ESGPositionalTrackingHardware TrackingHardware, - FVector& OutWristPosition, FQuat& OutWristRotation); - - /** - * Sends all haptics in the queue for the Left / Right hand. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") - static bool SendHaptics(bool bRightHanded); + bool bRightHanded, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); /** * Stop all haptics on the chosen hand. @@ -142,31 +136,10 @@ public: static void StopAllHaptics(bool bRightHanded); /** - * Tell a specific hand to hold the force-feedback at a certain level. + * Sends all haptics in the queue for the Left / Right hand. */ UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") - static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); - - /** - * Queue Force Feedback for multiple fingers. Up to 5. Make sure the value is not NULL. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") - static bool QueueCommand_ForceFeedbackLevels( - bool bRightHanded, const TArray& Levels01, bool bSendImmediate); - - /** - * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and - * DK1.0. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") - static bool QueueCommand_SetVibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); - - /** - * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and - * DK1.0. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") - static bool QueueCommand_SetVibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + static bool SendHaptics(bool bRightHanded); /** * Returns true if the glove for this hand supports a custom waveform vibration on said location. @@ -180,6 +153,47 @@ public: UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") static bool SendCustomWaveform(bool bRightHanded, USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + /** + * Queue Force Feedback for multiple fingers. Up to 5. Make sure the value is not NULL. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_ForceFeedbackLevels( + bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + /** + * Tell a specific hand to hold the force-feedback at a certain level. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + /** + * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and + * DK1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_VibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + /** + * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and + * DK1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_VibroLevel_bRH_F_L01_bSI( + bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + /** + * Queue a vibration level command for a specific HapticLocation. If the gloves has this vibration motor installed. + * Cross-compatible with Nova 2.0. + * + * @param bRightHanded + * @param AtLocation + * @param Level01 + * @param bSendImmediate + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_VibroLevel_bRH_AL_L01_bSI( + bool bRightHanded, ESGHapticLocation AtLocation, float Level01, bool bSendImmediate); + /** * Returns true if the chosen glove supports active contact feedback on the Wrist. */ @@ -210,4 +224,4 @@ public: */ UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") static bool QueueCommand_ClearFlexionLock(bool bRightHanded, int32 Finger, bool bSendImmediate); -}; +}; \ No newline at end of file diff --git a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticGloveKismetLibrary.h b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticGloveKismetLibrary.h index 40132a97..f4149397 100644 --- a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticGloveKismetLibrary.h +++ b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticGloveKismetLibrary.h @@ -220,20 +220,6 @@ public: UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") static bool SendHaptics(UPARAM(ref) USGHapticGlove* HapticGlove); - /** - * Queue a list of force-feedback levels, between 0.0f and 1.0f. Your list should be sorted from thumb to pinky. - * - * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") - static bool QueueForceFeedbackLevels(UPARAM(ref) USGHapticGlove* HapticGlove, const TArray& Levels01); - - /** - * Set the Force-Feedback value of a particular finger to a specific level. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") - static bool QueueForceFeedbackLevel(UPARAM(ref) USGHapticGlove* HapticGlove, int32 Finger, float Level01); - /** * Returns true if the HapticGlove supports vibration feedback on the specified location. */ @@ -260,6 +246,41 @@ public: ESGPositionalTrackingHardware TrackingHardware, FVector& OutWristPosition, FQuat& OutWristRotation); + /** + * Queue a list of force-feedback levels, between 0.0f and 1.0f. Your list should be sorted from thumb to pinky. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueForceFeedbackLevels(UPARAM(ref) USGHapticGlove* HapticGlove, const TArray& Levels01); + + /** + * Set the Force-Feedback value of a particular finger to a specific level. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueForceFeedbackLevel(UPARAM(ref) USGHapticGlove* HapticGlove, int32 Finger, float Level01); + + /** + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Levels01 Array containing the vibration levels, from 0.0 (no vibration) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueVibroLevels(UPARAM(ref) USGHapticGlove* HapticGlove, const TArray& Levels01); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueVibroLevel(UPARAM(ref) USGHapticGlove* HapticGlove, ESGHapticLocation Location, float Level01); + /** * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. * diff --git a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveKismetLibrary.h b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveKismetLibrary.h index e011f9e6..5b8df2b8 100644 --- a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveKismetLibrary.h +++ b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveKismetLibrary.h @@ -321,13 +321,28 @@ public: * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. */ UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") - static bool QueueForceFeedbackLevels(USGNova2Glove* Nova2Glove, const TArray& Levels01); + static bool QueueForceFeedbackLevels(UPARAM(ref) USGNova2Glove* Nova2Glove, const TArray& Levels01); /** * Set the Force-Feedback value of a particular finger to a specific level. */ UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") - static bool QueueForceFeedbackLevel(USGNova2Glove* Nova2Glove, int32 Finger, float Level01); + static bool QueueForceFeedbackLevel(UPARAM(ref) USGNova2Glove* Nova2Glove, int32 Finger, float Level01); + + /** + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool QueueVibroLevels(UPARAM(ref) USGNova2Glove* Nova2Glove, const TArray& Amplitudes); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. This is to + * support backwards compatibility for older plugins. Use of Customwaveforms is encouraged. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool QueueVibroLevel(UPARAM(ref) USGNova2Glove* Nova2Glove, ESGHapticLocation Location, float Level01); /** * Retrieve the location of the glove origin, based on a reference location. diff --git a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveKismetLibrary.h b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveKismetLibrary.h index efe02cf4..9b5977d5 100644 --- a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveKismetLibrary.h +++ b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveKismetLibrary.h @@ -346,13 +346,25 @@ public: * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. */ UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") - static bool QueueForceFeedbackLevels(USGNovaGlove* NovaGlove, const TArray& Levels01); + static bool QueueForceFeedbackLevels(UPARAM(ref) USGNovaGlove* NovaGlove, const TArray& Levels01); /** * Set the Force-Feedback value of a particular finger to a specific level. */ UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") - static bool QueueForceFeedbackLevel(USGNovaGlove* NovaGlove, int32 Finger, float Level01); + static bool QueueForceFeedbackLevel(UPARAM(ref) USGNovaGlove* NovaGlove, int32 Finger, float Level01); + + /** + * Queue a vibrotactile level for each finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueVibroLevels(UPARAM(ref) USGNovaGlove* NovaGlove, const TArray& Amplitudes); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueVibroLevel_L_L(UPARAM(ref) USGNovaGlove* NovaGlove, ESGHapticLocation Location, float Level01); /** * Retrieve the location of the glove origin, based on a reference location. @@ -434,17 +446,11 @@ public: const USGNovaGlove* NovaGlove, const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, float WristLevel); - /** - * Queue a vibrotactile level for each finger. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") - static bool QueueVibroLevels(UPARAM(ref) USGNovaGlove* NovaGlove, const TArray& Amplitudes); - /** * Queue a vibrotactle level for a specific finger. */ UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") - static bool QueueVibroLevel(UPARAM(ref) USGNovaGlove* NovaGlove, int32 Finger, float Amplitude); + static bool QueueVibroLevel_F_A(UPARAM(ref) USGNovaGlove* NovaGlove, int32 Finger, float Amplitude); /** * Queue a command to the vibration amplitude of a general wrist actuator to a set level. diff --git a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveKismetLibrary.h b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveKismetLibrary.h index 2dd0e63e..eaa820f9 100644 --- a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveKismetLibrary.h +++ b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveKismetLibrary.h @@ -318,6 +318,18 @@ public: UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") static bool QueueForceFeedbackLevel(UPARAM(ref) USGSenseGlove* SenseGlove, int32 Finger, float Level01); + /** + * Queue a vibrotactile level for each finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueVibroLevels(UPARAM(ref) USGSenseGlove* SenseGlove, const TArray& Amplitudes); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueVibroLevel_L_L(UPARAM(ref) USGSenseGlove* SenseGlove, ESGHapticLocation Location, float Level01); + /** * Retrieve the location of the glove origin, based on a reference location. */ @@ -452,17 +464,11 @@ public: const USGSenseGloveSensorData* SensorData, USGSenseGlovePose*& OutGlovePose); - /** - * Queue a vibrotactile level for each finger. - */ - UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") - static bool QueueVibroLevels(UPARAM(ref) USGSenseGlove* SenseGlove, const TArray& Amplitudes); - /** * Queue a vibrotactle level for a specific finger. */ UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") - static bool QueueVibroLevel(UPARAM(ref) USGSenseGlove* SenseGlove, int32 Finger, float Amplitude); + static bool QueueVibroLevel_F_A(UPARAM(ref) USGSenseGlove* SenseGlove, int32 Finger, float Amplitude); /** * Queue a command for the SenseGlove Thumper actuator. diff --git a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGTrackingKismetLibrary.h b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGTrackingKismetLibrary.h index d13ba0a5..a724f278 100644 --- a/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGTrackingKismetLibrary.h +++ b/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGTrackingKismetLibrary.h @@ -325,87 +325,123 @@ public: /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", - Category="SenseGlove | Core | Tracking") + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") static FVector GetRightNovaQuestProToAttachPosition(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest Pro To To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetRightNovaQuestProToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest Pro To Attach Rotation", Category="SenseGlove | Core | Tracking") static FRotator GetRightNovaQuestProToAttachRotation_FRotator(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", - Category="SenseGlove | Core | Tracking") + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") static FVector GetLeftNovaQuestProToAttachPosition(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest Pro To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetLeftNovaQuestProToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest Pro To Attach Rotation", Category="SenseGlove | Core | Tracking") static FRotator GetLeftNovaQuestProToAttachRotation_FRotator(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", - Category="SenseGlove | Core | Tracking") + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") static FVector GetRightNovaViveFocus3ToAttachPosition(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Vive Focus 3 To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetRightNovaViveFocus3ToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Vive Focus 3 To Attach Rotattion", Category="SenseGlove | Core | Tracking") static FRotator GetRightNovaViveFocus3ToAttachRotation_FRotator(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", - Category="SenseGlove | Core | Tracking") + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") static FVector GetLeftNovaViveFocus3ToAttachPosition(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Vive Focus 3 To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetLeftNovaViveFocus3ToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get To Attach ", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Vive Focus 3 To Attach Rotation", Category="SenseGlove | Core | Tracking") static FRotator GetLeftNovaViveFocus3ToAttachRotation_FRotator(); + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNovaQuest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNovaQuest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNovaQuest3ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNovaQuest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNovaQuest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNovaQuest3ToAttachRotation_FRotator(); + /** * Returns the Offsets that will bring us from the Nova origin to the wrist position. */ @@ -565,14 +601,14 @@ public: /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 VIVE Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetRightNova2ViveTrackerToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 VIVE Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FRotator GetRightNova2ViveTrackerToAttachRotation_FRotator(); @@ -585,14 +621,14 @@ public: /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 VIVE Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetLeftNova2ViveTrackerToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 VIVE Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FRotator GetLeftNova2ViveTrackerToAttachRotation_FRotator(); @@ -605,14 +641,14 @@ public: /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 VIVE Wrist Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Wrist Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetRightNova2ViveWristTrackerToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 VIVE Wrist Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Wrist Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FRotator GetRightNova2ViveWristTrackerToAttachRotation_FRotator(); @@ -625,17 +661,57 @@ public: /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 VIVE Wrist Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Wrist Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FQuat GetLeftNova2ViveWristTrackerToAttachRotation_FQuat(); /** * */ - UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 VIVE Wrist Tracker To Attach Rotation", + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Wrist Tracker To Attach Rotation", Category="SenseGlove | Core | Tracking") static FRotator GetLeftNova2ViveWristTrackerToAttachRotation_FRotator(); + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNova2Quest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNova2Quest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNova2Quest3ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNova2Quest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNova2Quest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNova2Quest3ToAttachRotation_FRotator(); + /** * Returns the Offsets that will bring us from the Nova origin to the wrist position. */ diff --git a/Source/SenseGloveTypes/Public/SGTypes/SGCoreTypes.h b/Source/SenseGloveTypes/Public/SGTypes/SGCoreTypes.h index 346e9991..33005ba2 100644 --- a/Source/SenseGloveTypes/Public/SGTypes/SGCoreTypes.h +++ b/Source/SenseGloveTypes/Public/SGTypes/SGCoreTypes.h @@ -477,6 +477,9 @@ enum class ESGPositionalTrackingHardware : uint8 /* Oculus Touch Controller that comes with the Meta Quest Pro. */ QuestProController UMETA(DisplayName = "Quest Pro Controller"), + + /* Oculus Quest 3 Controller. */ + Quest3Controller UMETA(DisplayName = "Quest 3 Controller"), }; /* Indices to access Sensor Data in Shared Memory. */ @@ -659,4 +662,4 @@ enum class ESGWaveformType : uint8 /* A random, noisy signal. */ Noise UMETA(DisplayName = "Noise"), -}; +}; \ No newline at end of file diff --git a/Source/ThirdParty/include/SenseGlove/Core/HandLayer.hpp b/Source/ThirdParty/include/SenseGlove/Core/HandLayer.hpp index d087f1e9..a4c09082 100644 --- a/Source/ThirdParty/include/SenseGlove/Core/HandLayer.hpp +++ b/Source/ThirdParty/include/SenseGlove/Core/HandLayer.hpp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f54f08ab942cf2efca31b9180c581bece44388cab4cc61af505840cde1ab903 -size 9335 +oid sha256:46e11567380eeef2ea26030a68f6f4e9270b0eceeaeac6f375ec4f296391e449 +size 9844 diff --git a/Source/ThirdParty/include/SenseGlove/Core/HapticGlove.hpp b/Source/ThirdParty/include/SenseGlove/Core/HapticGlove.hpp index ec140775..c02b7dc2 100644 --- a/Source/ThirdParty/include/SenseGlove/Core/HapticGlove.hpp +++ b/Source/ThirdParty/include/SenseGlove/Core/HapticGlove.hpp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0268b1e3e8f39725845e476e05e49ef12ae75a2a80b29bfd065d58bf843608e -size 12698 +oid sha256:565d62e0f04152ed9cfe7efa3bc6c01f899b94b26f045d3db8eac9bf0fddd182 +size 13624 diff --git a/Source/ThirdParty/include/SenseGlove/Core/Nova2Glove.hpp b/Source/ThirdParty/include/SenseGlove/Core/Nova2Glove.hpp index c50c0c58..09e4f51b 100644 --- a/Source/ThirdParty/include/SenseGlove/Core/Nova2Glove.hpp +++ b/Source/ThirdParty/include/SenseGlove/Core/Nova2Glove.hpp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:081e8646e085d1eff4e7f8cb3df63f0fc66d4c2857ee250072754ad94d6487bc -size 20291 +oid sha256:19a76141af31bb4576c9e022eae75f2dfe4a60fe3015a1186db056fefbad34c2 +size 21344 diff --git a/Source/ThirdParty/include/SenseGlove/Core/NovaGlove.hpp b/Source/ThirdParty/include/SenseGlove/Core/NovaGlove.hpp index 41c92d4e..78b3e205 100644 --- a/Source/ThirdParty/include/SenseGlove/Core/NovaGlove.hpp +++ b/Source/ThirdParty/include/SenseGlove/Core/NovaGlove.hpp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94b34fb2fa5626832107a7d5a9c60d3acf5bb422ca39efa9df46fef034c247fe -size 22268 +oid sha256:13e4fbcb9f98b77c0cb170005a80fe65589cd5211a0506c8ae88342ab731c7f9 +size 22726 diff --git a/Source/ThirdParty/include/SenseGlove/Core/SenseGlove.hpp b/Source/ThirdParty/include/SenseGlove/Core/SenseGlove.hpp index f3c7a3ef..ea9e0e74 100644 --- a/Source/ThirdParty/include/SenseGlove/Core/SenseGlove.hpp +++ b/Source/ThirdParty/include/SenseGlove/Core/SenseGlove.hpp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:378f119daba64914e03ec40267af850ee6c57608625d9f541dc7902d0977ac84 -size 20839 +oid sha256:1b1318f2f538d18ae4a6ea3aeef7a117012f0f1948ef3f2b6dbdfc6d1d16f92e +size 21299 diff --git a/Source/ThirdParty/include/SenseGlove/Core/Tracking.hpp b/Source/ThirdParty/include/SenseGlove/Core/Tracking.hpp index f9201416..4f7739b5 100644 --- a/Source/ThirdParty/include/SenseGlove/Core/Tracking.hpp +++ b/Source/ThirdParty/include/SenseGlove/Core/Tracking.hpp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf5a38d1ab8aff4dc6fa2d8a1881545b6878cd461644648e88bd84c2adfa4c5a -size 10995 +oid sha256:791c0ee71d5db357fc52cdec4eef418a50c7da34764e4ee291657ab38e308ac8 +size 11764 diff --git a/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgcore.a b/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgcore.a index c0964269..cc387275 100644 --- a/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7038e462ca11b45ce12da4e91aff0c5e27f3f811c4b0c15f6cce49b75d018e39 -size 15283910 +oid sha256:a1557080a8776ef261f13bd5dd32c169900ff81e3e78c4d2fc660508a9fc0bfe +size 15314584 diff --git a/Source/ThirdParty/lib/android/r25b/arm64/release/libsgcore.a b/Source/ThirdParty/lib/android/r25b/arm64/release/libsgcore.a index 3b45ec93..84589511 100644 --- a/Source/ThirdParty/lib/android/r25b/arm64/release/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/arm64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a95a95b78e0d86c2f0f6293171fd11b38343a062c661f1e95f7a6f180d9e1279 -size 1866118 +oid sha256:265660c630813ee25813c5f1101358f3d6db498807395915ec7148a9b5f9a65e +size 1885408 diff --git a/Source/ThirdParty/lib/android/r25b/armv7/debug/libsgcore.a b/Source/ThirdParty/lib/android/r25b/armv7/debug/libsgcore.a index 1951f910..4511f172 100644 --- a/Source/ThirdParty/lib/android/r25b/armv7/debug/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/armv7/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3828d2640fc3a4a911f6fcaae1ecba6348a81b9b4d2c5bd5461ab39f3d0eb2a8 -size 13407272 +oid sha256:d003a0317de091eb3f5c6c03a3447c675158ca9d4b260949880c93de2b6a4f8a +size 13430024 diff --git a/Source/ThirdParty/lib/android/r25b/armv7/release/libsgcore.a b/Source/ThirdParty/lib/android/r25b/armv7/release/libsgcore.a index a1c6f778..51eb89ca 100644 --- a/Source/ThirdParty/lib/android/r25b/armv7/release/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/armv7/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a05fef656c678efe24c76e160b65f0c3e37ce358e2fb92b27e198ab196b687de -size 1732804 +oid sha256:414e44bc0f829b29f9bce6b10284b9762df794eaaf3eae3d9d2cc7abfd6e9960 +size 1747910 diff --git a/Source/ThirdParty/lib/android/r25b/x64/debug/libsgcore.a b/Source/ThirdParty/lib/android/r25b/x64/debug/libsgcore.a index 68b8ff0f..330f06f7 100644 --- a/Source/ThirdParty/lib/android/r25b/x64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/x64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1f8e87bfccb5a73815b83f1844df0d0275dc21b4394269995c027ca0a81e6ce -size 14996246 +oid sha256:4e07ddd0fb7fa8738bb80a419c584068401c6655312a2c80feafc85ef8e6b23e +size 15023608 diff --git a/Source/ThirdParty/lib/android/r25b/x64/release/libsgcore.a b/Source/ThirdParty/lib/android/r25b/x64/release/libsgcore.a index b603bbd2..e061ab7c 100644 --- a/Source/ThirdParty/lib/android/r25b/x64/release/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/x64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:267b48be5f268b21f70399705b76ffd06f69219bb00d863e54fde06aef455467 -size 1859510 +oid sha256:1557b974d4b808239229f3251666fe0b34f6ebff6f5340b0336d7e69a84c6d39 +size 1878488 diff --git a/Source/ThirdParty/lib/android/r25b/x86/debug/libsgcore.a b/Source/ThirdParty/lib/android/r25b/x86/debug/libsgcore.a index a4cdcfa9..6f2fb413 100644 --- a/Source/ThirdParty/lib/android/r25b/x86/debug/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/x86/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abe099fb5bf9903039ffbdc5c2aea96b5ae1ecfd1427f451665ee19a66d011a1 -size 11561296 +oid sha256:449a712128266a9a0547810105f5a5fb4d0d2acb24c41488643b14020e48b7c8 +size 11582152 diff --git a/Source/ThirdParty/lib/android/r25b/x86/release/libsgcore.a b/Source/ThirdParty/lib/android/r25b/x86/release/libsgcore.a index ec01c4bb..08ee4cec 100644 --- a/Source/ThirdParty/lib/android/r25b/x86/release/libsgcore.a +++ b/Source/ThirdParty/lib/android/r25b/x86/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f89a4780123a7affb4540a17f07e0ba5d2230fb263089be468ee807d4f1de97c -size 1470712 +oid sha256:e331d195641935ee02c938687d52c3fc59a1c6d1a33e1f450f5112982756a703 +size 1484858 diff --git a/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgconnect.a b/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgconnect.a index 76cdf274..04adf454 100644 --- a/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:728035c540464d2640d4034f38cc5ac9a48cf750d88973ffce947c237874c869 +oid sha256:e635a179bdbf714ed467c0cea87c579f0dfddf5eb0eb7f344cce86f9f9ca41d4 size 8151632 diff --git a/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgcore.a b/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgcore.a index ea308966..785b5589 100644 --- a/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v20/aarch64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36cadab8cb12bd6cd739027125e32b024e17b232baa9e26879b5a2f94611c21f -size 13066280 +oid sha256:fe128368eacdaf59e738eb20cd67f7c1e9fbdcfedaa84039c93f674599fca194 +size 13087170 diff --git a/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgconnect.a b/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgconnect.a index 88da2ef9..0781ddb0 100644 --- a/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62f657c219bef1f6873b94d717fb50232b626253a1b9e8550c1ffd48e4cb4a1f +oid sha256:6d56c2ef0c07aea58f19e56430399f2a5544e06e5a382e07c479723887945e0a size 1167258 diff --git a/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgcore.a b/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgcore.a index b83af96c..e29f5e53 100644 --- a/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v20/aarch64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:222581e89ac25cde7013136d53875abe0b8f61d6330b8f9b2ca39733270cb551 -size 1793352 +oid sha256:28b20ac6060bfdf05dc7145bef6b28415a027ae0d6993571be019560407dc531 +size 1812298 diff --git a/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgconnect.a b/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgconnect.a index 73c58b2b..464efc9f 100644 --- a/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:228bd691431265eee50fa589fa94712739b6a8bb2f0bf54d763ea8d3a2f6ab16 +oid sha256:a3b82e0a41ab4495b0d77e1b229d63a542d4eac81e534843f56b035b4b022899 size 7924874 diff --git a/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgcore.a b/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgcore.a index 92f03f61..9613117b 100644 --- a/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v20/x86-64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:138c60d311fe14a1fc5a85f4c0c59d234b8c4feed7cbb7edc3d68e34efe2bccd -size 12874912 +oid sha256:75d0a843a0fc3744c1ec4aae45edb2c54fa092eff284337fb871341944525ed4 +size 12893986 diff --git a/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgconnect.a b/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgconnect.a index 0f559b44..49c59141 100644 --- a/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87a156ae0a6eeb9c61af16569239487e3d1481777e90a02ef71f2cfd84d5c12d +oid sha256:8869f403ed8842a750cc9ef946f768c9436d99500b239a8c8943a10a3487ee89 size 1061432 diff --git a/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgcore.a b/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgcore.a index e559d783..3b1ff0db 100644 --- a/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v20/x86-64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16ccd4a6eebdba48f3bfbc9a28bcbfb47181a2b5298c5c516e6bd1e961699a1d -size 1791040 +oid sha256:74ed7f0587a3fdce1573c31b8b14585ba5e96cf610f996483659eacbbe878635 +size 1809858 diff --git a/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgconnect.a b/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgconnect.a index dc676d1d..76f22992 100644 --- a/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff9f0bbdd9c3b99b7103ab5f25dcc4e6fb702974e978c0b452033b8f84c94802 +oid sha256:0ff7c5d144f3c7fc106c94afec7439ae5e871f379787a581eb84e353375f627a size 7978164 diff --git a/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgcore.a b/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgcore.a index 02228a56..175e29cf 100644 --- a/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c318f54f361c2b442ef50aa4024db3a01c6d20f025b7cc8e5849121795464159 -size 12665970 +oid sha256:a7a2ba951d4ea09c8ea088656d8b724190d43c0622dead66c547f91c7cd7f4ff +size 12687180 diff --git a/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgconnect.a b/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgconnect.a index 289d7fc8..14a4bed5 100644 --- a/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30f4d198d62d653a5a77c1376e76d9505585a96b2ec44135cc56d1127428346a +oid sha256:45d001042d8a99ff38c3564aa36423d7d867648b8657d940f58c75bd12e6cc31 size 1164264 diff --git a/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgcore.a b/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgcore.a index 98164857..c7b09dba 100644 --- a/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce141830fda47701962c4cbdbb98a5d6c3cceff9d1200b01377a7321c9c41032 -size 1799984 +oid sha256:b26aa8b4f073c0beeafce1e7062ce3e4ea4cf866fec0a26090451ff29835ae97 +size 1819092 diff --git a/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgconnect.a b/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgconnect.a index e63291e1..332e35a5 100644 --- a/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5a9e5d6a9288690c295676700e63143da61f76b2ae7bf62f5e29468403267f7 +oid sha256:1b890cd66934dd839348739bda68cb0ed6199a590a499ceb63acc86d0f5b40ef size 7682864 diff --git a/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgcore.a b/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgcore.a index 87e34226..023a97b4 100644 --- a/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02b9e19c2bfd9c26d52bac0d32dc00e89401be3c1a6ea5097603fe91ab6bc579 -size 12344978 +oid sha256:e0678128e8006a69c04b0fdc079d35f20ad8def07d62b54c36f2160df29654a9 +size 12364044 diff --git a/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgconnect.a b/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgconnect.a index ace12690..94a65c8f 100644 --- a/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d4eae5e8ed834902baee740858bc6c249d5caa26f40cba0cb57c3fff50ef3349 +oid sha256:006785b2266472b673e893b45dba65275adee294a281a4ea8a4c4982b290ad94 size 1047954 diff --git a/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgcore.a b/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgcore.a index 5a5b2cae..77487e19 100644 --- a/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f79c046c17d74a01adf06cc0d4bbc47b84f0fdd5c4ede2cddb9bdf0496e32e19 -size 1788168 +oid sha256:333c9f2192ed2caa018755f253a4aaacf72e54c9e47f903d3bb104585d63a2a2 +size 1806876 diff --git a/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgconnect.a b/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgconnect.a index bb941792..6d403801 100644 --- a/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c90a135a2670ab8ae134765a9ff6f38b77e5e520edfed88ded8854f91fcb20a6 +oid sha256:c92b56c0e296d9dd5a0ca95b5d93b33abbde41da25f3163e6cdcc8503a9b778f size 8670870 diff --git a/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgcore.a b/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgcore.a index 8294ae93..bbeefa0f 100644 --- a/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f15fc0d31b2f60231f86c6a21b110f85733c48c1bfe91f79b28dffee06560b4 -size 14879334 +oid sha256:ae83d2c7e018922b691b569bea14c26103c1aa5a7bec78cf09affd4fd0612101 +size 14900298 diff --git a/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgconnect.a b/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgconnect.a index 4cb0d3f8..5c59c856 100644 --- a/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8659bd2cec1f0723aab2087099f461fa53d5a54d7aec7468e507ec503401ad52 +oid sha256:cad2a96d62e2a2bacd38f9a0ea6b6ad7c3755ce38abaef72a2d0555872a0d4a7 size 1169834 diff --git a/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgcore.a b/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgcore.a index b31e345e..3ba6e4e7 100644 --- a/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71300e94645cdb669939deb26d1df9a6c6ed0138c8608351cd8c57ec14252681 -size 1825734 +oid sha256:fcaabc4bc46c9bd0426bdabac8dd538828526224043ec6ce4cb2e5556f6c8ec5 +size 1844840 diff --git a/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgconnect.a b/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgconnect.a index bad603fd..f747790a 100644 --- a/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1093fe4c5d57eef5c87c4fcdba5b5c71af95627edb8ecdec73e35096e9ac491b +oid sha256:447cffc21b117782968650378446be7a8b99180142c9d70f6aef246dcf05a166 size 8370154 diff --git a/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgcore.a b/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgcore.a index 9065abcc..e26f3fca 100644 --- a/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cbddf633f9bc614b358daa9a49ae8b9f9d1230df44619b61ab09904c5b44550 -size 14527030 +oid sha256:8fdf9da33a6ee7a60132b46e1baf40e7b47d416d83027e444c29651daa2a71f6 +size 14546146 diff --git a/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgconnect.a b/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgconnect.a index 1b501acf..cce0c3e1 100644 --- a/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgconnect.a +++ b/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgconnect.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8726fc577aa09dd4585ae2e679f6699609ae5559b26d594ada2de6bea7478df8 +oid sha256:0532e5f0e109c18341fe6e81732ac45f98181264d861f3597b0e4e26a19a71d6 size 1050668 diff --git a/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgcore.a b/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgcore.a index a5e211f6..bb1c6208 100644 --- a/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgcore.a +++ b/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgcore.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b77f2289eac8138e75e3f108c9126db9a3880bc0783a781c10dfe3cad0040a5e -size 1808564 +oid sha256:59724d098a5b609bf37d567d5e27ce7a16b6c5df87d2b39c6a80054983b23e0e +size 1827222 diff --git a/Source/ThirdParty/lib/win64/msvc142/debug/serial.lib b/Source/ThirdParty/lib/win64/msvc142/debug/serial.lib index 64752e7c..66c2f308 100644 --- a/Source/ThirdParty/lib/win64/msvc142/debug/serial.lib +++ b/Source/ThirdParty/lib/win64/msvc142/debug/serial.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d05a9b46c57ef7e47f591eec9eafcb57b33e33dd6812fbda1a3c1522bed80d3a +oid sha256:f4605ce2847e1be4488676949337f14de768eba6ea50e599b57d6f62ce08887a size 1219882 diff --git a/Source/ThirdParty/lib/win64/msvc142/debug/sgconnect.lib b/Source/ThirdParty/lib/win64/msvc142/debug/sgconnect.lib index 47e8c7af..0fddc029 100644 --- a/Source/ThirdParty/lib/win64/msvc142/debug/sgconnect.lib +++ b/Source/ThirdParty/lib/win64/msvc142/debug/sgconnect.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0878f3def8b318e67a305df232304dce66a93fa20f8da3893ae04946b63ed49e +oid sha256:14c125590d7b341bff7b82b19d639b94cb4cd10f87dfcf631a8ce3296ff22c5d size 14380012 diff --git a/Source/ThirdParty/lib/win64/msvc142/debug/sgcore.lib b/Source/ThirdParty/lib/win64/msvc142/debug/sgcore.lib index 80a713bd..b6f0e21e 100644 --- a/Source/ThirdParty/lib/win64/msvc142/debug/sgcore.lib +++ b/Source/ThirdParty/lib/win64/msvc142/debug/sgcore.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09010b9f1376081e028eadac7c072f621146b4401dc03c1d332cef24ca145915 -size 21762418 +oid sha256:6621078e77c62be8b27f9ea02775a91115de0b99cbee18cf031d92f30e676416 +size 21808336 diff --git a/Source/ThirdParty/lib/win64/msvc142/release/serial.lib b/Source/ThirdParty/lib/win64/msvc142/release/serial.lib index 3495cd69..854d26dc 100644 --- a/Source/ThirdParty/lib/win64/msvc142/release/serial.lib +++ b/Source/ThirdParty/lib/win64/msvc142/release/serial.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5f402a9e73f8efb1e9e4b44c54e554ed2099f1c1c9ed470383180f08ebc8803 +oid sha256:4ec754845163a50fd96b03f837926350ba27365dd6d559656af4e925fcef3f65 size 351186 diff --git a/Source/ThirdParty/lib/win64/msvc142/release/sgconnect.lib b/Source/ThirdParty/lib/win64/msvc142/release/sgconnect.lib index 73e2be02..2dd83bb1 100644 --- a/Source/ThirdParty/lib/win64/msvc142/release/sgconnect.lib +++ b/Source/ThirdParty/lib/win64/msvc142/release/sgconnect.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcad5e6ced0ab9dc6f80ad9630322044267b7fd629838ba8db06d9b6d91afa73 +oid sha256:0f55fc729b737779f2697711aacc9011a6ce52b3762aebe50c02852df816389d size 3003480 diff --git a/Source/ThirdParty/lib/win64/msvc142/release/sgcore.lib b/Source/ThirdParty/lib/win64/msvc142/release/sgcore.lib index 36cb8886..2bf2cdd4 100644 --- a/Source/ThirdParty/lib/win64/msvc142/release/sgcore.lib +++ b/Source/ThirdParty/lib/win64/msvc142/release/sgcore.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:402f3b451cbc4ce715e86cfe26acab6faca74718d548254cb9a16b927893dc4e -size 5051190 +oid sha256:1c27f0fb3c0f792f79bdcec453b2297942875de04f08a3ed9c13372a44d8d413 +size 5086158 diff --git a/Source/ThirdParty/lib/win64/msvc143/debug/serial.lib b/Source/ThirdParty/lib/win64/msvc143/debug/serial.lib index 51fe47be..2e155735 100644 --- a/Source/ThirdParty/lib/win64/msvc143/debug/serial.lib +++ b/Source/ThirdParty/lib/win64/msvc143/debug/serial.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24af6e6c3d9d003536f41c405757ed9abf025d920e1af317a9bcafa5efa3bd8e -size 1208570 +oid sha256:a07ee4a5a752efe8c1f93a5046c26e0f4092b8591f380a2b76ed6465cc819716 +size 1197698 diff --git a/Source/ThirdParty/lib/win64/msvc143/debug/sgconnect.lib b/Source/ThirdParty/lib/win64/msvc143/debug/sgconnect.lib index d30b616e..d8bf6eae 100644 --- a/Source/ThirdParty/lib/win64/msvc143/debug/sgconnect.lib +++ b/Source/ThirdParty/lib/win64/msvc143/debug/sgconnect.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f4cd17e112dbeac79dc97b8bab7a5e1cda70f8d579f243b2ce9214c425b10ce -size 14860872 +oid sha256:ee9022af7d47e2b581fa381571c883eba0c48d4d56740dc4f59b9d773af3e327 +size 14868052 diff --git a/Source/ThirdParty/lib/win64/msvc143/debug/sgcore.lib b/Source/ThirdParty/lib/win64/msvc143/debug/sgcore.lib index c17aac2e..f238c789 100644 --- a/Source/ThirdParty/lib/win64/msvc143/debug/sgcore.lib +++ b/Source/ThirdParty/lib/win64/msvc143/debug/sgcore.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:675f3eb48fd90463f1e9cd81c626df066690c3e5c952ad715d456740b6f99b97 -size 21929670 +oid sha256:9c50362c8d656ae3b07dd826c7ad24048c8ba918670044b5eca60fd16ffe3f16 +size 21922606 diff --git a/Source/ThirdParty/lib/win64/msvc143/release/serial.lib b/Source/ThirdParty/lib/win64/msvc143/release/serial.lib index 0289d7e2..c081f42f 100644 --- a/Source/ThirdParty/lib/win64/msvc143/release/serial.lib +++ b/Source/ThirdParty/lib/win64/msvc143/release/serial.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2315b8ba2d0511f7c964c02b5cb054c5eb33e4e60566174d08df43571f506997 -size 340006 +oid sha256:6dd2c3c730f6704c856218803fb87926bf04991047fae88ec697c53a2cc202f1 +size 336716 diff --git a/Source/ThirdParty/lib/win64/msvc143/release/sgconnect.lib b/Source/ThirdParty/lib/win64/msvc143/release/sgconnect.lib index a0f5d6af..6c858370 100644 --- a/Source/ThirdParty/lib/win64/msvc143/release/sgconnect.lib +++ b/Source/ThirdParty/lib/win64/msvc143/release/sgconnect.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2865e5d0ba7b88009586bd07af86e9f92d5bfe567ed615459d6981eef5d2b775 -size 2878342 +oid sha256:a66f1d8f9e309f1f584557a48fcc5d0f1dd55a6676e1e0cdeeb33233c5fb4e38 +size 2879430 diff --git a/Source/ThirdParty/lib/win64/msvc143/release/sgcore.lib b/Source/ThirdParty/lib/win64/msvc143/release/sgcore.lib index 446ae2b0..45ddc55b 100644 --- a/Source/ThirdParty/lib/win64/msvc143/release/sgcore.lib +++ b/Source/ThirdParty/lib/win64/msvc143/release/sgcore.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:576de8dd80a5c4a7e35303d8afef702b0fbf13c576079b406beaae6312d00760 -size 4836530 +oid sha256:1894bb0f8436b66267d5d767d8affec8be16e65f47af23de45d2ef1ba308a905 +size 4887774