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}">