Remove bogus nulls from generated default values

Also, fix crash in PluginScript destructor.
This commit is contained in:
Bojidar Marinov 2019-06-29 15:51:33 +03:00
parent ae70eca5af
commit 55234d62b0
No known key found for this signature in database
GPG key ID: 4B0FD31949AD430D
4 changed files with 30 additions and 12 deletions

View file

@ -248,21 +248,28 @@ void DocData::generate(bool p_basic_types) {
prop.setter = setter;
prop.getter = getter;
if (ClassDB::can_instance(name)) { // Cannot get default value of classes that can't be instanced
Variant default_value = ClassDB::class_get_default_property_value(name, E->get().name);
prop.default_value = default_value.get_construct_string();
Variant default_value = Variant();
bool default_value_valid = false;
if (ClassDB::can_instance(name)) {
default_value = ClassDB::class_get_default_property_value(name, E->get().name, &default_value_valid);
} else {
// Cannot get default value of classes that can't be instanced
List<StringName> inheriting_classes;
ClassDB::get_direct_inheriters_from_class(name, &inheriting_classes);
for (List<StringName>::Element *E2 = inheriting_classes.front(); E2; E2 = E2->next()) {
if (ClassDB::can_instance(E2->get())) {
Variant default_value = ClassDB::class_get_default_property_value(E2->get(), E->get().name);
prop.default_value = default_value.get_construct_string();
break;
default_value = ClassDB::class_get_default_property_value(E2->get(), E->get().name, &default_value_valid);
if (default_value_valid)
break;
}
}
}
if (default_value_valid) {
prop.default_value = default_value.get_construct_string();
}
bool found_type = false;
if (getter != StringName()) {
MethodBind *mb = ClassDB::get_method(name, getter);