diff options
| -rw-r--r-- | modules/mono/mono_gd/gd_mono_marshal.cpp | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp index 11a31217d7..1247c80ebf 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.cpp +++ b/modules/mono/mono_gd/gd_mono_marshal.cpp @@ -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() + "'.");  }  |