From d5f53572dfd7c404fd6161ab1bd453b891906744 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 12 Sep 2024 15:44:53 +0200 Subject: [PATCH] Add support for using C# stdlib api in Visual Scripts #112 --- .../Modules/SourceCodeEditing/CodeEditingModule.cs | 13 +++++++------ Source/Editor/Surface/VisjectSurface.ContextMenu.cs | 10 +++++----- Source/Editor/Surface/VisualScriptSurface.cs | 1 - 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Source/Editor/Modules/SourceCodeEditing/CodeEditingModule.cs b/Source/Editor/Modules/SourceCodeEditing/CodeEditingModule.cs index e298288a4..74af68a42 100644 --- a/Source/Editor/Modules/SourceCodeEditing/CodeEditingModule.cs +++ b/Source/Editor/Modules/SourceCodeEditing/CodeEditingModule.cs @@ -155,6 +155,11 @@ namespace FlaxEditor.Modules.SourceCodeEditing /// public readonly CachedTypesCollection All = new CachedAllTypesCollection(8096, ScriptType.Null, type => true, HasAssemblyValidAnyTypes); + /// + /// The all types collection from all assemblies (including C# system libraries). + /// + public readonly CachedTypesCollection AllWithStd = new CachedTypesCollection(8096, ScriptType.Null, type => true, assembly => true); + /// /// The all valid types collection for the Visual Script property types (includes basic types like int/float, structures, object references). /// @@ -574,21 +579,17 @@ namespace FlaxEditor.Modules.SourceCodeEditing private static bool HasAssemblyValidAnyTypes(Assembly assembly) { var codeBase = Utils.GetAssemblyLocation(assembly); + if (string.IsNullOrEmpty(codeBase)) + return true; #if USE_NETCORE if (assembly.ManifestModule.FullyQualifiedName == "") return false; - if (string.IsNullOrEmpty(codeBase)) - return true; - // Skip runtime related assemblies string repositoryUrl = assembly.GetCustomAttributes().FirstOrDefault(x => x.Key == "RepositoryUrl")?.Value ?? ""; if (repositoryUrl != "https://github.com/dotnet/runtime") return true; #else - if (string.IsNullOrEmpty(codeBase)) - return true; - // Skip assemblies from in-build Mono directory if (!codeBase.Contains("/Mono/lib/mono/")) return true; diff --git a/Source/Editor/Surface/VisjectSurface.ContextMenu.cs b/Source/Editor/Surface/VisjectSurface.ContextMenu.cs index d086aa851..18041f314 100644 --- a/Source/Editor/Surface/VisjectSurface.ContextMenu.cs +++ b/Source/Editor/Surface/VisjectSurface.ContextMenu.cs @@ -140,12 +140,12 @@ namespace FlaxEditor.Surface var searchStartTime = DateTime.Now; #endif - foreach (var scriptType in Editor.Instance.CodeEditing.All.Get()) + foreach (var scriptType in Editor.Instance.CodeEditing.AllWithStd.Get()) { - if (!SurfaceUtils.IsValidVisualScriptType(scriptType)) - continue; - - _iterator(scriptType, _cache, _version); + if (SurfaceUtils.IsValidVisualScriptType(scriptType)) + { + _iterator(scriptType, _cache, _version); + } } // Add group to context menu (on a main thread) diff --git a/Source/Editor/Surface/VisualScriptSurface.cs b/Source/Editor/Surface/VisualScriptSurface.cs index e17453b0a..11ce24c64 100644 --- a/Source/Editor/Surface/VisualScriptSurface.cs +++ b/Source/Editor/Surface/VisualScriptSurface.cs @@ -17,7 +17,6 @@ using FlaxEditor.Surface.Elements; using FlaxEngine; using FlaxEngine.GUI; using FlaxEngine.Utilities; -using Object = FlaxEngine.Object; namespace FlaxEditor.Surface {