Fix regression in script values creation in Editor

#1184 #1183
This commit is contained in:
Wojtek Figat
2023-06-19 17:49:34 +02:00
parent 228ef4e130
commit e17eed7029

View File

@@ -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();