From 777f52ab4918506d6d96d74e20f5864b0dad20dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sun, 31 Mar 2024 12:36:22 +0200 Subject: [PATCH] ScriptEngine refactoring --- GlitchyEngine/src/Scripting/ScriptClass.bf | 32 ++++--------------- GlitchyEngine/src/Scripting/ScriptEngine.bf | 7 ++-- .../src/Scripting/ScriptFieldType.bf | 16 ---------- ScriptCore/Editor/EntityEditor.cs | 6 ++-- 4 files changed, 13 insertions(+), 48 deletions(-) delete mode 100644 GlitchyEngine/src/Scripting/ScriptFieldType.bf diff --git a/GlitchyEngine/src/Scripting/ScriptClass.bf b/GlitchyEngine/src/Scripting/ScriptClass.bf index 596d5aa..464f0f7 100644 --- a/GlitchyEngine/src/Scripting/ScriptClass.bf +++ b/GlitchyEngine/src/Scripting/ScriptClass.bf @@ -13,19 +13,16 @@ abstract class SharpType : RefCounter protected String _namespace ~ delete _; protected String _className ~ delete _; protected String _fullName ~ delete _; - protected ScriptFieldType _scriptType; public StringView Namespace => _namespace; public StringView ClassName => _className; public StringView FullName => _fullName; - public ScriptFieldType ScriptType => _scriptType; - public this(StringView classNamespace, StringView className, ScriptFieldType scriptType) + public this(StringView classNamespace, StringView className) { _namespace = new String(classNamespace); _className = new String(className); _fullName = new $"{_namespace}.{_className}"; - _scriptType = scriptType; } } @@ -33,36 +30,21 @@ class SharpClass : SharpType { protected internal MonoClass* _monoClass; - public this(StringView classNamespace, StringView className, MonoImage* image, ScriptFieldType fieldType = .Class) : - base(classNamespace, className, fieldType) + public this(StringView classNamespace, StringView className, MonoImage* image) : + base(classNamespace, className) { _monoClass = Mono.mono_class_from_name(image, _namespace, _className); Log.EngineLogger.AssertDebug(_monoClass != null); } - internal this(MonoClass* monoClass, ScriptFieldType fieldType = .Class) : - base(StringView(Mono.mono_class_get_namespace(monoClass)), StringView(Mono.mono_class_get_name(monoClass)), fieldType) + internal this(MonoClass* monoClass) : + base(StringView(Mono.mono_class_get_namespace(monoClass)), StringView(Mono.mono_class_get_name(monoClass))) { _monoClass = monoClass; Log.EngineLogger.AssertDebug(_monoClass != null); } - - internal MonoType* GetMonoType() - { - return Mono.mono_class_get_type(_monoClass); - } - - internal bool IsType(MonoType* type) - { - return GetMonoType() == type; - } - - internal bool IsSubclass(MonoClass* @class) - { - return Mono.mono_class_is_subclass_of(_monoClass, @class, false); - } } class ScriptClass : SharpClass @@ -88,8 +70,8 @@ class ScriptClass : SharpClass public bool RunInEditMode => _runInEditMode; [AllowAppend] - public this(StringView classNamespace, StringView className, MonoImage* image, ScriptFieldType scriptFieldType = .Class) : - base(classNamespace, className, image, scriptFieldType) + public this(StringView classNamespace, StringView className, MonoImage* image) : + base(classNamespace, className, image) { _constructor = FindConstructor(); _onCreate = (OnCreateMethod)GetMethodThunk("OnCreate"); diff --git a/GlitchyEngine/src/Scripting/ScriptEngine.bf b/GlitchyEngine/src/Scripting/ScriptEngine.bf index b313e55..da376b9 100644 --- a/GlitchyEngine/src/Scripting/ScriptEngine.bf +++ b/GlitchyEngine/src/Scripting/ScriptEngine.bf @@ -585,15 +585,12 @@ static class ScriptEngine if (scriptClass == null) return; - let monoType = scriptClass.GetMonoType(); - let monoReflectionType = Mono.mono_type_get_object(s_AppDomain, monoType); - let entityId = entity.UUID; #unwarn - void*[2] args = .(&entityId, monoReflectionType); + void*[1] args = .(&entityId); - let method = Classes.EntityEditor.GetMethod("ShowDefaultEntityEditor", 2); + let method = Classes.EntityEditor.GetMethod("ShowDefaultEntityEditor", 1); Classes.EntityEditor.Invoke(method, null, &args); } diff --git a/GlitchyEngine/src/Scripting/ScriptFieldType.bf b/GlitchyEngine/src/Scripting/ScriptFieldType.bf deleted file mode 100644 index 6d2ad14..0000000 --- a/GlitchyEngine/src/Scripting/ScriptFieldType.bf +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using GlitchyEngine.Core; -using GlitchyEngine.Math; - -namespace GlitchyEngine.Scripting; - -enum ScriptFieldType -{ - case None; - - case Class; - case Struct; - - case Entity; - case Component; -} \ No newline at end of file diff --git a/ScriptCore/Editor/EntityEditor.cs b/ScriptCore/Editor/EntityEditor.cs index 8183b6f..97ad5aa 100644 --- a/ScriptCore/Editor/EntityEditor.cs +++ b/ScriptCore/Editor/EntityEditor.cs @@ -146,14 +146,16 @@ internal class EntityEditor return false; } - public static void ShowDefaultEntityEditor(UUID entityId, Type entityType) + public static void ShowDefaultEntityEditor(UUID entityId) { // TODO: Call custom editors here! ScriptGlue.Entity_GetScriptInstance(entityId, out object? instance); if (instance != null) - ShowEditor(entityType, instance); + { + ShowEditor(instance.GetType(), instance); + } } private static T? GetAttribute(IEnumerable? attributes) where T : Attribute