summaryrefslogtreecommitdiffstats
path: root/modules/mono/mono_gd/gd_mono_field.cpp
diff options
context:
space:
mode:
authorIgnacio Etcheverry <ignalfonsore@gmail.com>2020-04-22 17:19:45 +0200
committerIgnacio Etcheverry <ignalfonsore@gmail.com>2020-04-22 17:19:45 +0200
commit0fec3cb5ed2a009454555440b3853bc4309bc434 (patch)
treef1a4132c9a7c5f02fd7f5a069f5d63147f5062cf /modules/mono/mono_gd/gd_mono_field.cpp
parentbb9d89d78c08f86732c19a9c8e8f9f32f587b43a (diff)
downloadredot-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.cpp7
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;