|
@@ -3350,12 +3350,30 @@ Ref<Texture> EditorNode::get_class_icon(const String &p_class, const String &p_f
|
|
|
if (ScriptServer::is_global_class(p_class)) {
|
|
|
String icon_path = EditorNode::get_editor_data().script_class_get_icon_path(p_class);
|
|
|
RES icon;
|
|
|
+
|
|
|
if (FileAccess::exists(icon_path)) {
|
|
|
icon = ResourceLoader::load(icon_path);
|
|
|
+ if (icon.is_valid())
|
|
|
+ return icon;
|
|
|
}
|
|
|
- if (!icon.is_valid()) {
|
|
|
- icon = gui_base->get_icon(ScriptServer::get_global_class_native_base(p_class), "EditorIcons");
|
|
|
+
|
|
|
+ Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(p_class), "Script");
|
|
|
+
|
|
|
+ while (script.is_valid()) {
|
|
|
+ String current_icon_path;
|
|
|
+ script->get_language()->get_global_class_name(script->get_path(), NULL, ¤t_icon_path);
|
|
|
+ if (FileAccess::exists(current_icon_path)) {
|
|
|
+ RES texture = ResourceLoader::load(current_icon_path);
|
|
|
+ if (texture.is_valid())
|
|
|
+ return texture;
|
|
|
+ }
|
|
|
+ script = script->get_base_script();
|
|
|
}
|
|
|
+
|
|
|
+ if (icon.is_null()) {
|
|
|
+ icon = gui_base->get_icon(ScriptServer::get_global_class_base(p_class), "EditorIcons");
|
|
|
+ }
|
|
|
+
|
|
|
return icon;
|
|
|
}
|
|
|
|