diff options
author | Aaron Franke <arnfranke@yahoo.com> | 2019-08-15 10:40:22 -0700 |
---|---|---|
committer | Aaron Franke <arnfranke@yahoo.com> | 2019-08-15 17:52:07 -0400 |
commit | ceb61fb784e42f1ffb323e0fc4fee7515fdd3b34 (patch) | |
tree | df7bc7f49f74d935f8d46e9a96b513dc52150c31 /editor | |
parent | de8ce3e625e74833aec6a5d165e7e82100a1dbf3 (diff) |
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 866a90ff10..10dd1ed0ce 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2925,31 +2925,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); |