diff --git a/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp b/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp
index 995f19fce..88f993f20 100644
--- a/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp
+++ b/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp
@@ -169,6 +169,30 @@ bool AndroidPlatformTools::OnPostProcess(CookingData& data)
permissions += String::Format(TEXT("\n "), e.Item);
}
+ // Setup default Android screen orientation
+ auto defaultOrienation = platformSettings->DefaultOrientation;
+ String orientation = String("fullSensor");
+ switch (defaultOrienation)
+ {
+ case AndroidPlatformSettings::ScreenOrientation::Portrait:
+ orientation = String("portrait");
+ break;
+ case AndroidPlatformSettings::ScreenOrientation::PortraitReverse:
+ orientation = String("reversePortrait");
+ break;
+ case AndroidPlatformSettings::ScreenOrientation::LandscapeRight:
+ orientation = String("landscape");
+ break;
+ case AndroidPlatformSettings::ScreenOrientation::LandscapeLeft:
+ orientation = String("reverseLandscape");
+ break;
+ case AndroidPlatformSettings::ScreenOrientation::AutoRotation:
+ orientation = String("fullSensor");
+ break;
+ default:
+ break;
+ }
+
// Setup Android application attributes
String attributes;
if (data.Configuration != BuildConfiguration::Release)
@@ -223,6 +247,7 @@ bool AndroidPlatformTools::OnPostProcess(CookingData& data)
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${PackageName}"), packageName);
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${ProjectVersion}"), projectVersion);
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${AndroidPermissions}"), permissions);
+ EditorUtilities::ReplaceInFile(manifestPath, TEXT("${DefaultOrientation}"), orientation);
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${AndroidAttributes}"), attributes);
const String stringsPath = data.OriginalOutputPath / TEXT("app/src/main/res/values/strings.xml");
EditorUtilities::ReplaceInFile(stringsPath, TEXT("${ProjectName}"), gameSettings->ProductName);
diff --git a/Source/Engine/Platform/Android/AndroidPlatformSettings.h b/Source/Engine/Platform/Android/AndroidPlatformSettings.h
index 9cfe7f880..974a4c488 100644
--- a/Source/Engine/Platform/Android/AndroidPlatformSettings.h
+++ b/Source/Engine/Platform/Android/AndroidPlatformSettings.h
@@ -17,6 +17,37 @@ API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API
DECLARE_SCRIPTING_TYPE_MINIMAL(AndroidPlatformSettings);
API_AUTO_SERIALIZATION();
+ ///
+ /// Android screen orientation options.
+ ///
+ API_ENUM() enum class FLAXENGINE_API ScreenOrientation
+ {
+ ///
+ /// "portrait" mode
+ ///
+ Portrait,
+
+ ///
+ /// "reversePortrait" mode
+ ///
+ PortraitReverse,
+
+ ///
+ /// "landscape" mode
+ ///
+ LandscapeRight,
+
+ ///
+ /// "reverseLandscape" mode
+ ///
+ LandscapeLeft,
+
+ ///
+ /// "fullSensor" mode
+ ///
+ AutoRotation,
+ };
+
///
/// The application package name (eg. com.company.product). Custom tokens: ${PROJECT_NAME}, ${COMPANY_NAME}.
///
@@ -29,6 +60,12 @@ API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API
API_FIELD(Attributes="EditorOrder(100), EditorDisplay(\"General\")")
Array Permissions;
+ ///
+ /// The default screen orientation.
+ ///
+ API_FIELD(Attributes = "EditorOrder(110), EditorDisplay(\"General\")")
+ ScreenOrientation DefaultOrientation = ScreenOrientation::AutoRotation;
+
///
/// Custom icon texture to use for the application (overrides the default one).
///
diff --git a/Source/Platforms/Android/Binaries/Project/app/src/main/AndroidManifest.xml b/Source/Platforms/Android/Binaries/Project/app/src/main/AndroidManifest.xml
index e535cef40..5169e3846 100644
--- a/Source/Platforms/Android/Binaries/Project/app/src/main/AndroidManifest.xml
+++ b/Source/Platforms/Android/Binaries/Project/app/src/main/AndroidManifest.xml
@@ -10,7 +10,7 @@
+ android:screenOrientation="${DefaultOrientation}">