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 FlaxEditor.Scripting;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.Json; using FlaxEngine.Json;
using FlaxEngine.Utilities;
using Object = FlaxEngine.Object; using Object = FlaxEngine.Object;
namespace FlaxEditor.Content namespace FlaxEditor.Content

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,6 +6,7 @@ using System.Reflection;
using FlaxEditor.Scripting; using FlaxEditor.Scripting;
using FlaxEditor.Surface; using FlaxEditor.Surface;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.Utilities;
using MethodInfo = System.Reflection.MethodInfo; using MethodInfo = System.Reflection.MethodInfo;
namespace FlaxEditor.Modules.SourceCodeEditing namespace FlaxEditor.Modules.SourceCodeEditing
@@ -106,7 +107,7 @@ namespace FlaxEditor.Modules.SourceCodeEditing
// Validate node type // Validate node type
var typeName = Surface.Archetypes.Custom.GetNodeTypeName(arch); var typeName = Surface.Archetypes.Custom.GetNodeTypeName(arch);
var type = Scripting.TypeUtils.GetType(typeName).Type; var type = TypeUtils.GetType(typeName).Type;
if (type == null) 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)); 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 System.Reflection;
using FlaxEditor.Scripting; using FlaxEditor.Scripting;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Modules.SourceCodeEditing namespace FlaxEditor.Modules.SourceCodeEditing
{ {

View File

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

View File

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

View File

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

View File

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

View File

@@ -5,14 +5,12 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using FlaxEngine; using FlaxEditor;
using FlaxEditor.Scripting;
namespace FlaxEditor.Scripting namespace FlaxEngine.Utilities
{ {
/// <summary> partial class TypeUtils
/// Editor scripting utilities and helper functions.
/// </summary>
public static class TypeUtils
{ {
/// <summary> /// <summary>
/// Custom list of scripting types containers. Can be used by custom scripting languages to provide types info for the editor. /// 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; 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> /// <summary>
/// Gets the typename name for UI. /// Gets the typename name for UI.
/// </summary> /// </summary>
@@ -131,7 +101,7 @@ namespace FlaxEditor.Scripting
if (type.IsValueType) if (type.IsValueType)
{ {
var value = type.CreateInstance(); var value = type.CreateInstance();
Utilities.Utils.InitDefaultValues(value); FlaxEditor.Utilities.Utils.InitDefaultValues(value);
return value; return value;
} }
if (ScriptType.Object.IsAssignableFrom(type)) if (ScriptType.Object.IsAssignableFrom(type))
@@ -139,7 +109,7 @@ namespace FlaxEditor.Scripting
if (type.CanCreateInstance) if (type.CanCreateInstance)
{ {
var value = type.CreateInstance(); var value = type.CreateInstance();
Utilities.Utils.InitDefaultValues(value); FlaxEditor.Utilities.Utils.InitDefaultValues(value);
return value; return value;
} }
return null; 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}'."); Editor.LogWarning($"Failed to find type '{typeName}'.");
return ScriptType.Null; return ScriptType.Null;
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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