try an alternative approach for glove instances upcasting at the lower levels of the api
This commit is contained in:
@@ -309,6 +309,30 @@ TSharedRef<FSGDeviceImpl> USGDevice::ToSGDeviceImpl() const
|
|||||||
return Pimpl->SGDeviceImpl.ToSharedRef();
|
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
|
ESGDeviceType USGDevice::GetDeviceType() const
|
||||||
{
|
{
|
||||||
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
|
||||||
|
|||||||
@@ -205,13 +205,6 @@ TSharedRef<FSGHapticGloveImpl> USGHapticGlove::ToHapticGloveImpl() const
|
|||||||
return FSGDeviceImplCast::ToHapticGloveImpl(ToSGDeviceImpl());
|
return FSGDeviceImplCast::ToHapticGloveImpl(ToSGDeviceImpl());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool USGHapticGlove::IsANova2Glove() const
|
|
||||||
{
|
|
||||||
const TSharedPtr<FSGNova2GloveImpl> Nova2Glove =
|
|
||||||
StaticCastSharedPtr<FSGNova2GloveImpl>(ToHapticGloveImpl().ToSharedPtr());
|
|
||||||
return Nova2Glove.IsValid();
|
|
||||||
}
|
|
||||||
|
|
||||||
USGNova2Glove* USGHapticGlove::AsNova2Glove(UObject* Outer) const
|
USGNova2Glove* USGHapticGlove::AsNova2Glove(UObject* Outer) const
|
||||||
{
|
{
|
||||||
USGNova2Glove* Instance = NewObject<USGNova2Glove>(Outer);
|
USGNova2Glove* Instance = NewObject<USGNova2Glove>(Outer);
|
||||||
@@ -219,13 +212,6 @@ USGNova2Glove* USGHapticGlove::AsNova2Glove(UObject* Outer) const
|
|||||||
return Instance;
|
return Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool USGHapticGlove::IsANovaGlove() const
|
|
||||||
{
|
|
||||||
const TSharedPtr<FSGNovaGloveImpl> NovaGlove =
|
|
||||||
StaticCastSharedPtr<FSGNovaGloveImpl>(ToHapticGloveImpl().ToSharedPtr());
|
|
||||||
return NovaGlove.IsValid();
|
|
||||||
}
|
|
||||||
|
|
||||||
USGNovaGlove* USGHapticGlove::AsNovaGlove(UObject* Outer) const
|
USGNovaGlove* USGHapticGlove::AsNovaGlove(UObject* Outer) const
|
||||||
{
|
{
|
||||||
USGNovaGlove* Instance = NewObject<USGNovaGlove>(Outer);
|
USGNovaGlove* Instance = NewObject<USGNovaGlove>(Outer);
|
||||||
@@ -233,13 +219,6 @@ USGNovaGlove* USGHapticGlove::AsNovaGlove(UObject* Outer) const
|
|||||||
return Instance;
|
return Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool USGHapticGlove::IsASenseGlove() const
|
|
||||||
{
|
|
||||||
const TSharedPtr<FSGSenseGloveImpl> SenseGlove =
|
|
||||||
StaticCastSharedPtr<FSGSenseGloveImpl>(ToHapticGloveImpl().ToSharedPtr());
|
|
||||||
return SenseGlove.IsValid();
|
|
||||||
}
|
|
||||||
|
|
||||||
USGSenseGlove* USGHapticGlove::AsSenseGlove(UObject* Outer) const
|
USGSenseGlove* USGHapticGlove::AsSenseGlove(UObject* Outer) const
|
||||||
{
|
{
|
||||||
USGSenseGlove* Instance = NewObject<USGSenseGlove>(Outer);
|
USGSenseGlove* Instance = NewObject<USGSenseGlove>(Outer);
|
||||||
|
|||||||
@@ -252,6 +252,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
TSharedRef<FSGDeviceImpl> ToSGDeviceImpl() const;
|
TSharedRef<FSGDeviceImpl> ToSGDeviceImpl() const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool IsABetaDevice() const;
|
||||||
|
bool IsANova2Glove() const;
|
||||||
|
bool IsANovaGlove() const;
|
||||||
|
bool IsASenseGlove() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Check which DeviceType this class belongs to.
|
* Check which DeviceType this class belongs to.
|
||||||
|
|||||||
@@ -190,13 +190,10 @@ public:
|
|||||||
TSharedRef<FSGHapticGloveImpl> ToHapticGloveImpl() const;
|
TSharedRef<FSGHapticGloveImpl> ToHapticGloveImpl() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool IsANova2Glove() const;
|
|
||||||
USGNova2Glove* AsNova2Glove(UObject* Outer) const;
|
USGNova2Glove* AsNova2Glove(UObject* Outer) const;
|
||||||
|
|
||||||
bool IsANovaGlove() const;
|
|
||||||
USGNovaGlove* AsNovaGlove(UObject* Outer) const;
|
USGNovaGlove* AsNovaGlove(UObject* Outer) const;
|
||||||
|
|
||||||
bool IsASenseGlove() const;
|
|
||||||
USGSenseGlove* AsSenseGlove(UObject* Outer) const;
|
USGSenseGlove* AsSenseGlove(UObject* Outer) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -184,6 +184,38 @@ TSharedRef<FSGSenseGloveImpl> FSGDeviceImpl::ToSenseGloveImplRef()
|
|||||||
return SharedThis(SenseGlove);
|
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
|
ESGDeviceType FSGDeviceImpl::GetDeviceType() const
|
||||||
{
|
{
|
||||||
return FSGCoreEnumCast::ToESGDeviceType(ToSGDevicePtrChecked()->GetDeviceType());
|
return FSGCoreEnumCast::ToESGDeviceType(ToSGDevicePtrChecked()->GetDeviceType());
|
||||||
|
|||||||
@@ -1072,6 +1072,30 @@ void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef(
|
|||||||
StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->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 SGCoreImpl_FSGDeviceImpl_GetDeviceType(
|
||||||
void* Instance,
|
void* Instance,
|
||||||
void* OutType)
|
void* OutType)
|
||||||
|
|||||||
@@ -166,6 +166,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
TSharedRef<FSGSenseGloveImpl> ToSenseGloveImplRef();
|
TSharedRef<FSGSenseGloveImpl> ToSenseGloveImplRef();
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool IsABetaDevice() const;
|
||||||
|
bool IsANova2Glove() const;
|
||||||
|
bool IsANovaGlove() const;
|
||||||
|
bool IsASenseGlove() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ESGDeviceType GetDeviceType() const;
|
virtual ESGDeviceType GetDeviceType() const;
|
||||||
|
|
||||||
|
|||||||
@@ -553,6 +553,18 @@ SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef(
|
|||||||
void* Instance,
|
void* Instance,
|
||||||
void* OutSharedPtr);
|
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(
|
SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetDeviceType(
|
||||||
void* Instance,
|
void* Instance,
|
||||||
void* OutType);
|
void* OutType);
|
||||||
|
|||||||
Reference in New Issue
Block a user