Fix .NET generic class typename to match old mono style without inlined assembly name and ver

This commit is contained in:
Wojtek Figat
2023-03-27 17:30:48 +02:00
parent 510fc443e8
commit 4755c42d70
62 changed files with 133 additions and 65 deletions

View File

@@ -8,6 +8,7 @@ using System.Reflection;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object;
namespace FlaxEditor.Content

View File

@@ -2,6 +2,7 @@
using System;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Content
{
@@ -42,7 +43,7 @@ namespace FlaxEditor.Content
/// <inheritdoc />
public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
{
var type = Scripting.TypeUtils.GetType(typeName).Type;
var type = TypeUtils.GetType(typeName).Type;
if (typeof(TextureBase).IsAssignableFrom(type))
return new TextureAssetItem(path, ref id, typeName, type);

View File

@@ -8,6 +8,7 @@ using FlaxEditor.Windows;
using FlaxEditor.Windows.Assets;
using FlaxEngine;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
namespace FlaxEditor.Content
{

View File

@@ -7,6 +7,7 @@ using FlaxEditor.CustomEditors.GUI;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Newtonsoft.Json;
using JsonSerializer = FlaxEngine.Json.JsonSerializer;

View File

@@ -6,6 +6,7 @@ using System.Linq;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors
{

View File

@@ -9,6 +9,7 @@ using System.Runtime.InteropServices.Marshalling;
using FlaxEditor.CustomEditors.Editors;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors
{

View File

@@ -12,6 +12,7 @@ using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Dedicated
{

View File

@@ -12,6 +12,7 @@ using FlaxEditor.GUI.Drag;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object;
namespace FlaxEditor.CustomEditors.Dedicated

View File

@@ -4,6 +4,7 @@ using System;
using System.Collections;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -6,6 +6,7 @@ using FlaxEditor.Content;
using FlaxEditor.GUI;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -9,6 +9,7 @@ using FlaxEditor.GUI.ContextMenu;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -12,6 +12,7 @@ using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -5,6 +5,7 @@ using System.Linq;
using FlaxEditor.CustomEditors.Elements;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -10,6 +10,7 @@ using FlaxEditor.SceneGraph;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object;
namespace FlaxEditor.CustomEditors.Editors

View File

@@ -12,6 +12,7 @@ using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -3,6 +3,7 @@
using System.Collections;
using System.Collections.Generic;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{
@@ -20,7 +21,7 @@ namespace FlaxEditor.CustomEditors.Editors
{
var listType = Values.Type;
var list = (IList)listType.CreateInstance();
var defaultValue = Scripting.TypeUtils.GetDefaultValue(ElementType);
var defaultValue = TypeUtils.GetDefaultValue(ElementType);
for (int i = 0; i < size; i++)
list.Add(defaultValue);
return list;
@@ -55,7 +56,7 @@ namespace FlaxEditor.CustomEditors.Editors
else
{
// Initialize new entries with default values
var defaultValue = Scripting.TypeUtils.GetDefaultValue(elementType);
var defaultValue = TypeUtils.GetDefaultValue(elementType);
for (int i = oldSize; i < newSize; i++)
newValues.Add(defaultValue);
}
@@ -63,7 +64,7 @@ namespace FlaxEditor.CustomEditors.Editors
else if (newSize > 0)
{
// Fill new entries with default value
var defaultValue = Scripting.TypeUtils.GetDefaultValue(elementType);
var defaultValue = TypeUtils.GetDefaultValue(elementType);
for (int i = oldSize; i < newSize; i++)
newValues.Add(defaultValue);
}

View File

@@ -3,6 +3,7 @@
using System;
using FlaxEditor.GUI;
using FlaxEditor.Scripting;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -9,6 +9,7 @@ using FlaxEditor.GUI.Drag;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors.Editors
{

View File

@@ -6,6 +6,7 @@ using System.ComponentModel;
using System.Linq;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.CustomEditors
{

View File

@@ -7,6 +7,7 @@ using FlaxEditor.GUI.Drag;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI
{

View File

@@ -8,6 +8,7 @@ using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI
{

View File

@@ -6,6 +6,7 @@ using FlaxEditor.SceneGraph;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Drag
{

View File

@@ -4,6 +4,7 @@ using System;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI
{

View File

@@ -11,6 +11,7 @@ using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI
{

View File

@@ -10,6 +10,7 @@ using FlaxEditor.Scripting;
using FlaxEditor.Utilities;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object;
namespace FlaxEditor.GUI.Timeline.Tracks

View File

@@ -9,6 +9,7 @@ using System.Text;
using FlaxEditor.GUI.Timeline.Undo;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Timeline.Tracks
{
@@ -539,7 +540,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
throw new Exception("Invalid track data.");
var keyframes = new object[keyframesCount];
var propertyType = Scripting.TypeUtils.GetType(e.MemberTypeName).Type;
var propertyType = TypeUtils.GetType(e.MemberTypeName).Type;
if (propertyType == null)
{
stream.ReadBytes(keyframesCount * (sizeof(float) + valueSize * 3));

View File

@@ -10,6 +10,7 @@ using System.Text;
using FlaxEditor.GUI.Timeline.Undo;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Timeline.Tracks
{
@@ -51,7 +52,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
{
e.EventParamsSizes[i] = stream.ReadInt32();
var paramTypeName = LoadName(stream);
e.EventParamsTypes[i] = Scripting.TypeUtils.GetManagedType(paramTypeName);
e.EventParamsTypes[i] = TypeUtils.GetManagedType(paramTypeName);
if (e.EventParamsTypes[i] == null)
isInvalid = true;
}

View File

@@ -9,6 +9,7 @@ using System.Text;
using FlaxEditor.GUI.Timeline.Undo;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Timeline.Tracks
{
@@ -56,7 +57,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
var keyframes = new KeyframesEditor.Keyframe[keyframesCount];
var dataBuffer = new byte[e.ValueSize];
var propertyType = Scripting.TypeUtils.GetManagedType(e.MemberTypeName);
var propertyType = TypeUtils.GetManagedType(e.MemberTypeName);
if (propertyType == null)
{
e.Keyframes.ResetKeyframes();

View File

@@ -4,6 +4,7 @@ using System;
using System.IO;
using System.Text;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Timeline.Tracks
{
@@ -48,7 +49,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
if (stream.ReadChar() != 0)
throw new Exception("Invalid track data.");
var propertyType = Scripting.TypeUtils.GetType(e.MemberTypeName);
var propertyType = TypeUtils.GetType(e.MemberTypeName);
if (!propertyType)
{
if (!string.IsNullOrEmpty(e.MemberTypeName))

View File

@@ -4,6 +4,7 @@ using System;
using System.IO;
using System.Reflection;
using System.Text;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Timeline.Tracks
{
@@ -51,7 +52,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
throw new Exception("Invalid track data.");
var keyframes = new KeyframesEditor.Keyframe[keyframesCount];
var propertyType = Scripting.TypeUtils.GetType(e.MemberTypeName);
var propertyType = TypeUtils.GetType(e.MemberTypeName);
if (!propertyType)
{
e.Keyframes.ResetKeyframes();

View File

@@ -3,6 +3,7 @@
using System;
using System.IO;
using System.Text;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Timeline.Tracks
{
@@ -50,7 +51,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
throw new Exception("Invalid track data.");
var keyframes = new KeyframesEditor.Keyframe[keyframesCount];
var propertyType = Scripting.TypeUtils.GetType(e.MemberTypeName);
var propertyType = TypeUtils.GetType(e.MemberTypeName);
if (!propertyType)
{
e.Keyframes.ResetKeyframes();

View File

@@ -5,6 +5,7 @@ using System.IO;
using System.Reflection;
using System.Text;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.GUI.Timeline.Tracks
{
@@ -49,7 +50,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks
if (stream.ReadChar() != 0)
throw new Exception("Invalid track data.");
var propertyType = Scripting.TypeUtils.GetType(e.MemberTypeName);
var propertyType = TypeUtils.GetType(e.MemberTypeName);
if (!propertyType)
{
if (!string.IsNullOrEmpty(e.MemberTypeName))

View File

@@ -8,6 +8,7 @@ using FlaxEditor.Content;
using FlaxEditor.Content.Settings;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Modules
{

View File

@@ -6,6 +6,7 @@ using System.Reflection;
using FlaxEditor.Scripting;
using FlaxEditor.Surface;
using FlaxEngine;
using FlaxEngine.Utilities;
using MethodInfo = System.Reflection.MethodInfo;
namespace FlaxEditor.Modules.SourceCodeEditing
@@ -106,7 +107,7 @@ namespace FlaxEditor.Modules.SourceCodeEditing
// Validate node type
var typeName = Surface.Archetypes.Custom.GetNodeTypeName(arch);
var type = Scripting.TypeUtils.GetType(typeName).Type;
var type = TypeUtils.GetType(typeName).Type;
if (type == null)
{
Debug.LogWarning(string.Format("Method {0} from {1} returned invalid node archetype. Failed to find node logic defined in type {2}.", method, method.DeclaringType, typeName));

View File

@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Reflection;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Modules.SourceCodeEditing
{

View File

@@ -8,6 +8,7 @@ using FlaxEditor.Options;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.Modules.SourceCodeEditing
{

View File

@@ -13,6 +13,7 @@ using FlaxEditor.Windows;
using FlaxEditor.Windows.Assets;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object;
namespace FlaxEditor.SceneGraph.GUI

View File

@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.Reflection;
using FlaxEditor.Content;
using FlaxEngine.Utilities;
namespace FlaxEditor.Scripting
{

View File

@@ -8,6 +8,7 @@ using System.Runtime.CompilerServices;
using System.Text;
using FlaxEditor.Content;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Scripting
{

View File

@@ -5,14 +5,12 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using FlaxEngine;
using FlaxEditor;
using FlaxEditor.Scripting;
namespace FlaxEditor.Scripting
namespace FlaxEngine.Utilities
{
/// <summary>
/// Editor scripting utilities and helper functions.
/// </summary>
public static class TypeUtils
partial class TypeUtils
{
/// <summary>
/// Custom list of scripting types containers. Can be used by custom scripting languages to provide types info for the editor.
@@ -35,34 +33,6 @@ namespace FlaxEditor.Scripting
return o != null ? new ScriptType(o.GetType()) : ScriptType.Null;
}
/// <summary>
/// Gets the typename full name.
/// </summary>
/// <param name="type">The type.</param>
/// <returns>The full typename of the type.</returns>
public static string GetTypeName(this Type type)
{
if (type.IsGenericType)
{
// For generic types (eg. Dictionary) FullName returns generic parameter types with fully qualified name so simplify it manually
var sb = new StringBuilder();
sb.Append(type.Namespace);
sb.Append('.');
sb.Append(type.Name);
sb.Append('[');
var genericArgs = type.GetGenericArguments();
for (var i = 0; i < genericArgs.Length; i++)
{
if (i != 0)
sb.Append(',');
sb.Append(genericArgs[i].GetTypeName());
}
sb.Append(']');
return sb.ToString();
}
return type.FullName;
}
/// <summary>
/// Gets the typename name for UI.
/// </summary>
@@ -131,7 +101,7 @@ namespace FlaxEditor.Scripting
if (type.IsValueType)
{
var value = type.CreateInstance();
Utilities.Utils.InitDefaultValues(value);
FlaxEditor.Utilities.Utils.InitDefaultValues(value);
return value;
}
if (ScriptType.Object.IsAssignableFrom(type))
@@ -139,7 +109,7 @@ namespace FlaxEditor.Scripting
if (type.CanCreateInstance)
{
var value = type.CreateInstance();
Utilities.Utils.InitDefaultValues(value);
FlaxEditor.Utilities.Utils.InitDefaultValues(value);
return value;
}
return null;
@@ -366,7 +336,7 @@ namespace FlaxEditor.Scripting
}
}
if (!Content.Settings.GameSettings.OptionalPlatformSettings.Contains(typeName))
if (!FlaxEditor.Content.Settings.GameSettings.OptionalPlatformSettings.Contains(typeName))
Editor.LogWarning($"Failed to find type '{typeName}'.");
return ScriptType.Null;
}

View File

@@ -14,6 +14,7 @@ using FlaxEditor.Scripting;
using FlaxEditor.Surface.Elements;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.Archetypes
{

View File

@@ -12,6 +12,7 @@ using FlaxEditor.GUI;
using FlaxEditor.Scripting;
using FlaxEditor.Surface.Elements;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.Archetypes
{

View File

@@ -10,6 +10,7 @@ using FlaxEditor.Scripting;
using FlaxEditor.Surface.Elements;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.Archetypes
{

View File

@@ -8,6 +8,7 @@ using FlaxEditor.GUI.Input;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.ContextMenu
{

View File

@@ -3,6 +3,7 @@
using System;
using FlaxEditor.CustomEditors.Editors;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.Elements
{
@@ -30,7 +31,7 @@ namespace FlaxEditor.Surface.Elements
ParentNode = parentNode;
Archetype = archetype;
Bounds = new Rectangle(Archetype.ActualPosition, archetype.Size);
Type = Scripting.TypeUtils.GetType(archetype.Text);
Type = TypeUtils.GetType(archetype.Text);
ParentNode.ValuesChanged += OnNodeValuesChanged;
OnNodeValuesChanged();

View File

@@ -3,6 +3,7 @@
using System;
using FlaxEditor.GUI;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.Elements
{
@@ -26,7 +27,7 @@ namespace FlaxEditor.Surface.Elements
/// <param name="parentNode">The parent node.</param>
/// <param name="archetype">The archetype.</param>
public AssetSelect(SurfaceNode parentNode, NodeElementArchetype archetype)
: base(Scripting.TypeUtils.GetType(archetype.Text), archetype.ActualPosition)
: base(TypeUtils.GetType(archetype.Text), archetype.ActualPosition)
{
ParentNode = parentNode;
Archetype = archetype;

View File

@@ -2,6 +2,7 @@
using System;
using FlaxEditor.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.Elements
{
@@ -26,7 +27,7 @@ namespace FlaxEditor.Surface.Elements
/// <inheritdoc />
public EnumValue(SurfaceNode parentNode, NodeElementArchetype archetype)
: base(Scripting.TypeUtils.GetType(archetype.Text).Type)
: base(TypeUtils.GetType(archetype.Text).Type)
{
X = archetype.ActualPositionX;
Y = archetype.ActualPositionY;

View File

@@ -17,6 +17,7 @@ using FlaxEditor.GUI.Input;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Newtonsoft.Json;
using JsonSerializer = FlaxEngine.Json.JsonSerializer;

View File

@@ -3,6 +3,7 @@
using System;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface
{

View File

@@ -3,6 +3,7 @@
using System;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface
{

View File

@@ -6,6 +6,7 @@ using FlaxEditor.Scripting;
using FlaxEditor.Surface.Elements;
using FlaxEditor.Surface.Undo;
using FlaxEngine;
using FlaxEngine.Utilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

View File

@@ -21,6 +21,7 @@ using FlaxEditor.Surface.ContextMenu;
using FlaxEditor.Surface.Elements;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object;
namespace FlaxEditor.Surface

View File

@@ -3,6 +3,7 @@
using System;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object;
namespace FlaxEditor.Actions

View File

@@ -5,6 +5,7 @@ using System.Collections.Generic;
using FlaxEditor.SceneGraph;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Actions
{

View File

@@ -10,6 +10,7 @@ using System.Reflection;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
namespace FlaxEditor.Utilities
{

View File

@@ -20,6 +20,7 @@ using FlaxEditor.SceneGraph;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEngine
{

View File

@@ -11,6 +11,7 @@ using FlaxEditor.GUI.ContextMenu;
using FlaxEditor.Scripting;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.Windows.Assets
{

View File

@@ -16,6 +16,7 @@ using FlaxEditor.Surface;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Json;
using FlaxEngine.Utilities;
using FlaxEngine.Windows.Search;
#pragma warning disable 649

View File

@@ -17,6 +17,7 @@ using FlaxEditor.Surface;
using FlaxEditor.Windows;
using FlaxEditor.Windows.Assets;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEngine.Windows.Search
{

View File

@@ -12,6 +12,7 @@ using FlaxEditor.Surface;
using FlaxEditor.Windows.Assets;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
namespace FlaxEditor.Windows
{

View File

@@ -1988,17 +1988,11 @@ namespace FlaxEngine
{
var type = assemblyTypes[i];
IntPtr ptr = IntPtr.Add(new IntPtr(arr), Unsafe.SizeOf<NativeClassDefinitions>() * i);
bool isStatic = type.IsAbstract && type.IsSealed;
bool isInterface = type.IsInterface;
bool isAbstract = type.IsAbstract;
ManagedHandle typeHandle = GetTypeGCHandle(type);
NativeClassDefinitions managedClass = new NativeClassDefinitions()
var managedClass = new NativeClassDefinitions
{
typeHandle = typeHandle,
typeHandle = GetTypeGCHandle(type),
name = NativeAllocStringAnsi(type.Name),
fullname = NativeAllocStringAnsi(type.FullName),
fullname = NativeAllocStringAnsi(type.GetTypeName()),
@namespace = NativeAllocStringAnsi(type.Namespace ?? ""),
typeAttributes = (uint)type.Attributes,
};
@@ -2013,12 +2007,11 @@ namespace FlaxEngine
internal static unsafe void GetManagedClassFromType(ManagedHandle typeHandle, NativeClassDefinitions* managedClass, ManagedHandle* assemblyHandle)
{
Type type = Unsafe.As<Type>(typeHandle.Target);
ManagedHandle classTypeHandle = GetTypeGCHandle(type);
*managedClass = new NativeClassDefinitions()
*managedClass = new NativeClassDefinitions
{
typeHandle = classTypeHandle,
typeHandle = GetTypeGCHandle(type),
name = NativeAllocStringAnsi(type.Name),
fullname = NativeAllocStringAnsi(type.FullName),
fullname = NativeAllocStringAnsi(type.GetTypeName()),
@namespace = NativeAllocStringAnsi(type.Namespace ?? ""),
typeAttributes = (uint)type.Attributes,
};

View File

@@ -0,0 +1,46 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System;
using System.Text;
namespace FlaxEngine.Utilities
{
/// <summary>
/// Editor utilities and helper functions for System.Type.
/// </summary>
public static partial class TypeUtils
{
/// <summary>
/// Gets the typename full name.
/// </summary>
/// <param name="type">The type.</param>
/// <returns>The full typename of the type.</returns>
public static string GetTypeName(this Type type)
{
if (type.IsGenericType && type.IsConstructedGenericType)
{
// For generic types (eg. Dictionary) FullName returns generic parameter types with fully qualified name so simplify it manually
var sb = new StringBuilder();
sb.Append(type.Namespace);
sb.Append('.');
sb.Append(type.Name);
sb.Append('[');
var genericArgs = type.GetGenericArguments();
for (var i = 0; i < genericArgs.Length; i++)
{
if (i != 0)
sb.Append(',');
sb.Append(genericArgs[i].GetTypeName());
}
sb.Append(']');
var sss = sb.ToString();
if (sss != type.FullName)
{
Debug.LogError($"Different type name: {type.FullName} vs {sss}");
}
return sb.ToString();
}
return type.FullName;
}
}
}