Merge branch 'dotnet7' of https://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-dotnet7
This commit is contained in:
@@ -566,6 +566,8 @@ namespace FlaxEditor.Content.Import
|
|||||||
}
|
}
|
||||||
internal static void Free(InternalOptionsNative unmanaged)
|
internal static void Free(InternalOptionsNative unmanaged)
|
||||||
{
|
{
|
||||||
|
ManagedString.Free(unmanaged.CollisionMeshesPrefix);
|
||||||
|
ManagedString.Free(unmanaged.RootNodeName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -368,8 +368,8 @@ namespace FlaxEditor.Content.Import
|
|||||||
MaxSize = managed.MaxSize,
|
MaxSize = managed.MaxSize,
|
||||||
TextureGroup = managed.TextureGroup,
|
TextureGroup = managed.TextureGroup,
|
||||||
Size = managed.Size,
|
Size = managed.Size,
|
||||||
SpriteAreas = managed.SpriteAreas != IntPtr.Zero ? NativeInterop.GCHandleArrayToManagedArray<Rectangle>((ManagedArray)GCHandle.FromIntPtr(managed.SpriteAreas).Target) : null,
|
SpriteAreas = managed.SpriteAreas != IntPtr.Zero ? ((ManagedArray)ManagedHandle.FromIntPtr(managed.SpriteAreas).Target).GetArray<Rectangle>() : null,
|
||||||
SpriteNames = managed.SpriteNames != IntPtr.Zero ? NativeInterop.GCHandleArrayToManagedArray<string>((ManagedArray)GCHandle.FromIntPtr(managed.SpriteNames).Target) : null,
|
SpriteNames = managed.SpriteNames != IntPtr.Zero ? NativeInterop.GCHandleArrayToManagedArray<string>((ManagedArray)ManagedHandle.FromIntPtr(managed.SpriteNames).Target) : null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
internal static InternalOptionsNative ToNative(InternalOptions managed)
|
internal static InternalOptionsNative ToNative(InternalOptions managed)
|
||||||
|
|||||||
@@ -1288,6 +1288,8 @@ namespace FlaxEditor
|
|||||||
}
|
}
|
||||||
internal static void Free(VisualScriptLocalNative unmanaged)
|
internal static void Free(VisualScriptLocalNative unmanaged)
|
||||||
{
|
{
|
||||||
|
ManagedString.Free(unmanaged.Value);
|
||||||
|
ManagedString.Free(unmanaged.ValueTypeName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -331,6 +331,17 @@ namespace FlaxEngine
|
|||||||
|
|
||||||
[System.Diagnostics.DebuggerStepThrough]
|
[System.Diagnostics.DebuggerStepThrough]
|
||||||
internal static unsafe IntPtr ToNative(string str)
|
internal static unsafe IntPtr ToNative(string str)
|
||||||
|
{
|
||||||
|
if (str == null)
|
||||||
|
return IntPtr.Zero;
|
||||||
|
else if (str == string.Empty)
|
||||||
|
return ManagedHandle.ToIntPtr(EmptyStringHandle);
|
||||||
|
Assert.IsTrue(str.Length > 0);
|
||||||
|
return ManagedHandle.ToIntPtr(ManagedHandle.Alloc(str));
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerStepThrough]
|
||||||
|
internal static unsafe IntPtr ToNativeWeak(string str)
|
||||||
{
|
{
|
||||||
if (str == null)
|
if (str == null)
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
@@ -969,7 +980,7 @@ namespace FlaxEngine
|
|||||||
{
|
{
|
||||||
if (managed == null)
|
if (managed == null)
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
return ManagedHandle.ToIntPtr(ManagedHandle.Alloc(managed, GCHandleType.Weak));
|
return ManagedHandle.ToIntPtr(ManagedHandle.Alloc(managed));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Free(IntPtr unmanaged) => ManagedString.Free(unmanaged);
|
public static void Free(IntPtr unmanaged) => ManagedString.Free(unmanaged);
|
||||||
@@ -1114,7 +1125,7 @@ namespace FlaxEngine
|
|||||||
NativeMemory.AlignedFree(ptr);
|
NativeMemory.AlignedFree(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static T[] GCHandleArrayToManagedArray<T>(ManagedArray ptrArray)
|
internal static T[] GCHandleArrayToManagedArray<T>(ManagedArray ptrArray) where T : class
|
||||||
{
|
{
|
||||||
Span<IntPtr> span = ptrArray.GetSpan<IntPtr>();
|
Span<IntPtr> span = ptrArray.GetSpan<IntPtr>();
|
||||||
T[] managedArray = new T[ptrArray.Length];
|
T[] managedArray = new T[ptrArray.Length];
|
||||||
@@ -1718,7 +1729,7 @@ namespace FlaxEngine
|
|||||||
|
|
||||||
IntPtr managedPtr;
|
IntPtr managedPtr;
|
||||||
if (type == typeof(string))
|
if (type == typeof(string))
|
||||||
managedPtr = ManagedString.ToNative(managedValue as string);
|
managedPtr = ManagedString.ToNativeWeak(managedValue as string);
|
||||||
else if (type.IsPointer)
|
else if (type.IsPointer)
|
||||||
{
|
{
|
||||||
if (Pointer.Unbox(managedValue) == null)
|
if (Pointer.Unbox(managedValue) == null)
|
||||||
@@ -2242,19 +2253,19 @@ namespace FlaxEngine
|
|||||||
[UnmanagedCallersOnly]
|
[UnmanagedCallersOnly]
|
||||||
internal static IntPtr NewStringUTF16(char* text, int length)
|
internal static IntPtr NewStringUTF16(char* text, int length)
|
||||||
{
|
{
|
||||||
return ManagedString.ToNative(new string(new ReadOnlySpan<char>(text, length)));
|
return ManagedString.ToNativeWeak(new string(new ReadOnlySpan<char>(text, length)));
|
||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly]
|
[UnmanagedCallersOnly]
|
||||||
internal static IntPtr NewString(sbyte* text)
|
internal static IntPtr NewString(sbyte* text)
|
||||||
{
|
{
|
||||||
return ManagedString.ToNative(new string(text));
|
return ManagedString.ToNativeWeak(new string(text));
|
||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly]
|
[UnmanagedCallersOnly]
|
||||||
internal static IntPtr NewStringLength(sbyte* text, int length)
|
internal static IntPtr NewStringLength(sbyte* text, int length)
|
||||||
{
|
{
|
||||||
return ManagedString.ToNative(new string(text, 0, length));
|
return ManagedString.ToNativeWeak(new string(text, 0, length));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace FlaxEngine
|
|||||||
if (returnValue == null)
|
if (returnValue == null)
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
if (typeof(TRet) == typeof(string))
|
if (typeof(TRet) == typeof(string))
|
||||||
return ManagedString.ToNative(Unsafe.As<string>(returnValue));
|
return ManagedString.ToNativeWeak(Unsafe.As<string>(returnValue));
|
||||||
if (typeof(TRet) == typeof(IntPtr))
|
if (typeof(TRet) == typeof(IntPtr))
|
||||||
return (IntPtr)(object)returnValue;
|
return (IntPtr)(object)returnValue;
|
||||||
if (typeof(TRet) == typeof(ManagedHandle))
|
if (typeof(TRet) == typeof(ManagedHandle))
|
||||||
@@ -102,7 +102,7 @@ namespace FlaxEngine
|
|||||||
if (returnObject == null)
|
if (returnObject == null)
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
if (returnType == typeof(string))
|
if (returnType == typeof(string))
|
||||||
return ManagedString.ToNative(Unsafe.As<string>(returnObject));
|
return ManagedString.ToNativeWeak(Unsafe.As<string>(returnObject));
|
||||||
if (returnType == typeof(IntPtr))
|
if (returnType == typeof(IntPtr))
|
||||||
return (IntPtr)returnObject;
|
return (IntPtr)returnObject;
|
||||||
if (returnType == typeof(ManagedHandle))
|
if (returnType == typeof(ManagedHandle))
|
||||||
@@ -123,7 +123,7 @@ namespace FlaxEngine
|
|||||||
if (returnValue == null)
|
if (returnValue == null)
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
if (typeof(TRet) == typeof(string))
|
if (typeof(TRet) == typeof(string))
|
||||||
return ManagedString.ToNative(Unsafe.As<string>(returnValue));
|
return ManagedString.ToNativeWeak(Unsafe.As<string>(returnValue));
|
||||||
if (typeof(TRet) == typeof(IntPtr))
|
if (typeof(TRet) == typeof(IntPtr))
|
||||||
return (IntPtr)(object)returnValue;
|
return (IntPtr)(object)returnValue;
|
||||||
if (typeof(TRet) == typeof(ManagedHandle))
|
if (typeof(TRet) == typeof(ManagedHandle))
|
||||||
@@ -160,7 +160,7 @@ namespace FlaxEngine
|
|||||||
if (returnObject == null)
|
if (returnObject == null)
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
if (returnType == typeof(string))
|
if (returnType == typeof(string))
|
||||||
return ManagedString.ToNative(Unsafe.As<string>(returnObject));
|
return ManagedString.ToNativeWeak(Unsafe.As<string>(returnObject));
|
||||||
if (returnType == typeof(IntPtr))
|
if (returnType == typeof(IntPtr))
|
||||||
return (IntPtr)(object)returnObject;
|
return (IntPtr)(object)returnObject;
|
||||||
if (returnType == typeof(ManagedHandle))
|
if (returnType == typeof(ManagedHandle))
|
||||||
|
|||||||
@@ -1944,7 +1944,6 @@ namespace Flax.Build.Bindings
|
|||||||
contents.AppendLine("#pragma warning disable 1591");
|
contents.AppendLine("#pragma warning disable 1591");
|
||||||
contents.Append(indent).Append(" ").AppendLine($"internal static {interfaceInfo.Name} ConvertToManaged(IntPtr unmanaged) => ({interfaceInfo.Name})ManagedHandleMarshaller.ConvertToManaged(unmanaged);");
|
contents.Append(indent).Append(" ").AppendLine($"internal static {interfaceInfo.Name} ConvertToManaged(IntPtr unmanaged) => ({interfaceInfo.Name})ManagedHandleMarshaller.ConvertToManaged(unmanaged);");
|
||||||
contents.Append(indent).Append(" ").AppendLine($"internal static IntPtr ConvertToUnmanaged({interfaceInfo.Name} managed) => ManagedHandleMarshaller.ConvertToUnmanaged(managed);");
|
contents.Append(indent).Append(" ").AppendLine($"internal static IntPtr ConvertToUnmanaged({interfaceInfo.Name} managed) => ManagedHandleMarshaller.ConvertToUnmanaged(managed);");
|
||||||
contents.Append(indent).Append(" ").AppendLine("internal static void Free(IntPtr unmanaged) => ManagedHandleMarshaller.Free(unmanaged);");
|
|
||||||
contents.AppendLine("#pragma warning restore 1591");
|
contents.AppendLine("#pragma warning restore 1591");
|
||||||
contents.Append(indent).AppendLine("}");
|
contents.Append(indent).AppendLine("}");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user