Don't allow instancing virtual resources in the resource picker dialog

This commit is contained in:
Aaron Franke 2022-10-21 15:30:06 -05:00
parent ba542444e3
commit 2557ea9d33
No known key found for this signature in database
GPG Key ID: 40A1750B977E56BF

View File

@ -570,13 +570,17 @@ void EditorResourcePicker::_get_allowed_types(bool p_with_convert, HashSet<Strin
for (int i = 0; i < size; i++) {
String base = allowed_types[i].strip_edges();
p_vector->insert(base);
if (!ClassDB::is_virtual(base)) {
p_vector->insert(base);
}
// If we hit a familiar base type, take all the data from cache.
if (allowed_types_cache.has(base)) {
List<StringName> allowed_subtypes = allowed_types_cache[base];
for (const StringName &subtype_name : allowed_subtypes) {
p_vector->insert(subtype_name);
if (!ClassDB::is_virtual(subtype_name)) {
p_vector->insert(subtype_name);
}
}
} else {
List<StringName> allowed_subtypes;
@ -586,13 +590,17 @@ void EditorResourcePicker::_get_allowed_types(bool p_with_convert, HashSet<Strin
ClassDB::get_inheriters_from_class(base, &inheriters);
}
for (const StringName &subtype_name : inheriters) {
p_vector->insert(subtype_name);
if (!ClassDB::is_virtual(subtype_name)) {
p_vector->insert(subtype_name);
}
allowed_subtypes.push_back(subtype_name);
}
for (const StringName &subtype_name : global_classes) {
if (EditorNode::get_editor_data().script_class_is_parent(subtype_name, base)) {
p_vector->insert(subtype_name);
if (!ClassDB::is_virtual(subtype_name)) {
p_vector->insert(subtype_name);
}
allowed_subtypes.push_back(subtype_name);
}
}