diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index e8b40bdcf34..1298e447d57 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -165,22 +165,32 @@ void EditorSettings::create() { return; //pointless DirAccess *dir=NULL; - Object *object; Variant meta; String config_path; String config_dir; String config_file="editor_settings.xml"; - if (OS::get_singleton()->has_environment("APPDATA")) { - // Most likely under windows, save here - config_path=OS::get_singleton()->get_environment("APPDATA"); - config_dir=String(_MKSTR(VERSION_SHORT_NAME)).capitalize(); - } else if (OS::get_singleton()->has_environment("HOME")) { + String exe_path = OS::get_singleton()->get_executable_path().get_base_dir(); + DirAccess* d = DirAccess::create_for_path(exe_path); + if (d->file_exists(exe_path + "/._sc_")) { - config_path=OS::get_singleton()->get_environment("HOME"); - config_dir="."+String(_MKSTR(VERSION_SHORT_NAME)).to_lower(); - } + // editor is self contained + config_path = exe_path; + config_dir = "editor_data"; + + } else { + + if (OS::get_singleton()->has_environment("APPDATA")) { + // Most likely under windows, save here + config_path=OS::get_singleton()->get_environment("APPDATA"); + config_dir=String(_MKSTR(VERSION_SHORT_NAME)).capitalize(); + } else if (OS::get_singleton()->has_environment("HOME")) { + + config_path=OS::get_singleton()->get_environment("HOME"); + config_dir="."+String(_MKSTR(VERSION_SHORT_NAME)).to_lower(); + } + }; ObjectTypeDB::register_type(); //otherwise it can't be unserialized String config_file_path;