Parcourir la source

Disable incompatible rendering methods in the project manager

The project manager can now only create projects that use a rendering
method compatible with the current platform. Rendering methods that
are disabled at build-time are also grayed out (only for OpenGL).

While it is possible in theory to create a project using Forward+
on web (thanks to the automatic fallback),
it will look different once edited on a desktop platform.
Hugo Locurcio il y a 2 ans
Parent
commit
8ebc5b2875
2 fichiers modifiés avec 20 ajouts et 3 suppressions
  1. 9 0
      editor/editor_settings.cpp
  2. 11 3
      editor/project_manager.cpp

+ 9 - 0
editor/editor_settings.cpp

@@ -742,7 +742,16 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
 
 	// TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
 	EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "project_manager/sorting_order", 0, "Last Edited,Name,Path")
+
+#if defined(WEB_ENABLED)
+	// Web platform only supports `gl_compatibility`.
+	EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_NONE, "project_manager/default_renderer", "gl_compatibility", "forward_plus,mobile,gl_compatibility")
+#elif defined(ANDROID_ENABLED)
+	// Use more suitable rendering method by default.
+	EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_NONE, "project_manager/default_renderer", "mobile", "forward_plus,mobile,gl_compatibility")
+#else
 	EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_NONE, "project_manager/default_renderer", "forward_plus", "forward_plus,mobile,gl_compatibility")
+#endif
 
 	if (p_extra_config.is_valid()) {
 		if (p_extra_config->has_section("init_projects") && p_extra_config->has_section_key("init_projects", "list")) {

+ 11 - 3
editor/project_manager.cpp

@@ -907,33 +907,41 @@ public:
 		Button *rs_button = memnew(CheckBox);
 		rs_button->set_button_group(renderer_button_group);
 		rs_button->set_text(TTR("Forward+"));
+#if defined(WEB_ENABLED)
+		rs_button->set_disabled(true);
+#endif
 		rs_button->set_meta(SNAME("rendering_method"), "forward_plus");
 		rs_button->connect("pressed", callable_mp(this, &ProjectDialog::_renderer_selected));
 		rvb->add_child(rs_button);
 		if (default_renderer_type == "forward_plus") {
 			rs_button->set_pressed(true);
 		}
-
 		rs_button = memnew(CheckBox);
 		rs_button->set_button_group(renderer_button_group);
 		rs_button->set_text(TTR("Mobile"));
+#if defined(WEB_ENABLED)
+		rs_button->set_disabled(true);
+#endif
 		rs_button->set_meta(SNAME("rendering_method"), "mobile");
 		rs_button->connect("pressed", callable_mp(this, &ProjectDialog::_renderer_selected));
 		rvb->add_child(rs_button);
 		if (default_renderer_type == "mobile") {
 			rs_button->set_pressed(true);
 		}
-
 		rs_button = memnew(CheckBox);
 		rs_button->set_button_group(renderer_button_group);
 		rs_button->set_text(TTR("Compatibility"));
+#if !defined(GLES3_ENABLED)
+		rs_button->set_disabled(true);
+#endif
 		rs_button->set_meta(SNAME("rendering_method"), "gl_compatibility");
 		rs_button->connect("pressed", callable_mp(this, &ProjectDialog::_renderer_selected));
 		rvb->add_child(rs_button);
+#if defined(GLES3_ENABLED)
 		if (default_renderer_type == "gl_compatibility") {
 			rs_button->set_pressed(true);
 		}
-
+#endif
 		rshc->add_child(memnew(VSeparator));
 
 		// Right hand side, used for text explaining each choice.