another attempt at improving the glove casts

This commit is contained in:
Mamadou Babaei
2024-03-22 20:59:17 +01:00
parent aa3e2af861
commit 8ba5b84f37
8 changed files with 101 additions and 38 deletions
@@ -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);