Merge pull request #53581 from raulsntos/mono-marshal-generics

This commit is contained in:
Rémi Verschelde 2021-10-15 17:35:21 +02:00 committed by GitHub
commit 6fb06ec47e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -278,6 +278,12 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type, bool *r_nil_is_
if (GDMonoUtils::Marshal::type_is_generic_icollection(reftype) || GDMonoUtils::Marshal::type_is_generic_ienumerable(reftype)) {
return Variant::ARRAY;
}
// GodotObject
GDMonoClass *type_class = p_type.type_class;
if (CACHED_CLASS(GodotObject)->is_assignable_from(type_class)) {
return Variant::OBJECT;
}
} break;
default: {
@ -474,6 +480,11 @@ MonoObject *variant_to_mono_object_of_genericinst(const Variant &p_var, GDMonoCl
return GDMonoUtils::create_managed_from(p_var.operator Array(), godot_array_class);
}
// GodotObject
if (CACHED_CLASS(GodotObject)->is_assignable_from(p_type_class)) {
return GDMonoUtils::unmanaged_get_managed(p_var.operator Object *());
}
ERR_FAIL_V_MSG(nullptr, "Attempted to convert Variant to unsupported generic type: '" +
p_type_class->get_full_name() + "'.");
}