try an alternative approach for glove instances upcasting at the lower levels of the api

This commit is contained in:
Mamadou Babaei
2024-02-26 19:27:04 +01:00
parent ae688f71a9
commit 7d8d8cc9b0
8 changed files with 104 additions and 24 deletions
@@ -184,6 +184,38 @@ TSharedRef<FSGSenseGloveImpl> FSGDeviceImpl::ToSenseGloveImplRef()
return SharedThis(SenseGlove);
}
bool FSGDeviceImpl::IsABetaDevice() const
{
const FSGBetaDeviceImpl::FBetaDevicePtrType BetaDevice{
std::dynamic_pointer_cast<FSGBetaDeviceImpl::FBetaDeviceType>(ToSGDevicePtr())
};
return BetaDevice != nullptr;
}
bool FSGDeviceImpl::IsANova2Glove() const
{
const FSGNova2GloveImpl::FNova2GlovePtrType Nova2Glove{
std::dynamic_pointer_cast<FSGNova2GloveImpl::FNova2GloveType>(ToSGDevicePtr())
};
return Nova2Glove != nullptr;
}
bool FSGDeviceImpl::IsANovaGlove() const
{
const FSGNovaGloveImpl::FNovaGlovePtrType NovaGlove{
std::dynamic_pointer_cast<FSGNovaGloveImpl::FNovaGloveType>(ToSGDevicePtr())
};
return NovaGlove != nullptr;
}
bool FSGDeviceImpl::IsASenseGlove() const
{
const FSGSenseGloveImpl::FSenseGlovePtrType SenseGlove{
std::dynamic_pointer_cast<FSGSenseGloveImpl::FSenseGloveType>(ToSGDevicePtr())
};
return SenseGlove != nullptr;
}
ESGDeviceType FSGDeviceImpl::GetDeviceType() const
{
return FSGCoreEnumCast::ToESGDeviceType(ToSGDevicePtrChecked()->GetDeviceType());
@@ -1072,6 +1072,30 @@ void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef(
StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->ToSenseGloveImplRef();
}
bool SGCoreImpl_FSGDeviceImpl_IsABetaDevice(
void* Instance)
{
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->IsABetaDevice();
}
bool SGCoreImpl_FSGDeviceImpl_IsANova2Glove(
void* Instance)
{
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->IsANova2Glove();
}
bool SGCoreImpl_FSGDeviceImpl_IsANovaGlove(
void* Instance)
{
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->IsANovaGlove();
}
bool SGCoreImpl_FSGDeviceImpl_IsASenseGlove(
void* Instance)
{
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->IsASenseGlove();
}
void SGCoreImpl_FSGDeviceImpl_GetDeviceType(
void* Instance,
void* OutType)
@@ -166,6 +166,12 @@ public:
*/
TSharedRef<FSGSenseGloveImpl> ToSenseGloveImplRef();
public:
bool IsABetaDevice() const;
bool IsANova2Glove() const;
bool IsANovaGlove() const;
bool IsASenseGlove() const;
public:
virtual ESGDeviceType GetDeviceType() const;
@@ -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);