From 9421da57ad552e9004e9ca3d739d75b0c1efee03 Mon Sep 17 00:00:00 2001 From: Ignacio Etcheverry Date: Tue, 19 Feb 2019 22:36:27 +0100 Subject: C#: Add 'Singleton' property to singleton wrapper class This property returns an instance of the singleton. The purpose of this is to allow using methods from the base class like 'Connect'. Since all Godot singletons inherit Object, the type of the returned instance is Godot.Object. --- modules/mono/mono_gd/gd_mono_utils.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'modules/mono/mono_gd/gd_mono_utils.cpp') diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp index 3b97339fea..6cc1c8afc2 100644 --- a/modules/mono/mono_gd/gd_mono_utils.cpp +++ b/modules/mono/mono_gd/gd_mono_utils.cpp @@ -374,6 +374,11 @@ GDMonoClass *type_get_proxy_class(const StringName &p_type) { GDMonoClass *klass = GDMono::get_singleton()->get_core_api_assembly()->get_class(BINDINGS_NAMESPACE, class_name); + if (klass && klass->is_static()) { + // A static class means this is a Godot singleton class. If an instance is needed we use Godot.Object. + return mono_cache.class_GodotObject; + } + #ifdef TOOLS_ENABLED if (!klass) { return GDMono::get_singleton()->get_editor_api_assembly()->get_class(BINDINGS_NAMESPACE, class_name); -- cgit v1.2.3