diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-08-17 22:09:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-17 22:09:17 +0200 |
commit | cc9f2a2d8bf36e7244e7291ad7fdb32a3e3f2ef2 (patch) | |
tree | d1f0a4b19595fb9060ca33628ce1a0df82ebfba3 /editor | |
parent | 86371b7298e32356c8ce892f768c56bec7088292 (diff) | |
parent | ceb61fb784e42f1ffb323e0fc4fee7515fdd3b34 (diff) |
Merge pull request #31401 from aaronfranke/no-init-scripts
Allow plugins to not have an init script
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_node.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 1b0ffd4c89..311f8b295b 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2921,31 +2921,35 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, return; } - String path = cf->get_value("plugin", "script"); - path = String("res://addons").plus_file(p_addon).plus_file(path); + String script_path = cf->get_value("plugin", "script"); + Ref<Script> script; // We need to save it for creating "ep" below. - Ref<Script> script = ResourceLoader::load(path); + // Only try to load the script if it has a name. Else, the plugin has no init script. + if (script_path.length() > 0) { + script_path = String("res://addons").plus_file(p_addon).plus_file(script_path); + script = ResourceLoader::load(script_path); - if (script.is_null()) { - show_warning(vformat(TTR("Unable to load addon script from path: '%s'."), path)); - return; - } + if (script.is_null()) { + show_warning(vformat(TTR("Unable to load addon script from path: '%s'."), script_path)); + return; + } - //errors in the script cause the base_type to be "" - if (String(script->get_instance_base_type()) == "") { - show_warning(vformat(TTR("Unable to load addon script from path: '%s' There seems to be an error in the code, please check the syntax."), path)); - return; - } + // Errors in the script cause the base_type to be an empty string. + if (String(script->get_instance_base_type()) == "") { + show_warning(vformat(TTR("Unable to load addon script from path: '%s' There seems to be an error in the code, please check the syntax."), script_path)); + return; + } - //could check inheritance.. - if (String(script->get_instance_base_type()) != "EditorPlugin") { - show_warning(vformat(TTR("Unable to load addon script from path: '%s' Base type is not EditorPlugin."), path)); - return; - } + // Plugin init scripts must inherit from EditorPlugin and be tools. + if (String(script->get_instance_base_type()) != "EditorPlugin") { + show_warning(vformat(TTR("Unable to load addon script from path: '%s' Base type is not EditorPlugin."), script_path)); + return; + } - if (!script->is_tool()) { - show_warning(vformat(TTR("Unable to load addon script from path: '%s' Script is not in tool mode."), path)); - return; + if (!script->is_tool()) { + show_warning(vformat(TTR("Unable to load addon script from path: '%s' Script is not in tool mode."), script_path)); + return; + } } EditorPlugin *ep = memnew(EditorPlugin); |