You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
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
This commit is contained in:
committed by
Yuri Sizov
parent
d17811c814
commit
b52e1be2c2
@@ -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>
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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)) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user