template<typename T>
const T* UnwrapImplicit(const FImplicitObject& Implicit, FVec3& OutScale, FReal &OutMargin)
{
OutScale = FVec3(1);
OutMargin = FReal(0);
if (const TImplicitObjectScaled<T>* ScaledImplicit = GetObject<TImplicitObjectScaled<T>>())
{
OutScale = ScaledImplicit->GetScale();
OutMargin = ScaledImplicit->GetMargin();
return ScaledImplicit->GetUnscaledObject();
}
else if (const TImplicitObjectInstanced<T>* InstancedImplicit = GetObject<TImplicitObjectInstanced<T>>())
{
OutMargin = InstancedImplicit->GetMargin();
return InstancedImplicit->GetInstancedObject();
}
else if (const T* RawImplicit = GetObject<T>())
{
OutMargin = RawImplicit->GetMargin();
return RawImplicit;
}
else
{
return nullptr;
}
}
Try that inside ImplicitObjectScaled.h and let me know if that helps