From d92f2a0437f7bfa396a05db628d41967ad53e896 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 22 Jul 2026 11:29:07 +0200 Subject: [PATCH] Add `IsScriptingObject` utility to `ScriptType` --- Source/Editor/CustomEditors/CustomEditor.cs | 4 ++-- Source/Editor/Scripting/ScriptType.cs | 5 +++++ Source/Editor/Surface/Elements/InputBox.cs | 2 +- Source/Editor/Surface/SurfaceStyle.cs | 2 +- Source/Editor/Surface/VisjectSurface.Connecting.cs | 2 +- Source/Editor/Utilities/ObjectSnapshot.cs | 6 +++--- Source/Engine/AI/BehaviorTree.cs | 2 +- 7 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Source/Editor/CustomEditors/CustomEditor.cs b/Source/Editor/CustomEditors/CustomEditor.cs index 253fbc590..e18e7029b 100644 --- a/Source/Editor/CustomEditors/CustomEditor.cs +++ b/Source/Editor/CustomEditors/CustomEditor.cs @@ -643,7 +643,7 @@ namespace FlaxEditor.CustomEditors text = text.Remove(idx, endIdx - idx); } } - else if (ScriptType.FlaxObject.IsAssignableFrom(Values.Type)) + else if (Values.Type.IsScriptingObject) { // Object reference text = JsonSerializer.GetStringID(value as FlaxEngine.Object); @@ -691,7 +691,7 @@ namespace FlaxEditor.CustomEditors return false; } } - else if (ScriptType.FlaxObject.IsAssignableFrom(Values.Type)) + else if (Values.Type.IsScriptingObject) { // Object reference if (text.Length != 32) diff --git a/Source/Editor/Scripting/ScriptType.cs b/Source/Editor/Scripting/ScriptType.cs index 0fd57214f..6db13e07a 100644 --- a/Source/Editor/Scripting/ScriptType.cs +++ b/Source/Editor/Scripting/ScriptType.cs @@ -849,6 +849,11 @@ namespace FlaxEditor.Scripting /// public bool IsVoid => _managed == typeof(void); + /// + /// Gets a value indicating whether this type is (eg. script or actor). + /// + public bool IsScriptingObject => FlaxObject.IsAssignableFrom(this); + /// /// Gets a value indicating whether the type is static. /// diff --git a/Source/Editor/Surface/Elements/InputBox.cs b/Source/Editor/Surface/Elements/InputBox.cs index 15548b9d9..73e3f82ba 100644 --- a/Source/Editor/Surface/Elements/InputBox.cs +++ b/Source/Editor/Surface/Elements/InputBox.cs @@ -1544,7 +1544,7 @@ namespace FlaxEditor.Surface.Elements object obj; var type = CurrentType; - if (ScriptType.FlaxObject.IsAssignableFrom(type)) + if (type.IsScriptingObject) { // Object reference if (text.Length != 32) diff --git a/Source/Editor/Surface/SurfaceStyle.cs b/Source/Editor/Surface/SurfaceStyle.cs index 2997e1d21..e6bc82fe3 100644 --- a/Source/Editor/Surface/SurfaceStyle.cs +++ b/Source/Editor/Surface/SurfaceStyle.cs @@ -212,7 +212,7 @@ namespace FlaxEditor.Surface color = Colors.Enum; else if (type.IsValueType) color = Colors.Structures; - else if (ScriptType.FlaxObject.IsAssignableFrom(type) || type.IsInterface) + else if (type.IsScriptingObject || type.IsInterface) color = Colors.Object; else if (hint == ConnectionsHint.Vector) color = Colors.Vector; diff --git a/Source/Editor/Surface/VisjectSurface.Connecting.cs b/Source/Editor/Surface/VisjectSurface.Connecting.cs index 6f60ca2e2..22616f6ad 100644 --- a/Source/Editor/Surface/VisjectSurface.Connecting.cs +++ b/Source/Editor/Surface/VisjectSurface.Connecting.cs @@ -72,7 +72,7 @@ namespace FlaxEditor.Surface // Implicit casting is supported for object reference to test whenever it is valid var toType = to.Type; - if (supportsImplicitCastFromObjectToBoolean && toType == typeof(bool) && ScriptType.FlaxObject.IsAssignableFrom(from)) + if (supportsImplicitCastFromObjectToBoolean && toType == typeof(bool) && from.IsScriptingObject) { return true; } diff --git a/Source/Editor/Utilities/ObjectSnapshot.cs b/Source/Editor/Utilities/ObjectSnapshot.cs index c62a29795..a4b1317ee 100644 --- a/Source/Editor/Utilities/ObjectSnapshot.cs +++ b/Source/Editor/Utilities/ObjectSnapshot.cs @@ -65,7 +65,7 @@ namespace FlaxEditor.Utilities && memberValue != null && !refStack.Contains(memberValue)) { - if (memberType.IsArray && !ScriptType.FlaxObject.IsAssignableFrom(memberType.GetElementType())) + if (memberType.IsArray && !memberType.GetElementType().IsScriptingObject) { // Array var array = (Array)memberValue; @@ -79,7 +79,7 @@ namespace FlaxEditor.Utilities } refStack.Pop(); } - else if (typeof(IList).IsAssignableFrom(memberType.Type) && !ScriptType.FlaxObject.IsAssignableFrom(memberType.GetElementType())) + else if (typeof(IList).IsAssignableFrom(memberType.Type) && !memberType.GetElementType().IsScriptingObject) { // List var list = (IList)memberValue; @@ -106,7 +106,7 @@ namespace FlaxEditor.Utilities GetEntries(new MemberInfoPath.Entry(member.Member, key), membersPath, result, values, refStack, valueType, value); } } - else if (memberType.IsClass && !ScriptType.FlaxObject.IsAssignableFrom(memberType)) + else if (memberType.IsClass && !memberType.IsScriptingObject) { // Object refStack.Push(memberValue); diff --git a/Source/Engine/AI/BehaviorTree.cs b/Source/Engine/AI/BehaviorTree.cs index aebc07343..78ddf2932 100644 --- a/Source/Engine/AI/BehaviorTree.cs +++ b/Source/Engine/AI/BehaviorTree.cs @@ -81,7 +81,7 @@ namespace FlaxEngine !type.IsAbstract && !type.IsArray && !type.IsVoid && - (type.IsStructure || ScriptType.FlaxObject.IsAssignableFrom(type)) && + (type.IsStructure || type.IsScriptingObject) && type.IsPublic && type.CanCreateInstance; }