another attempt at improving the glove casts
This commit is contained in:
@@ -37,6 +37,11 @@
|
||||
|
||||
#include "Engine/Engine.h"
|
||||
|
||||
#include "SGCore/SGBetaDevice.h"
|
||||
#include "SGCore/SGHapticGlove.h"
|
||||
#include "SGCore/SGNovaGlove.h"
|
||||
#include "SGCore/SGNova2Glove.h"
|
||||
#include "SGCore/SGSenseGlove.h"
|
||||
#include "SGCoreImpl/SGBetaDeviceImpl.h"
|
||||
#include "SGCoreImpl/SGDeviceImpl.h"
|
||||
#include "SGCoreImpl/SGExportedFunctions.h"
|
||||
@@ -315,6 +320,12 @@ bool USGDevice::IsABetaDevice() const
|
||||
return SGCoreImpl_FSGDeviceImpl_IsABetaDevice(&InstanceContainer);
|
||||
}
|
||||
|
||||
bool USGDevice::IsAHapticGlove() const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
return SGCoreImpl_FSGDeviceImpl_IsAHapticGlove(&InstanceContainer);
|
||||
}
|
||||
|
||||
bool USGDevice::IsANova2Glove() const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
@@ -333,6 +344,56 @@ bool USGDevice::IsASenseGlove() const
|
||||
return SGCoreImpl_FSGDeviceImpl_IsASenseGlove(&InstanceContainer);
|
||||
}
|
||||
|
||||
USGBetaDevice* USGDevice::AsBetaDevice(UObject* Outer) const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtr;
|
||||
SGCoreImpl_FSGDeviceImpl_ToBetaDeviceImplRef(&InstanceContainer, &OutSharedPtr);
|
||||
USGBetaDevice* BetaDevice = NewObject<USGBetaDevice>(Outer);
|
||||
BetaDevice->SetSGDeviceImpl(*OutSharedPtr.Ptr.Get());
|
||||
return BetaDevice;
|
||||
}
|
||||
|
||||
USGHapticGlove* USGDevice::AsHapticGlove(UObject* Outer) const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtr;
|
||||
SGCoreImpl_FSGDeviceImpl_ToHapticGloveImplRef(&InstanceContainer, &OutSharedPtr);
|
||||
USGHapticGlove* HapticGlove = NewObject<USGHapticGlove>(Outer);
|
||||
HapticGlove->SetSGDeviceImpl(*OutSharedPtr.Ptr.Get());
|
||||
return HapticGlove;
|
||||
}
|
||||
|
||||
USGNova2Glove* USGDevice::AsNova2Glove(UObject* Outer) const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtr;
|
||||
SGCoreImpl_FSGDeviceImpl_ToNova2GloveImplRef(&InstanceContainer, &OutSharedPtr);
|
||||
USGNova2Glove* Nova2Glove = NewObject<USGNova2Glove>(Outer);
|
||||
Nova2Glove->SetSGDeviceImpl(*OutSharedPtr.Ptr.Get());
|
||||
return Nova2Glove;
|
||||
}
|
||||
|
||||
USGNovaGlove* USGDevice::AsNovaGlove(UObject* Outer) const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtr;
|
||||
SGCoreImpl_FSGDeviceImpl_ToNovaGloveImplRef(&InstanceContainer, &OutSharedPtr);
|
||||
USGNovaGlove* NovaGlove = NewObject<USGNovaGlove>(Outer);
|
||||
NovaGlove->SetSGDeviceImpl(*OutSharedPtr.Ptr.Get());
|
||||
return NovaGlove;
|
||||
}
|
||||
|
||||
USGSenseGlove* USGDevice::AsSenseGlove(UObject* Outer) const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtr;
|
||||
SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef(&InstanceContainer, &OutSharedPtr);
|
||||
USGSenseGlove* SenseGlove = NewObject<USGSenseGlove>(Outer);
|
||||
SenseGlove->SetSGDeviceImpl(*OutSharedPtr.Ptr.Get());
|
||||
return SenseGlove;
|
||||
}
|
||||
|
||||
ESGDeviceType USGDevice::GetDeviceType() const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
#include "SGCore/SGBasicHandModel.h"
|
||||
#include "SGCore/SGCustomWaveform.h"
|
||||
#include "SGCore/SGDeviceImplCast.h"
|
||||
#include "SGCore/SGNova2Glove.h"
|
||||
#include "SGCore/SGNovaGlove.h"
|
||||
#include "SGCore/SGSenseGlove.h"
|
||||
#include "SGCoreImpl/SGBasicHandModelImpl.h"
|
||||
#include "SGCoreImpl/SGCustomWaveformImpl.h"
|
||||
@@ -205,27 +203,6 @@ TSharedRef<FSGHapticGloveImpl> USGHapticGlove::ToHapticGloveImpl() const
|
||||
return FSGDeviceImplCast::ToHapticGloveImpl(ToSGDeviceImpl());
|
||||
}
|
||||
|
||||
USGNova2Glove* USGHapticGlove::AsNova2Glove(UObject* Outer) const
|
||||
{
|
||||
USGNova2Glove* Instance = NewObject<USGNova2Glove>(Outer);
|
||||
Instance->SetSGDeviceImpl(ToHapticGloveImpl());
|
||||
return Instance;
|
||||
}
|
||||
|
||||
USGNovaGlove* USGHapticGlove::AsNovaGlove(UObject* Outer) const
|
||||
{
|
||||
USGNovaGlove* Instance = NewObject<USGNovaGlove>(Outer);
|
||||
Instance->SetSGDeviceImpl(ToHapticGloveImpl());
|
||||
return Instance;
|
||||
}
|
||||
|
||||
USGSenseGlove* USGHapticGlove::AsSenseGlove(UObject* Outer) const
|
||||
{
|
||||
USGSenseGlove* Instance = NewObject<USGSenseGlove>(Outer);
|
||||
Instance->SetSGDeviceImpl(ToHapticGloveImpl());
|
||||
return Instance;
|
||||
}
|
||||
|
||||
ESGDeviceType USGHapticGlove::GetDeviceType() const
|
||||
{
|
||||
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
|
||||
|
||||
@@ -54,6 +54,11 @@ class FSGNovaGloveImpl;
|
||||
class FSGNova2GloveImpl;
|
||||
class FSGSenseGloveImpl;
|
||||
class USGHapticChannelInfo;
|
||||
class USGBetaDevice;
|
||||
class USGHapticGlove;
|
||||
class USGNova2Glove;
|
||||
class USGNovaGlove;
|
||||
class USGSenseGlove;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -254,10 +259,22 @@ public:
|
||||
|
||||
public:
|
||||
bool IsABetaDevice() const;
|
||||
bool IsAHapticGlove() const;
|
||||
bool IsANova2Glove() const;
|
||||
bool IsANovaGlove() const;
|
||||
bool IsASenseGlove() const;
|
||||
|
||||
public:
|
||||
USGBetaDevice* AsBetaDevice(UObject* Outer) const;
|
||||
|
||||
USGHapticGlove* AsHapticGlove(UObject* Outer) const;
|
||||
|
||||
USGNova2Glove* AsNova2Glove(UObject* Outer) const;
|
||||
|
||||
USGNovaGlove* AsNovaGlove(UObject* Outer) const;
|
||||
|
||||
USGSenseGlove* AsSenseGlove(UObject* Outer) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Check which DeviceType this class belongs to.
|
||||
|
||||
@@ -58,9 +58,6 @@ class FSGNova2GloveImpl;
|
||||
class FSGSenseGloveImpl;
|
||||
class USGBasicHandModel;
|
||||
class USGCustomWaveform;
|
||||
class USGNova2Glove;
|
||||
class USGNovaGlove;
|
||||
class USGSenseGlove;
|
||||
|
||||
/**
|
||||
* A glove developed by SenseGlove, that has hand tracking and/or haptic feedback functionality.
|
||||
@@ -189,13 +186,6 @@ public:
|
||||
*/
|
||||
TSharedRef<FSGHapticGloveImpl> ToHapticGloveImpl() const;
|
||||
|
||||
public:
|
||||
USGNova2Glove* AsNova2Glove(UObject* Outer) const;
|
||||
|
||||
USGNovaGlove* AsNovaGlove(UObject* Outer) const;
|
||||
|
||||
USGSenseGlove* AsSenseGlove(UObject* Outer) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Get the DeviceType enumerator of this device; used to check if its a SenseGlove/Nova/etc.
|
||||
|
||||
@@ -151,35 +151,35 @@ TSharedRef<FSGDeviceImpl> FSGDeviceImpl::ToSGDeviceImplRef()
|
||||
|
||||
TSharedRef<FSGBetaDeviceImpl> FSGDeviceImpl::ToBetaDeviceImplRef()
|
||||
{
|
||||
FSGBetaDeviceImpl* BetaDevice(dynamic_cast<FSGBetaDeviceImpl*>(this));
|
||||
FSGBetaDeviceImpl* BetaDevice{dynamic_cast<FSGBetaDeviceImpl*>(this)};
|
||||
ensureAlwaysMsgf(BetaDevice, TEXT("Invalid BetaDevice!"));
|
||||
return SharedThis(BetaDevice);
|
||||
}
|
||||
|
||||
TSharedRef<FSGHapticGloveImpl> FSGDeviceImpl::ToHapticGloveImplRef()
|
||||
{
|
||||
FSGHapticGloveImpl* HapticGlove(dynamic_cast<FSGHapticGloveImpl*>(this));
|
||||
FSGHapticGloveImpl* HapticGlove{dynamic_cast<FSGHapticGloveImpl*>(this)};
|
||||
ensureAlwaysMsgf(HapticGlove, TEXT("Invalid HapticGlove!"));
|
||||
return SharedThis(HapticGlove);
|
||||
}
|
||||
|
||||
TSharedRef<FSGNova2GloveImpl> FSGDeviceImpl::ToNova2GloveImplRef()
|
||||
{
|
||||
FSGNova2GloveImpl* Nova2Glove(dynamic_cast<FSGNova2GloveImpl*>(this));
|
||||
FSGNova2GloveImpl* Nova2Glove{dynamic_cast<FSGNova2GloveImpl*>(this)};
|
||||
ensureAlwaysMsgf(Nova2Glove, TEXT("Invalid Nova2Glove!"));
|
||||
return SharedThis(Nova2Glove);
|
||||
}
|
||||
|
||||
TSharedRef<FSGNovaGloveImpl> FSGDeviceImpl::ToNovaGloveImplRef()
|
||||
{
|
||||
FSGNovaGloveImpl* NovaGlove(dynamic_cast<FSGNovaGloveImpl*>(this));
|
||||
FSGNovaGloveImpl* NovaGlove{dynamic_cast<FSGNovaGloveImpl*>(this)};
|
||||
ensureAlwaysMsgf(NovaGlove, TEXT("Invalid NovaGlove!"));
|
||||
return SharedThis(NovaGlove);
|
||||
}
|
||||
|
||||
TSharedRef<FSGSenseGloveImpl> FSGDeviceImpl::ToSenseGloveImplRef()
|
||||
{
|
||||
FSGSenseGloveImpl* SenseGlove(dynamic_cast<FSGSenseGloveImpl*>(this));
|
||||
FSGSenseGloveImpl* SenseGlove{dynamic_cast<FSGSenseGloveImpl*>(this)};
|
||||
ensureAlwaysMsgf(SenseGlove, TEXT("Invalid SenseGlove!"));
|
||||
return SharedThis(SenseGlove);
|
||||
}
|
||||
@@ -192,6 +192,14 @@ bool FSGDeviceImpl::IsABetaDevice() const
|
||||
return BetaDevice != nullptr;
|
||||
}
|
||||
|
||||
bool FSGDeviceImpl::IsAHapticGlove() const
|
||||
{
|
||||
const FSGHapticGloveImpl::FHapticGlovePtrType HapticGlove{
|
||||
std::dynamic_pointer_cast<FSGHapticGloveImpl::FHapticGloveType>(ToSGDevicePtr())
|
||||
};
|
||||
return HapticGlove != nullptr;
|
||||
}
|
||||
|
||||
bool FSGDeviceImpl::IsANova2Glove() const
|
||||
{
|
||||
const FSGNova2GloveImpl::FNova2GlovePtrType Nova2Glove{
|
||||
|
||||
@@ -1078,6 +1078,12 @@ bool SGCoreImpl_FSGDeviceImpl_IsABetaDevice(
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->IsABetaDevice();
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGDeviceImpl_IsAHapticGlove(
|
||||
void* Instance)
|
||||
{
|
||||
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->IsAHapticGlove();
|
||||
}
|
||||
|
||||
bool SGCoreImpl_FSGDeviceImpl_IsANova2Glove(
|
||||
void* Instance)
|
||||
{
|
||||
|
||||
@@ -168,6 +168,7 @@ public:
|
||||
|
||||
public:
|
||||
bool IsABetaDevice() const;
|
||||
bool IsAHapticGlove() const;
|
||||
bool IsANova2Glove() const;
|
||||
bool IsANovaGlove() const;
|
||||
bool IsASenseGlove() const;
|
||||
|
||||
@@ -556,6 +556,9 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef(
|
||||
SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsABetaDevice(
|
||||
void* Instance);
|
||||
|
||||
SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsAHapticGlove(
|
||||
void* Instance);
|
||||
|
||||
SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsANova2Glove(
|
||||
void* Instance);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user