From e17eed7029ffd63c46e7be1d4227769adc603dbc Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 19 Jun 2023 17:49:34 +0200 Subject: [PATCH] Fix regression in script values creation in Editor #1184 #1183 --- Source/Editor/Scripting/ScriptType.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/Editor/Scripting/ScriptType.cs b/Source/Editor/Scripting/ScriptType.cs index d174b7dff..454c3a5d2 100644 --- a/Source/Editor/Scripting/ScriptType.cs +++ b/Source/Editor/Scripting/ScriptType.cs @@ -832,7 +832,7 @@ namespace FlaxEditor.Scripting get { if (_managed != null) - return _managed.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null) != null; + return _managed.IsValueType || _managed.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null) != null; return _custom?.CanCreateInstance ?? false; } } @@ -893,9 +893,16 @@ namespace FlaxEditor.Scripting { if (_managed != null) { - var ctor = _managed.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null); object value = RuntimeHelpers.GetUninitializedObject(_managed); - ctor.Invoke(value, null); + if (!_managed.IsValueType) + { + var ctor = _managed.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null); +#if !BUILD_RELEASE + if (ctor == null) + throw new Exception($"Missing empty constructor for type {_managed.FullName}."); +#endif + ctor.Invoke(value, null); + } return value; } return _custom.CreateInstance();