diff --git a/editor/project_converter_3_to_4.cpp b/editor/project_converter_3_to_4.cpp index b7c01c061f9..3c6f5c09554 100644 --- a/editor/project_converter_3_to_4.cpp +++ b/editor/project_converter_3_to_4.cpp @@ -153,6 +153,7 @@ public: LocalVector enum_regexes; LocalVector gdscript_function_regexes; LocalVector project_settings_regexes; + LocalVector project_godot_regexes; LocalVector input_map_regexes; LocalVector gdscript_properties_regexes; LocalVector gdscript_signals_regexes; @@ -173,10 +174,14 @@ public: for (unsigned int current_index = 0; RenamesMap3To4::gdscript_function_renames[current_index][0]; current_index++) { gdscript_function_regexes.push_back(memnew(RegEx(String("\\b") + RenamesMap3To4::gdscript_function_renames[current_index][0] + "\\b"))); } - // Project Settings. + // Project Settings in scripts. for (unsigned int current_index = 0; RenamesMap3To4::project_settings_renames[current_index][0]; current_index++) { project_settings_regexes.push_back(memnew(RegEx(String("\\b") + RenamesMap3To4::project_settings_renames[current_index][0] + "\\b"))); } + // Project Settings in project.godot. + for (unsigned int current_index = 0; RenamesMap3To4::project_godot_renames[current_index][0]; current_index++) { + project_godot_regexes.push_back(memnew(RegEx(String("\\b") + RenamesMap3To4::project_godot_renames[current_index][0] + "\\b"))); + } // Input Map. for (unsigned int current_index = 0; RenamesMap3To4::input_map_renames[current_index][0]; current_index++) { input_map_regexes.push_back(memnew(RegEx(String("\\b") + RenamesMap3To4::input_map_renames[current_index][0] + "\\b"))); @@ -253,6 +258,9 @@ public: for (RegEx *regex : project_settings_regexes) { memdelete(regex); } + for (RegEx *regex : project_godot_regexes) { + memdelete(regex); + } for (RegEx *regex : input_map_regexes) { memdelete(regex); } @@ -405,7 +413,7 @@ bool ProjectConverter3To4::convert() { custom_rename(lines, "\\.shader", ".gdshader"); } else if (file_name.ends_with("project.godot")) { - rename_common(RenamesMap3To4::project_settings_renames, reg_container.project_settings_regexes, lines); + rename_common(RenamesMap3To4::project_godot_renames, reg_container.project_godot_regexes, lines); rename_common(RenamesMap3To4::builtin_types_renames, reg_container.builtin_types_regexes, lines); rename_common(RenamesMap3To4::input_map_renames, reg_container.input_map_regexes, lines); } else if (file_name.ends_with(".csproj")) { @@ -577,7 +585,7 @@ bool ProjectConverter3To4::validate_conversion() { changed_elements.append_array(check_for_custom_rename(lines, "\\.shader", ".gdshader")); } else if (file_name.ends_with("project.godot")) { - changed_elements.append_array(check_for_rename_common(RenamesMap3To4::project_settings_renames, reg_container.project_settings_regexes, lines)); + changed_elements.append_array(check_for_rename_common(RenamesMap3To4::project_godot_renames, reg_container.project_godot_regexes, lines)); changed_elements.append_array(check_for_rename_common(RenamesMap3To4::builtin_types_renames, reg_container.builtin_types_regexes, lines)); changed_elements.append_array(check_for_rename_common(RenamesMap3To4::input_map_renames, reg_container.input_map_regexes, lines)); } else if (file_name.ends_with(".csproj")) { @@ -1106,6 +1114,7 @@ bool ProjectConverter3To4::test_array_names() { valid = valid && test_single_array(RenamesMap3To4::shaders_renames, true); valid = valid && test_single_array(RenamesMap3To4::gdscript_signals_renames); valid = valid && test_single_array(RenamesMap3To4::project_settings_renames); + valid = valid && test_single_array(RenamesMap3To4::project_godot_renames); valid = valid && test_single_array(RenamesMap3To4::input_map_renames); valid = valid && test_single_array(RenamesMap3To4::builtin_types_renames); valid = valid && test_single_array(RenamesMap3To4::color_renames); diff --git a/editor/renames_map_3_to_4.cpp b/editor/renames_map_3_to_4.cpp index 12d869fe77e..90c8709c3be 100644 --- a/editor/renames_map_3_to_4.cpp +++ b/editor/renames_map_3_to_4.cpp @@ -1289,6 +1289,9 @@ const char *RenamesMap3To4::csharp_signals_renames[][2] = { }; const char *RenamesMap3To4::project_settings_renames[][2] = { + // Project setting paths in scripts include the category, but in project.godot, + // the category is the section delimiter, so we need to support the paths without it. + // The project.godot remaps are defined in the project_godot_renames, keep them in sync! { "audio/channel_disable_threshold_db", "audio/buses/channel_disable_threshold_db" }, { "audio/channel_disable_time", "audio/buses/channel_disable_time" }, { "audio/default_bus_layout", "audio/buses/default_bus_layout" }, @@ -1298,6 +1301,10 @@ const char *RenamesMap3To4::project_settings_renames[][2] = { { "audio/output_latency", "audio/driver/output_latency" }, { "audio/output_latency.web", "audio/driver/output_latency.web" }, { "audio/video_delay_compensation_ms", "audio/video/video_delay_compensation_ms" }, + { "display/window/size/width", "display/window/size/viewport_width" }, + { "display/window/size/height", "display/window/size/viewport_height" }, + { "display/window/size/test_width", "display/window/size/window_width_override" }, + { "display/window/size/test_height", "display/window/size/window_height_override" }, { "display/window/vsync/use_vsync", "display/window/vsync/vsync_mode" }, { "editor/main_run_args", "editor/run/main_run_args" }, { "gui/common/swap_ok_cancel", "gui/common/swap_cancel_ok" }, @@ -1325,10 +1332,52 @@ const char *RenamesMap3To4::project_settings_renames[][2] = { { "rendering/quality/shadow_atlas/size.mobile", "rendering/lights_and_shadows/shadow_atlas/size.mobile" }, { "rendering/vram_compression/import_etc2", "rendering/textures/vram_compression/import_etc2_astc" }, { "rendering/vram_compression/import_s3tc", "rendering/textures/vram_compression/import_s3tc_bptc" }, + + { nullptr, nullptr }, +}; + +const char *RenamesMap3To4::project_godot_renames[][2] = { + // Should be kept in sync with project_settings_renames. + { "channel_disable_threshold_db", "buses/channel_disable_threshold_db" }, + { "channel_disable_time", "buses/channel_disable_time" }, + { "default_bus_layout", "buses/default_bus_layout" }, + // { "driver", "driver/driver" }, -- Risk of conflicts. + { "enable_audio_input", "driver/enable_input" }, + // { "mix_rate", "driver/mix_rate" }, -- Risk of conflicts. + { "output_latency", "driver/output_latency" }, + { "output_latency.web", "driver/output_latency.web" }, + { "video_delay_compensation_ms", "video/video_delay_compensation_ms" }, { "window/size/width", "window/size/viewport_width" }, { "window/size/height", "window/size/viewport_height" }, { "window/size/test_width", "window/size/window_width_override" }, { "window/size/test_height", "window/size/window_height_override" }, + { "window/vsync/use_vsync", "window/vsync/vsync_mode" }, + { "main_run_args", "run/main_run_args" }, + { "common/swap_ok_cancel", "common/swap_cancel_ok" }, + { "limits/debugger_stdout/max_chars_per_second", "limits/debugger/max_chars_per_second" }, + { "limits/debugger_stdout/max_errors_per_second", "limits/debugger/max_errors_per_second" }, + { "limits/debugger_stdout/max_messages_per_frame", "limits/debugger/max_queued_messages" }, + { "limits/debugger_stdout/max_warnings_per_second", "limits/debugger/max_warnings_per_second" }, + { "ssl/certificates", "tls/certificate_bundle_override" }, + { "2d/thread_model", "2d/run_on_thread" }, // TODO: Not sure. + { "environment/default_clear_color", "environment/defaults/default_clear_color" }, + { "environment/default_environment", "environment/defaults/default_environment" }, + { "quality/depth_prepass/disable_for_vendors", "driver/depth_prepass/disable_for_vendors" }, + { "quality/depth_prepass/enable", "driver/depth_prepass/enable" }, + { "quality/shading/force_blinn_over_ggx", "shading/overrides/force_blinn_over_ggx" }, + { "quality/shading/force_blinn_over_ggx.mobile", "shading/overrides/force_blinn_over_ggx.mobile" }, + { "quality/shading/force_lambert_over_burley", "shading/overrides/force_lambert_over_burley" }, + { "quality/shading/force_lambert_over_burley.mobile", "shading/overrides/force_lambert_over_burley.mobile" }, + { "quality/shading/force_vertex_shading", "shading/overrides/force_vertex_shading" }, + { "quality/shading/force_vertex_shading.mobile", "shading/overrides/force_vertex_shading.mobile" }, + { "quality/shadow_atlas/quadrant_0_subdiv", "lights_and_shadows/shadow_atlas/quadrant_0_subdiv" }, + { "quality/shadow_atlas/quadrant_1_subdiv", "lights_and_shadows/shadow_atlas/quadrant_1_subdiv" }, + { "quality/shadow_atlas/quadrant_2_subdiv", "lights_and_shadows/shadow_atlas/quadrant_2_subdiv" }, + { "quality/shadow_atlas/quadrant_3_subdiv", "lights_and_shadows/shadow_atlas/quadrant_3_subdiv" }, + { "quality/shadow_atlas/size", "lights_and_shadows/shadow_atlas/size" }, + { "quality/shadow_atlas/size.mobile", "lights_and_shadows/shadow_atlas/size.mobile" }, + { "vram_compression/import_etc2", "textures/vram_compression/import_etc2_astc" }, + { "vram_compression/import_s3tc", "textures/vram_compression/import_s3tc_bptc" }, { nullptr, nullptr }, }; diff --git a/editor/renames_map_3_to_4.h b/editor/renames_map_3_to_4.h index 119ededf43b..537e5f1db54 100644 --- a/editor/renames_map_3_to_4.h +++ b/editor/renames_map_3_to_4.h @@ -42,6 +42,7 @@ struct RenamesMap3To4 { static const char *gdscript_signals_renames[][2]; static const char *csharp_signals_renames[][2]; static const char *project_settings_renames[][2]; + static const char *project_godot_renames[][2]; static const char *input_map_renames[][2]; static const char *builtin_types_renames[][2]; static const char *shaders_renames[][2];