implement the api updates and bump the senseglove libraries to v2.101.2-2eb7439f
This commit is contained in:
@@ -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<float> 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<float> 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
|
||||
|
||||
@@ -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<float>& 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)
|
||||
|
||||
@@ -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<float>& 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()};
|
||||
|
||||
@@ -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<float>& 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()};
|
||||
|
||||
@@ -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<float>& 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<float>& 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)
|
||||
|
||||
@@ -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<float>& 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<float>& 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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<float>& 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<float>& 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.
|
||||
|
||||
@@ -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<float>& 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:
|
||||
/**
|
||||
|
||||
@@ -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<float>& 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).
|
||||
*
|
||||
|
||||
@@ -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<float>& 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<float>& ForceFeedbackLevels, const TArray<float>& BuzzLevels, float WristLevel) const;
|
||||
|
||||
/**
|
||||
* Queue a vibrotactile level for each finger.
|
||||
*
|
||||
* @param Amplitudes
|
||||
*/
|
||||
virtual bool QueueVibroLevels(const TArray<float>& Amplitudes);
|
||||
|
||||
/**
|
||||
* Queue a vibrotactle level for a specific finger.
|
||||
*
|
||||
|
||||
@@ -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<float>& 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<float>& Amplitudes);
|
||||
|
||||
/**
|
||||
* Queue a vibrotactle level for a specific finger.
|
||||
*
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<FSGIC_TSharedPtr_FSGDeviceImpl*>(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<FSGIC_TSharedPtr_FSGDeviceImpl*>(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<FSGIC_FSGHandInterpolatorImpl*>(OutHandInterpolatorImpl)->HandInterpolatorImpl =
|
||||
FSGHandInterpolatorImpl::Deserialize(
|
||||
StaticCast<FSGIC_FString*>(SerializedString)->String);
|
||||
StaticCast<FSGIC_FString*>(SerializedString)->String,
|
||||
bRightHanded);
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGHandInterpolatorImpl_ctor(
|
||||
@@ -1727,6 +1728,13 @@ void SGCoreImpl_FSGHandLayerImpl_GetWristLocation(
|
||||
StaticCast<FSGIC_FQuat*>(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<FSGIC_ESGHapticLocation*>(AtLocation)->Location);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform(
|
||||
const bool bRightHanded,
|
||||
void* OutWaveform,
|
||||
void* Location)
|
||||
{
|
||||
return FSGHandLayerImpl::SendCustomWaveform(
|
||||
bRightHanded,
|
||||
StaticCast<FSGIC_FSGCustomWaveformImpl*>(OutWaveform)->CustomWaveformImpl,
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(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<FSGIC_TArray_float*>(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<FSGIC_TArray_float*>(Levels01)->Array,
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(AtLocation)->Location,
|
||||
Level01,
|
||||
bSendImmediate);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform(
|
||||
const bool bRightHanded,
|
||||
void* AtLocation)
|
||||
{
|
||||
return FSGHandLayerImpl::SupportsCustomWaveform(
|
||||
bRightHanded,
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(AtLocation)->Location);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform(
|
||||
const bool bRightHanded,
|
||||
void* OutWaveform,
|
||||
void* Location)
|
||||
{
|
||||
return FSGHandLayerImpl::SendCustomWaveform(
|
||||
bRightHanded,
|
||||
StaticCast<FSGIC_FSGCustomWaveformImpl*>(OutWaveform)->CustomWaveformImpl,
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(Location)->Location);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGHandLayerImpl_SupportsWristSqueeze(
|
||||
const bool bRightHanded)
|
||||
{
|
||||
@@ -2434,6 +2448,24 @@ bool SGCoreImpl_FSGHapticGloveImpl_SendHaptics(
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGHapticGloveImpl*>(Instance)->Ptr->SendHaptics();
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform(
|
||||
void* Instance,
|
||||
void* AtLocation)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGHapticGloveImpl*>(Instance)->Ptr->SupportsCustomWaveform(
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(AtLocation)->Location);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform(
|
||||
void* Instance,
|
||||
void* OutWaveform,
|
||||
void* Location)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGHapticGloveImpl*>(Instance)->Ptr->SendCustomWaveform(
|
||||
StaticCast<FSGIC_FSGCustomWaveformImpl*>(OutWaveform)->CustomWaveformImpl,
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(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<FSGIC_TSharedPtr_FSGHapticGloveImpl*>(Instance)->Ptr->SupportsCustomWaveform(
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(AtLocation)->Location);
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGHapticGloveImpl*>(Instance)->Ptr->QueueVibroLevels(
|
||||
StaticCast<FSGIC_TArray_float*>(Levels01)->Array);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform(
|
||||
bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevel(
|
||||
void* Instance,
|
||||
void* OutWaveform,
|
||||
void* Location)
|
||||
void* Location,
|
||||
const float Level01)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGHapticGloveImpl*>(Instance)->Ptr->SendCustomWaveform(
|
||||
StaticCast<FSGIC_FSGCustomWaveformImpl*>(OutWaveform)->CustomWaveformImpl,
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(Location)->Location);
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGHapticGloveImpl*>(Instance)->Ptr->QueueVibroLevel(
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(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<FSGIC_TSharedPtr_FSGNova2GloveImpl*>(Instance)->Ptr->QueueVibroLevels(
|
||||
StaticCast<FSGIC_TArray_float*>(Amplitudes)->Array);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevel(
|
||||
void* Instance,
|
||||
void* Location,
|
||||
const float Level01)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGNova2GloveImpl*>(Instance)->Ptr->QueueVibroLevel(
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(Location)->Location,
|
||||
Level01);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGNova2GloveImpl_QueueSqueezeLevel(
|
||||
void* Instance,
|
||||
float SqueezeLevel01)
|
||||
const float SqueezeLevel01)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGNova2GloveImpl*>(Instance)->Ptr->QueueSqueezeLevel(
|
||||
SqueezeLevel01);
|
||||
@@ -3758,6 +3808,24 @@ bool SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevel(
|
||||
Level01);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels(
|
||||
void* Instance,
|
||||
void* Amplitudes)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGNovaGloveImpl*>(Instance)->Ptr->QueueVibroLevels(
|
||||
StaticCast<FSGIC_TArray_float*>(Amplitudes)->Array);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Localtion_Level01(
|
||||
void* Instance,
|
||||
void* Location,
|
||||
const float Level01)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGNovaGloveImpl*>(Instance)->Ptr->QueueVibroLevel(
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(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<FSGIC_FString*>(OutString)->String =
|
||||
StaticCast<FSGIC_TSharedPtr_FSGNovaGloveImpl*>(Instance)->Ptr->ToNovaCommand(
|
||||
@@ -3846,15 +3914,7 @@ void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommand(
|
||||
WristLevel);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels(
|
||||
void* Instance,
|
||||
void* Amplitudes)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGNovaGloveImpl*>(Instance)->Ptr->QueueVibroLevels(
|
||||
StaticCast<FSGIC_TArray_float*>(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<FSGIC_TSharedPtr_FSGNovaGloveImpl*>(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<FSGIC_TSharedPtr_FSGNovaGloveImpl*>(Instance)->Ptr->QueueThresholdCommand_Flexion(
|
||||
Finger,
|
||||
@@ -4617,6 +4677,24 @@ bool SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevel(
|
||||
Level01);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels(
|
||||
void* Instance,
|
||||
void* Amplitudes)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGSenseGloveImpl*>(Instance)->Ptr->QueueVibroLevels(
|
||||
StaticCast<FSGIC_TArray_float*>(Amplitudes)->Array);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Location_Level01(
|
||||
void* Instance,
|
||||
void* Location,
|
||||
const float Level01)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGSenseGloveImpl*>(Instance)->Ptr->QueueVibroLevel(
|
||||
StaticCast<FSGIC_ESGHapticLocation*>(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<FSGIC_FSGSenseGlovePoseImpl*>(OutGlovePose)->SenseGlovePoseImpl);
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels(
|
||||
void* Instance,
|
||||
void* Amplitudes)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGSenseGloveImpl*>(Instance)->Ptr->QueueVibroLevels(
|
||||
StaticCast<FSGIC_TArray_float*>(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<FSGIC_FQuat*>(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachRotation();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachPosition(
|
||||
void* OutPosition)
|
||||
{
|
||||
StaticCast<FSGIC_FVector*>(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaQuest3ToAttachPosition();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation(
|
||||
void* OutRotation)
|
||||
{
|
||||
StaticCast<FSGIC_FQuat*>(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaQuest3ToAttachRotation();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachPosition(
|
||||
void* OutPosition)
|
||||
{
|
||||
StaticCast<FSGIC_FVector*>(OutPosition)->Vector = FSGTrackingImpl::GetLeftNovaQuest3ToAttachPosition();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation(
|
||||
void* OutRotation)
|
||||
{
|
||||
StaticCast<FSGIC_FQuat*>(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaQuest3ToAttachRotation();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetNovaGloveWristOffset(
|
||||
const bool bRightHanded,
|
||||
void* OutPositionOffset,
|
||||
@@ -6091,6 +6185,30 @@ void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachRotation(
|
||||
StaticCast<FSGIC_FQuat*>(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2ViveWristTrackerToAttachRotation();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachPosition(
|
||||
void* OutPosition)
|
||||
{
|
||||
StaticCast<FSGIC_FVector*>(OutPosition)->Vector = FSGTrackingImpl::GetRightNova2Quest3ToAttachPosition();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation(
|
||||
void* OutRotation)
|
||||
{
|
||||
StaticCast<FSGIC_FQuat*>(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2Quest3ToAttachRotation();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachPosition(
|
||||
void* OutPosition)
|
||||
{
|
||||
StaticCast<FSGIC_FVector*>(OutPosition)->Vector = FSGTrackingImpl::GetLeftNova2Quest3ToAttachPosition();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation(
|
||||
void* OutRotation)
|
||||
{
|
||||
StaticCast<FSGIC_FQuat*>(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2Quest3ToAttachRotation();
|
||||
}
|
||||
|
||||
void SGCoreImpl_FSGTrackingImpl_GetNova2GloveWristOffset(
|
||||
const bool bRightHanded,
|
||||
void* HardwareVersion,
|
||||
|
||||
@@ -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<float>& Levels01, const bool bSendImmediate)
|
||||
{
|
||||
std::vector<float> 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<float>& Levels01, const bool bSendImmediate)
|
||||
{
|
||||
std::vector<float> 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<float>& Levels01, const bool bSendImmediate)
|
||||
{
|
||||
std::vector<float> 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<float>& Levels01, const bool bSendImmediate)
|
||||
{
|
||||
std::vector<float> 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);
|
||||
|
||||
@@ -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<float>& Levels01)
|
||||
{
|
||||
std::vector<float> Levels01Vector{FSGArrayUtils::ToStdVector<float>(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<float>& Levels01)
|
||||
{
|
||||
return ToHapticGlovePtrChecked()->SupportsCustomWaveform(FSGCoreEnumCast::ToEHapticLocation(AtLocation));
|
||||
std::vector<float> 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,
|
||||
|
||||
@@ -408,6 +408,17 @@ bool FSGNova2GloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float
|
||||
return ToNova2GlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01);
|
||||
}
|
||||
|
||||
bool FSGNova2GloveImpl::QueueVibroLevels(const TArray<float>& Amplitudes)
|
||||
{
|
||||
std::vector<float> 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);
|
||||
|
||||
@@ -516,6 +516,11 @@ bool FSGNovaGloveImpl::QueueVibroLevels(const TArray<float>& 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);
|
||||
|
||||
@@ -419,6 +419,17 @@ bool FSGSenseGloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float
|
||||
return ToSenseGlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01);
|
||||
}
|
||||
|
||||
bool FSGSenseGloveImpl::QueueVibroLevels(const TArray<float>& Amplitudes)
|
||||
{
|
||||
std::vector<float> 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<float>& Amplitudes)
|
||||
{
|
||||
std::vector<float> AmplitudesVector{FSGArrayUtils::ToStdVector(Amplitudes)};
|
||||
return ToSenseGlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector));
|
||||
}
|
||||
|
||||
bool FSGSenseGloveImpl::QueueVibroLevel(const int32 Finger, const float Amplitude)
|
||||
{
|
||||
return ToSenseGlovePtrChecked()->QueueVibroLevel(Finger, Amplitude);
|
||||
|
||||
@@ -319,6 +319,36 @@ const FQuat& FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachRotation()
|
||||
return Rotation;
|
||||
}
|
||||
|
||||
const FVector& FSGTrackingImpl::GetRightNovaQuest3ToAttachPosition()
|
||||
{
|
||||
static FVector Position{
|
||||
FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
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<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
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<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
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<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
|
||||
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());
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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<float>& Levels01, bool bSendImmediate);
|
||||
|
||||
static bool QueueCommand_SetVibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate);
|
||||
|
||||
static bool QueueCommand_SetVibroLevels(bool bRightHanded, const TArray<float>& 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<float>& Levels01, bool bSendImmediate);
|
||||
|
||||
static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate);
|
||||
|
||||
static bool QueueCommand_VibroLevels(bool bRightHanded, const TArray<float>& 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);
|
||||
|
||||
@@ -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<float>& Levels01);
|
||||
|
||||
virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01);
|
||||
|
||||
virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const;
|
||||
virtual bool QueueVibroLevels(const TArray<float>& 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,
|
||||
|
||||
@@ -240,6 +240,10 @@ public:
|
||||
|
||||
virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override;
|
||||
|
||||
virtual bool QueueVibroLevels(const TArray<float>& Amplitudes) override;
|
||||
|
||||
virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override;
|
||||
|
||||
virtual bool QueueSqueezeLevel(float SqueezeLevel01);
|
||||
|
||||
public:
|
||||
|
||||
@@ -250,6 +250,10 @@ public:
|
||||
|
||||
virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override;
|
||||
|
||||
virtual bool QueueVibroLevels(const TArray<float>& 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<float>& ForceFeedbackLevels, const TArray<float>& BuzzLevels, float WristLevel) const;
|
||||
|
||||
virtual bool QueueVibroLevels(const TArray<float>& Amplitudes);
|
||||
|
||||
virtual bool QueueVibroLevel(int32 Finger, float Amplitude);
|
||||
|
||||
virtual bool QueueWristLevel(float Amplitude);
|
||||
|
||||
@@ -241,6 +241,10 @@ public:
|
||||
|
||||
virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override;
|
||||
|
||||
virtual bool QueueVibroLevels(const TArray<float>& 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<float>& Amplitudes);
|
||||
|
||||
virtual bool QueueVibroLevel(int32 Finger, float Amplitude);
|
||||
|
||||
virtual bool QueueThumperCommand(ESGSenseGloveThumperCommand Command);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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<float>& 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<float>& 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<float>& 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<float>& 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);
|
||||
|
||||
@@ -175,17 +175,6 @@ bool USGHapticGloveKismetLibrary::SendHaptics(USGHapticGlove* HapticGlove)
|
||||
return HapticGlove->SendHaptics();
|
||||
}
|
||||
|
||||
bool USGHapticGloveKismetLibrary::QueueForceFeedbackLevels(USGHapticGlove* HapticGlove, const TArray<float>& 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<float>& 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<float>& 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,
|
||||
|
||||
@@ -261,6 +261,17 @@ bool USGNova2GloveKismetLibrary::QueueForceFeedbackLevel(
|
||||
return Nova2Glove->QueueForceFeedbackLevel(Finger, Level01);
|
||||
}
|
||||
|
||||
bool USGNova2GloveKismetLibrary::QueueVibroLevels(USGNova2Glove* Nova2Glove, const TArray<float>& 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,
|
||||
|
||||
@@ -280,6 +280,17 @@ bool USGNovaGloveKismetLibrary::QueueForceFeedbackLevel(
|
||||
return NovaGlove->QueueForceFeedbackLevel(Finger, Level01);
|
||||
}
|
||||
|
||||
bool USGNovaGloveKismetLibrary::QueueVibroLevels(USGNovaGlove* NovaGlove, const TArray<float>& 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<float>& 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);
|
||||
}
|
||||
|
||||
@@ -268,6 +268,17 @@ bool USGSenseGloveKismetLibrary::QueueForceFeedbackLevel(USGSenseGlove* SenseGlo
|
||||
return SenseGlove->QueueForceFeedbackLevel(Finger, Level01);
|
||||
}
|
||||
|
||||
bool USGSenseGloveKismetLibrary::QueueVibroLevels(USGSenseGlove* SenseGlove, const TArray<float>& 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<float>& 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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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<float>& 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<float>& 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<float>& 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<float>& 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);
|
||||
};
|
||||
};
|
||||
@@ -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<float>& 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<float>& 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<float>& 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.
|
||||
*
|
||||
|
||||
@@ -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<float>& Levels01);
|
||||
static bool QueueForceFeedbackLevels(UPARAM(ref) USGNova2Glove* Nova2Glove, const TArray<float>& 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<float>& 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.
|
||||
|
||||
@@ -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<float>& Levels01);
|
||||
static bool QueueForceFeedbackLevels(UPARAM(ref) USGNovaGlove* NovaGlove, const TArray<float>& 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<float>& 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<float>& ForceFeedbackLevels, const TArray<float>& 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<float>& 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.
|
||||
|
||||
@@ -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<float>& 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<float>& 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.
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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"),
|
||||
};
|
||||
};
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user