Browse Source

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

Aaron Franke 2 years ago
parent
commit
2557ea9d33
1 changed files with 12 additions and 4 deletions
  1. 12 4
      editor/editor_resource_picker.cpp

+ 12 - 4
editor/editor_resource_picker.cpp

@@ -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);
 				}
 			}