mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 03:18:37 +08:00
Don't allow instancing virtual resources in the resource picker dialog
This commit is contained in:
parent
ba542444e3
commit
2557ea9d33
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user