diff options
| author | Will Nations <willnationsdev@gmail.com> | 2019-02-16 17:53:14 -0600 | 
|---|---|---|
| committer | Will Nations <willnationsdev@gmail.com> | 2019-02-17 22:57:45 -0600 | 
| commit | 2d0fcd5c4a1ccc4edcb56fa04ef690aa829cea4c (patch) | |
| tree | 369ad5ffc07ded1ef4a462b7e9f79a0294ff0a49 | |
| parent | be98a6ebbca95225b59570ed67fce962edfd23ec (diff) | |
Auto-cleanup missing addons
| -rw-r--r-- | editor/editor_node.cpp | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index d7e8869428..a6fba21bc2 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2579,6 +2579,20 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,  	Ref<ConfigFile> cf;  	cf.instance();  	String addon_path = "res://addons/" + p_addon + "/plugin.cfg"; +	if (!DirAccess::exists(addon_path.get_base_dir())) { +		ProjectSettings *ps = ProjectSettings::get_singleton(); +		PoolStringArray enabled_plugins = ps->get("editor_plugins/enabled"); +		for (int i = 0; i < enabled_plugins.size(); ++i) { +			if (enabled_plugins.get(i) == p_addon) { +				enabled_plugins.remove(i); +				break; +			} +		} +		ps->set("editor_plugins/enabled", enabled_plugins); +		ps->save(); +		WARN_PRINTS("Addon '" + p_addon + "' failed to load. No directory found. Removing from enabled plugins."); +		return; +	}  	Error err = cf->load(addon_path);  	if (err != OK) {  		show_warning(vformat(TTR("Unable to enable addon plugin at: '%s' parsing of config failed."), addon_path));  |