diff options
author | Ignacio Etcheverry <ignalfonsore@gmail.com> | 2020-04-22 17:19:45 +0200 |
---|---|---|
committer | Ignacio Etcheverry <ignalfonsore@gmail.com> | 2020-04-22 17:19:45 +0200 |
commit | 0fec3cb5ed2a009454555440b3853bc4309bc434 (patch) | |
tree | f1a4132c9a7c5f02fd7f5a069f5d63147f5062cf /modules/mono/mono_gd/gd_mono_field.cpp | |
parent | bb9d89d78c08f86732c19a9c8e8f9f32f587b43a (diff) | |
download | redot-engine-0fec3cb5ed2a009454555440b3853bc4309bc434.tar.gz |
Mono/C#: Allow exporting System.Array of type Godot.Object
Diffstat (limited to 'modules/mono/mono_gd/gd_mono_field.cpp')
-rw-r--r-- | modules/mono/mono_gd/gd_mono_field.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp index 3f4e5fe5ac..e78d88568c 100644 --- a/modules/mono/mono_gd/gd_mono_field.cpp +++ b/modules/mono/mono_gd/gd_mono_field.cpp @@ -322,6 +322,13 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_ break; } + GDMonoClass *array_type_class = GDMono::get_singleton()->get_class(array_type->eklass); + if (CACHED_CLASS(GodotObject)->is_assignable_from(array_type_class)) { + MonoArray *managed = GDMonoMarshal::Array_to_mono_array(p_value.operator ::Array(), array_type_class); + mono_field_set_value(p_object, mono_field, managed); + break; + } + ERR_FAIL_MSG("Attempted to convert Variant to a managed array of unmarshallable element type."); } break; |