// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "UObject/Object.h" #include "UObject/Class.h" #include "UObject/PropertyPortFlags.h" #include "AudioCompressionSettings.h" #include "IOSRuntimeSettings.generated.h" UENUM() enum class EPowerUsageFrameRateLock : uint8 { /** Frame rate is not limited. */ PUFRL_None = 0 UMETA(DisplayName="None"), /** Frame rate is limited to a maximum of 20 frames per second. */ PUFRL_20 = 20 UMETA(DisplayName="20 FPS"), /** Frame rate is limited to a maximum of 30 frames per second. */ PUFRL_30 = 30 UMETA(DisplayName="30 FPS"), /** Frame rate is limited to a maximum of 60 frames per second. */ PUFRL_60 = 60 UMETA(DisplayName="60 FPS"), }; UENUM() enum class EIOSVersion : uint8 { IOS_Minimum = 15 UMETA(DisplayName = "Minimum, Currently 15.0"), IOS_15 = 15 UMETA(DisplayName = "15.0"), IOS_16 = 16 UMETA(DisplayName = "16.0"), IOS_17 = 17 UMETA(DisplayName = "17.0"), }; // https://support.apple.com/en-ca/HT205073 UENUM() enum class EIOSMetalShaderStandard : uint8 { /** Metal Shader 2.4 is the minimum as of UE5.3*/ IOSMetalSLStandard_Minimum = 0 UMETA(DisplayName="Minimum, Metal v2.4"), /** Metal Shaders Compatible With iOS 16.0/tvOS 16.0 or later (std=metal2.4) */ IOSMetalSLStandard_2_4 = 7 UMETA(DisplayName="Metal v2.4 (iOS 15.0/tvOS 15.0 for older devices)"), /** Metal Shaders Compatible With iOS 16.0/tvOS 16.0 or later (std=metal3.0) */ IOSMetalSLStandard_3_0 = 8 UMETA(DisplayName="Metal v3.0 (iOS 16.0/tvOS 16.0)"), /** Metal Shaders Compatible With iOS 17.0/tvOS 17.0 or later (std=metal3.1) */ IOSMetalSLStandard_3_1 = 9 UMETA(DisplayName="Metal v3.1 (iOS 17.0/tvOS 17.0)"), }; UENUM() enum class EIOSLandscapeOrientation : uint8 { /** Landscape Left */ LandscapeLeft = 0 UMETA(DisplayName = "Landscape (left home button)"), /** Landscape Right */ LandscapeRight = 1 UMETA(DisplayName = "Landscape (right home button)"), }; UENUM() enum class EIOSCloudKitSyncStrategy : uint8 { /** Only at game start */ None = 0 UMETA(DisplayName = "Never (do not use iCloud for Load/Save Game)"), /** Only at game start */ OnlyAtGameStart = 1 UMETA(DisplayName = "At game start only (iOS)"), /** Always */ Always = 2 UMETA(DisplayName = "Always (whenever LoadGame is called)"), }; /** * IOS Build resource file struct, used to serialize filepaths to the configs for use in the build system, */ USTRUCT() struct FIOSBuildResourceFilePath { GENERATED_USTRUCT_BODY() /** * Custom export item used to serialize FIOSBuildResourceFilePath types as only a filename, no garland. */ bool ExportTextItem(FString& ValueStr, FIOSBuildResourceFilePath const& DefaultValue, UObject* Parent, int32 PortFlags, UObject* ExportRootScope) const { ValueStr += FilePath; return true; } /** * Custom import item used to parse ini entries straight into the filename. */ bool ImportTextItem(const TCHAR*& Buffer, int32 PortFlags, UObject* Parent, FOutputDevice* ErrorText) { FilePath = Buffer; return true; } /** * The path to the file. */ UPROPERTY(EditAnywhere, Category = FilePath) FString FilePath; }; /** * Setup our resource filepath to make it easier to parse in UBT */ template<> struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2 { enum { WithExportTextItem = true, WithImportTextItem = true, }; }; /** * IOS Build resource file struct, used to serialize Directorys to the configs for use in the build system, */ USTRUCT() struct FIOSBuildResourceDirectory { GENERATED_USTRUCT_BODY() /** * Custom export item used to serialize FIOSBuildResourceDirectory types as only a filename, no garland. */ bool ExportTextItem(FString& ValueStr, FIOSBuildResourceDirectory const& DefaultValue, UObject* Parent, int32 PortFlags, UObject* ExportRootScope) const { ValueStr += Path; return true; } /** * Custom import item used to parse ini entries straight into the filename. */ bool ImportTextItem(const TCHAR*& Buffer, int32 PortFlags, UObject* Parent, FOutputDevice* ErrorText) { Path = Buffer; return true; } /** * The path to the file. */ UPROPERTY(EditAnywhere, Category = Directory) FString Path; }; /** * Setup our resource Directory to make it easier to parse in UBT */ template<> struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2 { enum { WithExportTextItem = true, WithImportTextItem = true, }; }; /** * Implements the settings for the iOS target platform. */ UCLASS(config=Engine, defaultconfig) class IOSRUNTIMESETTINGS_API UIOSRuntimeSettings : public UObject { public: GENERATED_UCLASS_BODY() // Should StoreKit support be enabled? UPROPERTY(GlobalConfig, EditAnywhere, Category = Online, meta = (ConfigHierarchyEditable)) bool bEnableStoreKitSupport; // Should Game Center support (iOS Online Subsystem) be enabled? UPROPERTY(GlobalConfig, EditAnywhere, Category = Online, meta = (ConfigHierarchyEditable)) bool bEnableGameCenterSupport; // Should Cloud Kit support (iOS Online Subsystem) be enabled? UPROPERTY(GlobalConfig, EditAnywhere, Category = Online) bool bEnableCloudKitSupport; // iCloud Read stategy UPROPERTY(GlobalConfig, EditAnywhere, Category = Online, meta = (DisplayName = "iCloud save files sync strategy"), meta = (EditCondition = "bEnableCloudKitSupport")) EIOSCloudKitSyncStrategy IOSCloudKitSyncStrategy; // Should push/remote notifications support (iOS Online Subsystem) be enabled? UPROPERTY(GlobalConfig, EditAnywhere, Category = Online) bool bEnableRemoteNotificationsSupport; // Should background fetch support be enabled? UPROPERTY(GlobalConfig, EditAnywhere, Category = Online) bool bEnableBackgroundFetch; // Whether or not to compile iOS Metal shaders for the Mobile renderer (requires iOS 8+ and an A7 processor). UPROPERTY(GlobalConfig, EditAnywhere, Category = Rendering, meta = (DisplayName = "Metal Mobile Renderer")) bool bSupportsMetal; // Whether or not to compile iOS Metal shaders for the desktop renderer (requires iOS 10+ and an A10 processor) UPROPERTY(GlobalConfig, EditAnywhere, Category = Rendering, meta = (DisplayName = "Metal Desktop Renderer")) bool bSupportsMetalMRT; // Should the app be compatible for high refresh rate (iPhone only) UPROPERTY(GlobalConfig, EditAnywhere, Category = Rendering, meta = (DisplayName = "Enable ProMotion 120Hz on supported iPhone devices")) bool bSupportHighRefreshRates; /** Whether to enable LOD streaming for landscape visual meshes. Requires Metal support. */ UPROPERTY(GlobalConfig, EditAnywhere, Category = Rendering, Meta = (DisplayName = "Stream landscape visual mesh LODs")) bool bStreamLandscapeMeshLODs; // Minimum iOS version this game supports UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Minimum iOS Version")) EIOSVersion MinimumiOSVersion; UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Override location of Metal toolchain")) FIOSBuildResourceDirectory WindowsMetalToolchainOverride; // Enable generation of dSYM file UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Generate dSYMs for code debugging and profiling")) bool bGeneratedSYMFile; // Enable generation of dSYM bundle UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Generate dSYMs as a bundle for third party crash tools"), meta = (EditCondition = "bGeneratedSYMFile")) bool bGeneratedSYMBundle; // Enable generation of a .udebugsymbols file, which allows offline, platform-independent symbolication for the Malloc Profiler or external crash reporting tools. Requires a dSYM file or bundle. UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Generate .udebugsymbols file")) bool bGenerateCrashReportSymbols; // Enable generation of xcode archive package UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Generate xcode archive package")) bool bGenerateXCArchive; // Does the app require use of NON-standard encryption UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "ITSAppUsesNonExemptEncryption plist value")) bool bUsesNonExemptEncryption; // If bUsesNonExemptEncryption, set the ITSEncryptionExportComplianceCode UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (EditCondition = "bUsesNonExemptEncryption", DisplayName = "Set ITSEncryptionExportComplianceCode")) FString ITSEncryptionExportComplianceCode; // Enable Advertising Identified UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Enable Advertising Identified (IDFA)")) bool bEnableAdvertisingIdentifier; // Any additional linker flags to pass to the linker in non-shipping builds UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Additional Non-Shipping Linker Flags", ConfigHierarchyEditable)) FString AdditionalLinkerFlags; // Any additional linker flags to pass to the linker in shipping builds UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Additional Shipping Linker Flags", ConfigHierarchyEditable)) FString AdditionalShippingLinkerFlags; // Any additional plist key/value data utilizing \n for a new line UPROPERTY(GlobalConfig, EditAnywhere, Category = Build) FString AdditionalPlistData; // List of any entitlements we require. The app will not initialize if the specified entitlements are not available. UPROPERTY(GlobalConfig, EditAnywhere, Category = Build) TArray RequiredEntitlements; // Whether or not to add support for iPad devices UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Supports iPad")) bool bSupportsIPad; // Whether or not to add support for iPhone devices UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Supports iPhone")) bool bSupportsIPhone; // Whether or not the iPad app supports Split View (also needed for StageManager support) UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Enable iPad Split View")) bool bEnableSplitView; // Whether or not iOS Simulator support should be enabled for this project (Experimental) UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Enable iOS Simulator Support (Experimental)", ConfigRestartRequired = true)) bool bEnableSimulatorSupport; // Whether or not to enable iOS 16 dynamic linker bug workaround (bug fixed in iOS 17+, not necesssary if targetting 17.0 or higher Minimum iOS Version) UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (DisplayName = "Enable iOS 16 Dynamic Linker Bug Workaround (Experimental)")) bool bEnableIOS16DynLinkerBugWAR; /** Set the maximum frame rate to save on power consumption */ UPROPERTY(GlobalConfig, EditAnywhere, Category = PowerUsage, meta = (ConfigHierarchyEditable)) EPowerUsageFrameRateLock FrameRateLock; //Whether or not to allow taking the MaxRefreshRate from the device instead of a constant (60fps) in IOSPlatformFramePacer UPROPERTY(GlobalConfig, EditAnywhere, Category = PowerUsage, meta = (ConfigHierarchyEditable)) bool bEnableDynamicMaxFPS; // Enable the use of RSync for remote builds on a mac UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (DisplayName = "Use RSync for building IOS", ConfigHierarchyEditable)) bool bUseRSync; // The name or ip address of the remote mac which will be used to build IOS UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (ConfigHierarchyEditable)) FString RemoteServerName; // The mac users name which matches the SSH Private Key, for remote builds using RSync. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bUseRSync", DisplayName = "Username on Remote Server", ConfigHierarchyEditable)) FString RSyncUsername; // Optional path on the remote mac where the build files will be copied. If blank, ~/UE5/Builds will be used. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (ConfigHierarchyEditable)) FString RemoteServerOverrideBuildPath; // The install directory of cwrsync. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bUseRSync", ConfigHierarchyEditable)) FIOSBuildResourceDirectory CwRsyncInstallPath; // The existing location of an SSH Key found by Unreal Engine. UPROPERTY(VisibleAnywhere, Category = "Remote Build", meta = (DisplayName = "Found Existing SSH permissions file")) FString SSHPrivateKeyLocation; // The path of the ssh permissions key to be used when connecting to the remote server. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bUseRSync", DisplayName = "Override existing SSH permissions file", ConfigHierarchyEditable)) FIOSBuildResourceFilePath SSHPrivateKeyOverridePath; // Support a secondary remote Mac to support to facilitate iOS/tvOS debug ? UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (DisplayName = "Enable Secondary remote Mac")) bool bSupportSecondaryMac; // The name or ip address of the remote mac which will be used to build IOS UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bSupportSecondaryMac", ConfigHierarchyEditable)) FString SecondaryRemoteServerName; // The secondary mac users name which matches the SSH Private Key, for remote builds using RSync. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bSupportSecondaryMac", DisplayName = "Username on Secondary Remote Server", ConfigHierarchyEditable)) FString SecondaryRSyncUsername; // Optional path on the secondary remote mac where the build files will be copied. If blank, ~/UE5/Builds will be used. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bSupportSecondaryMac", ConfigHierarchyEditable)) FString SecondaryRemoteServerOverrideBuildPath; // The install directory of cwrsync. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bSupportSecondaryMac", ConfigHierarchyEditable)) FIOSBuildResourceDirectory SecondaryCwRsyncInstallPath; // The existing location of an SSH Key found by Unreal Engine. UPROPERTY(VisibleAnywhere, Category = "Remote Build", meta = (EditCondition = "bSupportSecondaryMac", DisplayName = "Found Existing SSH permissions file for Secondary Mac")) FString SecondarySSHPrivateKeyLocation; // The path of the ssh permissions key to be used when connecting to the remote server. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Remote Build", meta = (EditCondition = "bSupportSecondaryMac", DisplayName = "Override existing SSH permissions file for Secondary Mac", ConfigHierarchyEditable)) FIOSBuildResourceFilePath SecondarySSHPrivateKeyOverridePath; // Should the app be multi-users compatible on tvOS ? Requires the com.apple.developer.user-management entitlement. UPROPERTY(GlobalConfig, EditAnywhere, Category = "Build", meta = (DisplayName = "Support user switching on tvOS")) bool bUserSwitching; // If checked, the game will be able to handle multiple gamepads at the same time (the Siri Remote is a gamepad) UPROPERTY(GlobalConfig, EditAnywhere, Category = Input, meta = (DisplayName = "Multiple gamepads support")) bool bGameSupportsMultipleActiveControllers; // If checked, the Siri Remote can be rotated to landscape view UPROPERTY(GlobalConfig, EditAnywhere, Category = Input, meta = (DisplayName = "Allow AppleTV Remote landscape mode")) bool bAllowRemoteRotation; // If checked, Bluetooth connected controllers will send input UPROPERTY(GlobalConfig, EditAnywhere, Category = Input, meta = (DisplayName = "Allow MFi (Bluetooth) controllers")) bool bAllowControllers; // Block force feedback on the device when controllers are attached. UPROPERTY(GlobalConfig, EditAnywhere, Category = Input, meta = (DisplayName = "Block force feedback on the device when controllers are attached")) bool bControllersBlockDeviceFeedback; // Disables usage of device motion data. If application does not use motion data disabling it will improve battery life UPROPERTY(GlobalConfig, EditAnywhere, Category = Input, meta = (DisplayName = "Disable Motion Controls")) bool bDisableMotionData; // Supports default portrait orientation. Landscape will not be supported. UPROPERTY(GlobalConfig, EditAnywhere, Category = DeviceOrientations) uint32 bSupportsPortraitOrientation : 1; // Supports upside down portrait orientation. Landscape will not be supported. UPROPERTY(GlobalConfig, EditAnywhere, Category = DeviceOrientations) uint32 bSupportsUpsideDownOrientation : 1; // Supports left landscape orientation. Portrait will not be supported. UPROPERTY(GlobalConfig, EditAnywhere, Category = DeviceOrientations) uint32 bSupportsLandscapeLeftOrientation : 1; // Supports right landscape orientation. Portrait will not be supported. UPROPERTY(GlobalConfig, EditAnywhere, Category = DeviceOrientations) uint32 bSupportsLandscapeRightOrientation : 1; // Whether files created by the app will be accessible from the iTunes File Sharing feature UPROPERTY(GlobalConfig, EditAnywhere, Category = FileSystem, meta = (DisplayName = "Support iTunes File Sharing")) uint32 bSupportsITunesFileSharing : 1; // Whether files created by the app will be accessible from within the device's Files app (requires iTunes File Sharing) UPROPERTY(GlobalConfig, EditAnywhere, Category = FileSystem, meta = (DisplayName = "Support Files App", EditCondition = "bSupportsITunesFileSharing")) uint32 bSupportsFilesApp : 1; // The Preferred Orientation will be used as the initial orientation at launch when both Landscape Left and Landscape Right orientations are to be supported. UPROPERTY(GlobalConfig, EditAnywhere, Category = DeviceOrientations, meta = (DisplayName = "Preferred Landscape Orientation")) EIOSLandscapeOrientation PreferredLandscapeOrientation; // Specifies the the display name for the application. This will be displayed under the icon on the device. UPROPERTY(GlobalConfig, EditAnywhere, Category = BundleInformation) FString BundleDisplayName; // Specifies the the name of the application bundle. This is the short name for the application bundle. UPROPERTY(GlobalConfig, EditAnywhere, Category = BundleInformation) FString BundleName; // Specifies the bundle identifier for the application. UPROPERTY(GlobalConfig, EditAnywhere, Category = BundleInformation) FString BundleIdentifier; // Specifies the version for the application. UPROPERTY(GlobalConfig, EditAnywhere, Category = BundleInformation) FString VersionInfo; /** * Choose whether to use a custom LaunchScreen.Storyboard as a Launchscreen. To use this option, create a storyboard in Xcode and * copy it named LaunchScreen.storyboard in Build/IOS/Resources/Interface under your Project folder. This will be compiled and * copied to the bundle app and the Launch screen image above will not be included in the app. * When using assets in your custom LaunchScreen.storyboard, add them in Build/IOS/Resources/Interface/Assets and they will be included. */ UPROPERTY(GlobalConfig, EditAnywhere, Category = LaunchScreen, meta = (DisplayName = "Custom Launchscreen Storyboard (experimental)", EditCondition = "!MacTargetPlatform.XcodeProjectSettings.ShouldDisableIOSSettings")) bool bCustomLaunchscreenStoryboard; // Whether the app supports Facebook UPROPERTY(GlobalConfig, EditAnywhere, Category = Online) bool bEnableFacebookSupport; // Facebook App ID obtained from Facebook's Developer Centre UPROPERTY(GlobalConfig, EditAnywhere, Category = Online, meta = (EditCondition = "bEnableFacebookSupport")) FString FacebookAppID; // Mobile provision to utilize when signing. // This value is stripped out when making builds. UPROPERTY(GlobalConfig, EditAnywhere, Category = Build) FString MobileProvision; // Signing certificate to utilize when signing. // This value is stripped out when making builds. UPROPERTY(GlobalConfig, EditAnywhere, Category = Build) FString SigningCertificate; // Whether to use automatic signing through Xcode UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (EditCondition = "!MacTargetPlatform.XcodeProjectSettings.ShouldDisableIOSSettings")) bool bAutomaticSigning; // The team ID of the apple developer account to be used to autmatically sign IOS builds. // This can be overridden in Turnkey with "RunUAT Turnkey -command=ManageSettings" // This value is stripped out when making builds. UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (ConfigHierarchyEditable)) FString IOSTeamID; // The username/email to use when logging in to DevCenter with Turnkey. // This can be overridden in Turnkey with "RunUAT Turnkey -command=ManageSettings" // This value is stripped out when making builds. UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (ConfigHierarchyEditable)) FString DevCenterUsername; // The password to use when logging in to DevCenter with Turnkey. NOTE: This is saved in plaintext, and is meant for shared accounts! // This value is stripped out when making builds. UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (ConfigHierarchyEditable)) FString DevCenterPassword; // Whether the app supports HTTPS UPROPERTY(GlobalConfig, EditAnywhere, Category = Online, meta = (DisplayName = "Allow web connections to non-HTTPS websites")) bool bDisableHTTPS; // The Metal shader language version which will be used when compiling the shaders. UPROPERTY(EditAnywhere, config, Category=Rendering, meta = (DisplayName = "Metal Shader Standard To Target", ConfigRestartRequired = true)) uint8 MetalLanguageVersion; /** * Whether to use the Metal shading language's "fast" intrinsics. * Fast intrinsics assume that no NaN or INF value will be provided as input, * so are more efficient. However, they will produce undefined results if NaN/INF * is present in the argument/s. */ UPROPERTY(EditAnywhere, config, Category=Rendering, meta = (DisplayName = "Use Fast-Math intrinsics", ConfigRestartRequired = true)) bool UseFastIntrinsics; /** * Whether to force Metal shaders to use 32bit floating point precision even when the shader uses half floats. * Half floats are much more efficient when they are availble but have less accuracy over large ranges, * as such some projects may need to use 32bit floats to ensure correct rendering. */ UPROPERTY(EditAnywhere, config, Category=Rendering, meta = (DisplayName = "Force 32bit Floating Point Precision", ConfigRestartRequired = true)) bool ForceFloats; /** * Whether to use of Metal shader-compiler's -ffast-math optimisations. * Fast-Math performs algebraic-equivalent & reassociative optimisations not permitted by the floating point arithmetic standard (IEEE-754). * These can improve shader performance at some cost to precision and can lead to NaN/INF propagation as they rely on * shader inputs or variables not containing NaN/INF values. By default fast-math is enabled for performance. */ UPROPERTY(EditAnywhere, config, Category=Rendering, meta = (DisplayName = "Enable Fast-Math optimisations", ConfigRestartRequired = true)) bool EnableMathOptimisations; /** Whether to compile shaders using a tier Indirect Argument Buffers. */ UPROPERTY(config, EditAnywhere, Category = Rendering, Meta = (DisplayName = "Tier of Indirect Argument Buffers to use when compiling shaders", ConfigRestartRequired = true)) int32 IndirectArgumentTier; /** Supports Apple A8 devices. * Disables 3d texture compression * Virtual Textures are not supported on A8 devices due to missing hardware features * This will disable also Base_Vertex semantics in the msl which may have negative consequences if shaders rely on it */ UPROPERTY(config, EditAnywhere, Category = Rendering, Meta = (DisplayName = "Support Apple A8", ConfigRestartRequired = true)) bool bSupportAppleA8; // Whether or not the keyboard should be usable on it's own without a UITextField UPROPERTY(GlobalConfig, EditAnywhere, Category = Input) bool bUseIntegratedKeyboard; // Whether or not we should receive the keyboard's visibility event (Shown/Hidden) regardless of the IntegratedKeyboard being activated or not. UPROPERTY(GlobalConfig, EditAnywhere, Category = Input) bool bEnableVirtualKeyboardVisibilityEvent; // Whether or not the EditableText Widget is allowed to enable IntegratedKeyboard. bUseIntegratedKeyboard enabled will disregard this setting. UPROPERTY(GlobalConfig, EditAnywhere, Meta=(EditCondition = "!bUseIntegratedKeyboard"), Category = Input) bool bAllowWidgetEnablingIntegratedKeyboard; /** Sample rate to run the audio mixer with. */ UPROPERTY(config, EditAnywhere, Category = "Audio", Meta = (DisplayName = "Audio Mixer Sample Rate")) int32 AudioSampleRate; /** The amount of audio to compute each callback block. Lower values decrease latency but may increase CPU cost. */ UPROPERTY(config, EditAnywhere, Category = "Audio", meta = (ClampMin = "512", ClampMax = "4096", DisplayName = "Callback Buffer Size")) int32 AudioCallbackBufferFrameSize; /** The number of buffers to keep enqueued. More buffers increases latency, but can compensate for variable compute availability in audio callbacks on some platforms. */ UPROPERTY(config, EditAnywhere, Category = "Audio", meta = (ClampMin = "1", UIMin = "1", DisplayName = "Number of Buffers To Enqueue")) int32 AudioNumBuffersToEnqueue; /** The max number of channels (voices) to limit for this platform. The max channels used will be the minimum of this value and the global audio quality settings. A value of 0 will not apply a platform channel count max. */ UPROPERTY(config, EditAnywhere, Category = "Audio", meta = (ClampMin = "0", UIMin = "0", DisplayName = "Max Channels")) int32 AudioMaxChannels; /** The number of workers to use to compute source audio. Will only use up to the max number of sources. Will evenly divide sources to each source worker. */ UPROPERTY(config, EditAnywhere, Category = "Audio", meta = (ClampMin = "0", UIMin = "0", DisplayName = "Number of Source Workers")) int32 AudioNumSourceWorkers; /** Which of the currently enabled spatialization plugins to use. */ UPROPERTY(config, EditAnywhere, Category = "Audio") FString SpatializationPlugin; /** Which of the currently enabled source data override plugins to use. */ UPROPERTY(config, EditAnywhere, Category = "Audio") FString SourceDataOverridePlugin; /** Which of the currently enabled reverb plugins to use. */ UPROPERTY(config, EditAnywhere, Category = "Audio") FString ReverbPlugin; /** Which of the currently enabled occlusion plugins to use. */ UPROPERTY(config, EditAnywhere, Category = "Audio") FString OcclusionPlugin; /** Various overrides for how this platform should handle compression and decompression */ UPROPERTY(config, EditAnywhere, Category = "Audio") FPlatformRuntimeAudioCompressionOverrides CompressionOverrides; /** Whether this app's audio can be played when using other apps or on the springboard */ UPROPERTY(config, EditAnywhere, Category = "Audio", meta = (DisplayName = "Enable Background Audio")) bool bSupportsBackgroundAudio; /** This determines the max amount of memory that should be used for the cache at any given time. If set low (<= 8 MB), it lowers the size of individual chunks of audio during cook. */ UPROPERTY(GlobalConfig, EditAnywhere, Category = "Audio|CookOverrides|Stream Caching", meta = (DisplayName = "Max Cache Size (KB)")) int32 CacheSizeKB; /** This overrides the default max chunk size used when chunking audio for stream caching (ignored if < 0) */ UPROPERTY(GlobalConfig, EditAnywhere, Category = "Audio|CookOverrides|Stream Caching", meta = (DisplayName = "Max Chunk Size Override (KB)")) int32 MaxChunkSizeOverrideKB; UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides") bool bResampleForDevice; /** Quality Level to COOK SoundCues at (if set, all other levels will be stripped by the cooker). */ UPROPERTY(GlobalConfig, EditAnywhere, Category = "Audio|CookOverrides", meta = (DisplayName = "Sound Cue Cook Quality")) int32 SoundCueCookQualityIndex = INDEX_NONE; // Mapping of which sample rates are used for each sample rate quality for a specific platform. UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides|ResamplingQuality", meta = (DisplayName = "Max")) float MaxSampleRate; UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides|ResamplingQuality", meta = (DisplayName = "High")) float HighSampleRate; UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides|ResamplingQuality", meta = (DisplayName = "Medium")) float MedSampleRate; UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides|ResamplingQuality", meta = (DisplayName = "Low")) float LowSampleRate; UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides|ResamplingQuality", meta = (DisplayName = "Min")) float MinSampleRate; // Scales all compression qualities when cooking to this platform. For example, 0.5 will halve all compression qualities, and 1.0 will leave them unchanged. UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides") float CompressionQualityModifier; // When set to anything beyond 0, this will ensure any SoundWaves longer than this value, in seconds, to stream directly off of the disk. UPROPERTY(GlobalConfig) float AutoStreamingThreshold; virtual void PostReloadConfig(class FProperty* PropertyThatWasLoaded) override; #if WITH_EDITOR // UObject interface virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; virtual void PostInitProperties() override; // End of UObject interface #endif };