diff --git a/Source/SenseGloveCore/Private/SGCore/SGDevice.cpp b/Source/SenseGloveCore/Private/SGCore/SGDevice.cpp index 6386c16c..764939b4 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGDevice.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGDevice.cpp @@ -309,6 +309,30 @@ TSharedRef USGDevice::ToSGDeviceImpl() const return Pimpl->SGDeviceImpl.ToSharedRef(); } +bool USGDevice::IsABetaDevice() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsABetaDevice(&InstanceContainer); +} + +bool USGDevice::IsANova2Glove() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsANova2Glove(&InstanceContainer); +} + +bool USGDevice::IsANovaGlove() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsANovaGlove(&InstanceContainer); +} + +bool USGDevice::IsASenseGlove() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsASenseGlove(&InstanceContainer); +} + ESGDeviceType USGDevice::GetDeviceType() const { FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; diff --git a/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp b/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp index 23dddd2d..d9d9c4b0 100644 --- a/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp +++ b/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp @@ -205,13 +205,6 @@ TSharedRef USGHapticGlove::ToHapticGloveImpl() const return FSGDeviceImplCast::ToHapticGloveImpl(ToSGDeviceImpl()); } -bool USGHapticGlove::IsANova2Glove() const -{ - const TSharedPtr Nova2Glove = - StaticCastSharedPtr(ToHapticGloveImpl().ToSharedPtr()); - return Nova2Glove.IsValid(); -} - USGNova2Glove* USGHapticGlove::AsNova2Glove(UObject* Outer) const { USGNova2Glove* Instance = NewObject(Outer); @@ -219,13 +212,6 @@ USGNova2Glove* USGHapticGlove::AsNova2Glove(UObject* Outer) const return Instance; } -bool USGHapticGlove::IsANovaGlove() const -{ - const TSharedPtr NovaGlove = - StaticCastSharedPtr(ToHapticGloveImpl().ToSharedPtr()); - return NovaGlove.IsValid(); -} - USGNovaGlove* USGHapticGlove::AsNovaGlove(UObject* Outer) const { USGNovaGlove* Instance = NewObject(Outer); @@ -233,13 +219,6 @@ USGNovaGlove* USGHapticGlove::AsNovaGlove(UObject* Outer) const return Instance; } -bool USGHapticGlove::IsASenseGlove() const -{ - const TSharedPtr SenseGlove = - StaticCastSharedPtr(ToHapticGloveImpl().ToSharedPtr()); - return SenseGlove.IsValid(); -} - USGSenseGlove* USGHapticGlove::AsSenseGlove(UObject* Outer) const { USGSenseGlove* Instance = NewObject(Outer); diff --git a/Source/SenseGloveCore/Public/SGCore/SGDevice.h b/Source/SenseGloveCore/Public/SGCore/SGDevice.h index 6496359d..e8c45e84 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGDevice.h +++ b/Source/SenseGloveCore/Public/SGCore/SGDevice.h @@ -252,6 +252,12 @@ public: */ TSharedRef ToSGDeviceImpl() const; +public: + bool IsABetaDevice() const; + bool IsANova2Glove() const; + bool IsANovaGlove() const; + bool IsASenseGlove() const; + public: /** * Check which DeviceType this class belongs to. diff --git a/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h b/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h index 9a64b4d9..717dcd5b 100644 --- a/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h +++ b/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h @@ -190,13 +190,10 @@ public: TSharedRef ToHapticGloveImpl() const; public: - bool IsANova2Glove() const; USGNova2Glove* AsNova2Glove(UObject* Outer) const; - bool IsANovaGlove() const; USGNovaGlove* AsNovaGlove(UObject* Outer) const; - bool IsASenseGlove() const; USGSenseGlove* AsSenseGlove(UObject* Outer) const; public: diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceImpl.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceImpl.cpp index 2b4c17a1..1831e63f 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceImpl.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceImpl.cpp @@ -184,6 +184,38 @@ TSharedRef FSGDeviceImpl::ToSenseGloveImplRef() return SharedThis(SenseGlove); } +bool FSGDeviceImpl::IsABetaDevice() const +{ + const FSGBetaDeviceImpl::FBetaDevicePtrType BetaDevice{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return BetaDevice != nullptr; +} + +bool FSGDeviceImpl::IsANova2Glove() const +{ + const FSGNova2GloveImpl::FNova2GlovePtrType Nova2Glove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return Nova2Glove != nullptr; +} + +bool FSGDeviceImpl::IsANovaGlove() const +{ + const FSGNovaGloveImpl::FNovaGlovePtrType NovaGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return NovaGlove != nullptr; +} + +bool FSGDeviceImpl::IsASenseGlove() const +{ + const FSGSenseGloveImpl::FSenseGlovePtrType SenseGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return SenseGlove != nullptr; +} + ESGDeviceType FSGDeviceImpl::GetDeviceType() const { return FSGCoreEnumCast::ToESGDeviceType(ToSGDevicePtrChecked()->GetDeviceType()); diff --git a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp index e80eadc7..8c779fa6 100644 --- a/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp +++ b/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp @@ -1072,6 +1072,30 @@ void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef( StaticCast(Instance)->Ptr->ToSenseGloveImplRef(); } +bool SGCoreImpl_FSGDeviceImpl_IsABetaDevice( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsABetaDevice(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsANova2Glove( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsANova2Glove(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsANovaGlove( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsANovaGlove(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsASenseGlove( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsASenseGlove(); +} + void SGCoreImpl_FSGDeviceImpl_GetDeviceType( void* Instance, void* OutType) diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceImpl.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceImpl.h index 6aa9c54b..c9778b04 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceImpl.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceImpl.h @@ -166,6 +166,12 @@ public: */ TSharedRef ToSenseGloveImplRef(); +public: + bool IsABetaDevice() const; + bool IsANova2Glove() const; + bool IsANovaGlove() const; + bool IsASenseGlove() const; + public: virtual ESGDeviceType GetDeviceType() const; diff --git a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h index d86b7878..76b394b1 100644 --- a/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h +++ b/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h @@ -553,6 +553,18 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef( void* Instance, void* OutSharedPtr); +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsABetaDevice( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsANova2Glove( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsANovaGlove( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsASenseGlove( + void* Instance); + SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetDeviceType( void* Instance, void* OutType);