Explorar o código

Clean up the XR features parameters from core

Following on the previous commit, the XR features logic have now be moved to the Godot OpenXR loader plugin.

See https://github.com/GodotVR/godot_openxr_loaders/pull/38
Fredia Huya-Kouadio %!s(int64=2) %!d(string=hai) anos
pai
achega
b52e1be2c2

+ 0 - 6
platform/android/doc_classes/EditorExportPlatformAndroid.xml

@@ -584,12 +584,6 @@
 		<member name="version/name" type="String" setter="" getter="">
 		<member name="version/name" type="String" setter="" getter="">
 			Application version visible to the user.
 			Application version visible to the user.
 		</member>
 		</member>
-		<member name="xr_features/hand_tracking" type="int" setter="" getter="">
-		</member>
-		<member name="xr_features/hand_tracking_frequency" type="int" setter="" getter="">
-		</member>
-		<member name="xr_features/passthrough" type="int" setter="" getter="">
-		</member>
 		<member name="xr_features/xr_mode" type="int" setter="" getter="">
 		<member name="xr_features/xr_mode" type="int" setter="" getter="">
 		</member>
 		</member>
 	</members>
 	</members>

+ 0 - 30
platform/android/export/export_plugin.cpp

@@ -832,16 +832,6 @@ void EditorExportPlatformAndroid::_get_permissions(const Ref<EditorExportPreset>
 			r_permissions.push_back("android.permission.INTERNET");
 			r_permissions.push_back("android.permission.INTERNET");
 		}
 		}
 	}
 	}
-
-	int xr_mode_index = p_preset->get("xr_features/xr_mode");
-	if (xr_mode_index == XR_MODE_OPENXR) {
-		int hand_tracking_index = p_preset->get("xr_features/hand_tracking"); // 0: none, 1: optional, 2: required
-		if (hand_tracking_index > XR_HAND_TRACKING_NONE) {
-			if (r_permissions.find("com.oculus.permission.HAND_TRACKING") == -1) {
-				r_permissions.push_back("com.oculus.permission.HAND_TRACKING");
-			}
-		}
-	}
 }
 }
 
 
 void EditorExportPlatformAndroid::_write_tmp_manifest(const Ref<EditorExportPreset> &p_preset, bool p_give_internet, bool p_debug) {
 void EditorExportPlatformAndroid::_write_tmp_manifest(const Ref<EditorExportPreset> &p_preset, bool p_give_internet, bool p_debug) {
@@ -881,7 +871,6 @@ void EditorExportPlatformAndroid::_write_tmp_manifest(const Ref<EditorExportPres
 		}
 		}
 	}
 	}
 
 
-	manifest_text += _get_xr_features_tag(p_preset);
 	manifest_text += _get_application_tag(Ref<EditorExportPlatform>(this), p_preset, _has_read_write_storage_permission(perms), p_debug);
 	manifest_text += _get_application_tag(Ref<EditorExportPlatform>(this), p_preset, _has_read_write_storage_permission(perms), p_debug);
 	manifest_text += "</manifest>\n";
 	manifest_text += "</manifest>\n";
 	String manifest_path = vformat("res://android/build/src/%s/AndroidManifest.xml", (p_debug ? "debug" : "release"));
 	String manifest_path = vformat("res://android/build/src/%s/AndroidManifest.xml", (p_debug ? "debug" : "release"));
@@ -1751,22 +1740,6 @@ String EditorExportPlatformAndroid::get_export_option_warning(const EditorExport
 			if (xr_mode_index == XR_MODE_OPENXR && !gradle_build_enabled) {
 			if (xr_mode_index == XR_MODE_OPENXR && !gradle_build_enabled) {
 				return TTR("OpenXR requires \"Use Gradle Build\" to be enabled");
 				return TTR("OpenXR requires \"Use Gradle Build\" to be enabled");
 			}
 			}
-		} else if (p_name == "xr_features/hand_tracking") {
-			int xr_mode_index = p_preset->get("xr_features/xr_mode");
-			int hand_tracking = p_preset->get("xr_features/hand_tracking");
-			if (xr_mode_index != XR_MODE_OPENXR) {
-				if (hand_tracking > XR_HAND_TRACKING_NONE) {
-					return TTR("\"Hand Tracking\" is only valid when \"XR Mode\" is \"OpenXR\".");
-				}
-			}
-		} else if (p_name == "xr_features/passthrough") {
-			int xr_mode_index = p_preset->get("xr_features/xr_mode");
-			int passthrough_mode = p_preset->get("xr_features/passthrough");
-			if (xr_mode_index != XR_MODE_OPENXR) {
-				if (passthrough_mode > XR_PASSTHROUGH_NONE) {
-					return TTR("\"Passthrough\" is only valid when \"XR Mode\" is \"OpenXR\".");
-				}
-			}
 		} else if (p_name == "gradle_build/export_format") {
 		} else if (p_name == "gradle_build/export_format") {
 			bool gradle_build_enabled = p_preset->get("gradle_build/use_gradle_build");
 			bool gradle_build_enabled = p_preset->get("gradle_build/use_gradle_build");
 			if (int(p_preset->get("gradle_build/export_format")) == EXPORT_FORMAT_AAB && !gradle_build_enabled) {
 			if (int(p_preset->get("gradle_build/export_format")) == EXPORT_FORMAT_AAB && !gradle_build_enabled) {
@@ -1874,9 +1847,6 @@ void EditorExportPlatformAndroid::get_export_options(List<ExportOption> *r_optio
 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "graphics/opengl_debug"), false));
 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "graphics/opengl_debug"), false));
 
 
 	r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "xr_features/xr_mode", PROPERTY_HINT_ENUM, "Regular,OpenXR"), XR_MODE_REGULAR, false, true));
 	r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "xr_features/xr_mode", PROPERTY_HINT_ENUM, "Regular,OpenXR"), XR_MODE_REGULAR, false, true));
-	r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "xr_features/hand_tracking", PROPERTY_HINT_ENUM, "None,Optional,Required"), XR_HAND_TRACKING_NONE, false, true));
-	r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "xr_features/hand_tracking_frequency", PROPERTY_HINT_ENUM, "Low,High"), XR_HAND_TRACKING_FREQUENCY_LOW));
-	r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "xr_features/passthrough", PROPERTY_HINT_ENUM, "None,Optional,Required"), XR_PASSTHROUGH_NONE, false, true));
 
 
 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "screen/immersive_mode"), true));
 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "screen/immersive_mode"), true));
 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "screen/support_small"), true));
 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "screen/support_small"), true));

+ 0 - 53
platform/android/export/gradle_export_util.cpp

@@ -254,28 +254,6 @@ String _get_screen_sizes_tag(const Ref<EditorExportPreset> &p_preset) {
 	return manifest_screen_sizes;
 	return manifest_screen_sizes;
 }
 }
 
 
-String _get_xr_features_tag(const Ref<EditorExportPreset> &p_preset) {
-	String manifest_xr_features;
-	int xr_mode_index = (int)(p_preset->get("xr_features/xr_mode"));
-	bool uses_xr = xr_mode_index == XR_MODE_OPENXR;
-	if (uses_xr) {
-		int hand_tracking_index = p_preset->get("xr_features/hand_tracking"); // 0: none, 1: optional, 2: required
-		if (hand_tracking_index == XR_HAND_TRACKING_OPTIONAL) {
-			manifest_xr_features += "    <uses-feature tools:node=\"replace\" android:name=\"oculus.software.handtracking\" android:required=\"false\" />\n";
-		} else if (hand_tracking_index == XR_HAND_TRACKING_REQUIRED) {
-			manifest_xr_features += "    <uses-feature tools:node=\"replace\" android:name=\"oculus.software.handtracking\" android:required=\"true\" />\n";
-		}
-
-		int passthrough_mode = p_preset->get("xr_features/passthrough");
-		if (passthrough_mode == XR_PASSTHROUGH_OPTIONAL) {
-			manifest_xr_features += "    <uses-feature tools:node=\"replace\" android:name=\"com.oculus.feature.PASSTHROUGH\" android:required=\"false\" />\n";
-		} else if (passthrough_mode == XR_PASSTHROUGH_REQUIRED) {
-			manifest_xr_features += "    <uses-feature tools:node=\"replace\" android:name=\"com.oculus.feature.PASSTHROUGH\" android:required=\"true\" />\n";
-		}
-	}
-	return manifest_xr_features;
-}
-
 String _get_activity_tag(const Ref<EditorExportPlatform> &p_export_platform, const Ref<EditorExportPreset> &p_preset, bool p_debug) {
 String _get_activity_tag(const Ref<EditorExportPlatform> &p_export_platform, const Ref<EditorExportPreset> &p_preset, bool p_debug) {
 	String orientation = _get_android_orientation_label(DisplayServer::ScreenOrientation(int(GLOBAL_GET("display/window/handheld/orientation"))));
 	String orientation = _get_android_orientation_label(DisplayServer::ScreenOrientation(int(GLOBAL_GET("display/window/handheld/orientation"))));
 	String manifest_activity_text = vformat(
 	String manifest_activity_text = vformat(
@@ -293,22 +271,6 @@ String _get_activity_tag(const Ref<EditorExportPlatform> &p_export_platform, con
 							  "                <action android:name=\"android.intent.action.MAIN\" />\n"
 							  "                <action android:name=\"android.intent.action.MAIN\" />\n"
 							  "                <category android:name=\"android.intent.category.LAUNCHER\" />\n";
 							  "                <category android:name=\"android.intent.category.LAUNCHER\" />\n";
 
 
-	int xr_mode_index = (int)(p_preset->get("xr_features/xr_mode"));
-	bool uses_xr = xr_mode_index == XR_MODE_OPENXR;
-	if (uses_xr) {
-		manifest_activity_text += "\n"
-								  "                <!-- Enable access to OpenXR on Oculus mobile devices, no-op on other Android\n"
-								  "                platforms. -->\n"
-								  "                <category android:name=\"com.oculus.intent.category.VR\" />\n"
-								  "\n"
-								  "                <!-- OpenXR category tag to indicate the activity starts in an immersive OpenXR mode. \n"
-								  "                See https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#android-runtime-category. -->\n"
-								  "                <category android:name=\"org.khronos.openxr.intent.category.IMMERSIVE_HMD\" />\n"
-								  "\n"
-								  "                <!-- Enable VR access on HTC Vive Focus devices. -->\n"
-								  "                <category android:name=\"com.htc.intent.category.VRAPP\" />\n";
-	}
-
 	bool uses_leanback_category = p_preset->get("package/show_in_android_tv");
 	bool uses_leanback_category = p_preset->get("package/show_in_android_tv");
 	if (uses_leanback_category) {
 	if (uses_leanback_category) {
 		manifest_activity_text += "                <category android:name=\"android.intent.category.LEANBACK_LAUNCHER\" />\n";
 		manifest_activity_text += "                <category android:name=\"android.intent.category.LEANBACK_LAUNCHER\" />\n";
@@ -341,9 +303,6 @@ String _get_application_tag(const Ref<EditorExportPlatform> &p_export_platform,
 	int app_category_index = (int)(p_preset->get("package/app_category"));
 	int app_category_index = (int)(p_preset->get("package/app_category"));
 	bool is_game = app_category_index == APP_CATEGORY_GAME;
 	bool is_game = app_category_index == APP_CATEGORY_GAME;
 
 
-	int xr_mode_index = (int)(p_preset->get("xr_features/xr_mode"));
-	bool uses_xr = xr_mode_index == XR_MODE_OPENXR;
-
 	String manifest_application_text = vformat(
 	String manifest_application_text = vformat(
 			"    <application android:label=\"@string/godot_project_name_string\"\n"
 			"    <application android:label=\"@string/godot_project_name_string\"\n"
 			"        android:allowBackup=\"%s\"\n"
 			"        android:allowBackup=\"%s\"\n"
@@ -360,18 +319,6 @@ String _get_application_tag(const Ref<EditorExportPlatform> &p_export_platform,
 			bool_to_string(p_preset->get("package/retain_data_on_uninstall")),
 			bool_to_string(p_preset->get("package/retain_data_on_uninstall")),
 			bool_to_string(p_has_read_write_storage_permission));
 			bool_to_string(p_has_read_write_storage_permission));
 
 
-	if (uses_xr) {
-		bool hand_tracking_enabled = (int)(p_preset->get("xr_features/hand_tracking")) > XR_HAND_TRACKING_NONE;
-		if (hand_tracking_enabled) {
-			int hand_tracking_frequency_index = p_preset->get("xr_features/hand_tracking_frequency");
-			String hand_tracking_frequency = hand_tracking_frequency_index == XR_HAND_TRACKING_FREQUENCY_LOW ? "LOW" : "HIGH";
-			manifest_application_text += vformat(
-					"        <meta-data tools:node=\"replace\" android:name=\"com.oculus.handtracking.frequency\" android:value=\"%s\" />\n",
-					hand_tracking_frequency);
-			manifest_application_text += "        <meta-data tools:node=\"replace\" android:name=\"com.oculus.handtracking.version\" android:value=\"V2.0\" />\n";
-		}
-	}
-
 	Vector<Ref<EditorExportPlugin>> export_plugins = EditorExport::get_singleton()->get_export_plugins();
 	Vector<Ref<EditorExportPlugin>> export_plugins = EditorExport::get_singleton()->get_export_plugins();
 	for (int i = 0; i < export_plugins.size(); i++) {
 	for (int i = 0; i < export_plugins.size(); i++) {
 		if (export_plugins[i]->supports_platform(p_export_platform)) {
 		if (export_plugins[i]->supports_platform(p_export_platform)) {

+ 0 - 16
platform/android/export/gradle_export_util.h

@@ -61,20 +61,6 @@ static const int APP_CATEGORY_VIDEO = 8;
 static const int XR_MODE_REGULAR = 0;
 static const int XR_MODE_REGULAR = 0;
 static const int XR_MODE_OPENXR = 1;
 static const int XR_MODE_OPENXR = 1;
 
 
-// Supported XR hand tracking modes.
-static const int XR_HAND_TRACKING_NONE = 0;
-static const int XR_HAND_TRACKING_OPTIONAL = 1;
-static const int XR_HAND_TRACKING_REQUIRED = 2;
-
-// Supported XR hand tracking frequencies.
-static const int XR_HAND_TRACKING_FREQUENCY_LOW = 0;
-static const int XR_HAND_TRACKING_FREQUENCY_HIGH = 1;
-
-// Supported XR passthrough modes.
-static const int XR_PASSTHROUGH_NONE = 0;
-static const int XR_PASSTHROUGH_OPTIONAL = 1;
-static const int XR_PASSTHROUGH_REQUIRED = 2;
-
 struct CustomExportData {
 struct CustomExportData {
 	String assets_directory;
 	String assets_directory;
 	bool debug;
 	bool debug;
@@ -116,8 +102,6 @@ String _get_gles_tag();
 
 
 String _get_screen_sizes_tag(const Ref<EditorExportPreset> &p_preset);
 String _get_screen_sizes_tag(const Ref<EditorExportPreset> &p_preset);
 
 
-String _get_xr_features_tag(const Ref<EditorExportPreset> &p_preset);
-
 String _get_activity_tag(const Ref<EditorExportPlatform> &p_export_platform, const Ref<EditorExportPreset> &p_preset, bool p_debug);
 String _get_activity_tag(const Ref<EditorExportPlatform> &p_export_platform, const Ref<EditorExportPreset> &p_preset, bool p_debug);
 
 
 String _get_application_tag(const Ref<EditorExportPlatform> &p_export_platform, const Ref<EditorExportPreset> &p_preset, bool p_has_read_write_storage_permission, bool p_debug);
 String _get_application_tag(const Ref<EditorExportPlatform> &p_export_platform, const Ref<EditorExportPreset> &p_preset, bool p_has_read_write_storage_permission, bool p_debug);