C#: Fix signature of generated signal callbacks

- Use `long` and `double` types since signals currently only support 64-bit types.
- Fix bug for checking if the type name is a class registered in ClassDB.
This commit is contained in:
Raul Santos 2022-10-07 12:11:24 +02:00
parent 0056acf46f
commit 86f6662a8c
No known key found for this signature in database
GPG Key ID: B532473AE3A803E4
1 changed files with 7 additions and 7 deletions

View File

@ -390,10 +390,10 @@ bool CSharpLanguage::supports_builtin_mode() const {
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
static String variant_type_to_managed_name(const String &p_var_type_name) { static String variant_type_to_managed_name(const String &p_var_type_name) {
if (p_var_type_name.is_empty()) { if (p_var_type_name.is_empty()) {
return "object"; return "Variant";
} }
if (!ClassDB::class_exists(p_var_type_name)) { if (ClassDB::class_exists(p_var_type_name)) {
return p_var_type_name; return p_var_type_name;
} }
@ -401,12 +401,12 @@ static String variant_type_to_managed_name(const String &p_var_type_name) {
return "Godot.Object"; return "Godot.Object";
} }
if (p_var_type_name == Variant::get_type_name(Variant::INT)) {
return "long";
}
if (p_var_type_name == Variant::get_type_name(Variant::FLOAT)) { if (p_var_type_name == Variant::get_type_name(Variant::FLOAT)) {
#ifdef REAL_T_IS_DOUBLE
return "double"; return "double";
#else
return "float";
#endif
} }
if (p_var_type_name == Variant::get_type_name(Variant::STRING)) { if (p_var_type_name == Variant::get_type_name(Variant::STRING)) {
@ -484,7 +484,7 @@ static String variant_type_to_managed_name(const String &p_var_type_name) {
} }
} }
return "object"; return "Variant";
} }
String CSharpLanguage::make_function(const String &, const String &p_name, const PackedStringArray &p_args) const { String CSharpLanguage::make_function(const String &, const String &p_name, const PackedStringArray &p_args) const {