This commit is contained in:
Wojtek Figat
2023-11-29 18:46:18 +01:00
parent eb508fdc73
commit cebd28c3a7
2 changed files with 18 additions and 5 deletions

View File

@@ -1112,9 +1112,11 @@ namespace FlaxEngine.Interop
internal static void ToManagedPointer(ref IntPtr managedValue, IntPtr nativePtr, bool byRef)
{
if (byRef)
nativePtr = Unsafe.Read<IntPtr>(nativePtr.ToPointer());
managedValue = nativePtr;
Type type = typeof(T);
byRef |= type.IsByRef; // Is this needed?
if (type.IsByRef)
Assert.IsTrue(type.GetElementType().IsValueType);
managedValue = byRef ? nativePtr : Unsafe.Read<IntPtr>(nativePtr.ToPointer());
}
internal static void ToManagedHandle(ref ManagedHandle managedValue, IntPtr nativePtr, bool byRef)

View File

@@ -1209,9 +1209,20 @@ void* MUtils::VariantToManagedArgPtr(Variant& value, MType* type, bool& failed)
return object;
}
case MTypes::Ptr:
if (value.Type.Type == VariantType::Null)
switch (value.Type.Type)
{
case VariantType::Pointer:
return &value.AsPointer;
case VariantType::Object:
return &value.AsObject;
case VariantType::Asset:
return &value.AsAsset;
case VariantType::Structure:
case VariantType::Blob:
return &value.AsBlob.Data;
default:
return nullptr;
return (void*)value;
}
default:
break;
}