Files
UnrealEngineUWP/Engine/Source/Developer/Android/AndroidPlatformEditor/Private/AndroidTargetSettingsCustomization.cpp
Matthew Griffin c323066b91 Copying //UE4/Release-Staging-4.14 to //UE4/Dev-Main (Source: //UE4/Release-4.14 @ 3182951)
#lockdown Nick.Penwarden
#rb none

==========================
MAJOR FEATURES + CHANGES
==========================

Change 3182951 on 2016/11/02 by Luke.Thatcher

	[RELEASE] [PS4] [!] Fix "play together" invitations handling in PS4 OSS.
	 - Wrong condition in GetUserWebApiContext. Web API contexts can be created for local users (i.e. FUniqueNetIdPS4 instances with a valid SceUserServiceUserId).

	#jira UE-38017

Change 3182892 on 2016/11/02 by Luke.Thatcher

	[RELEASE] [PS4] [!] Fix incorrect identity API implementation in PS4 OSS.
	 - System events directly drive the login state of a user. This also removes the blocking call to sceNpGetState().
	 - GetAuthToken is only called if the engine calls IOnlineIdentity::Login().

	#jira UE-38017

Change 3182767 on 2016/11/02 by Luke.Thatcher

	[RELEASE] [PS4] [!] Fix PS4 session invitations.
	 - Was calling old Web API with SceNpOnlineId where SceNpAccountId is needed.
	 - Replaced with NpToolkit2's session invitation API.

	#jira UE-38020

Change 3182766 on 2016/11/02 by Luke.Thatcher

	[RELEASE] [PS4] [!] Fix assert in FUniqueNetIdPS4::FindOrCreate. We were assuming an online-only ID could never become a local ID. This isn't the case in the following scenario:

	 - Two users join a session on two separate PS4s.
	 - One user signs into the other user's PS4 with the same account, with a second controller. PSN logs him out of the first PS4.
	 - That user's Net ID has now migrated from being online-only, to local-with-online. This is a case that was not handled.

	#jira UE-38017 UE-38020

Change 3182765 on 2016/11/02 by Luke.Thatcher

	[RELEASE] [PS4] [~] Additional logging for PS4 OSS "Play Together".

	#jira UE-38017 UE-38020

Change 3182633 on 2016/11/01 by Jack.Porter

	Fix crash sculpting a landscape with grass that uses the landscape's lightmap, when lighting has not been built
	#jira UE-38042

Change 3182332 on 2016/11/01 by Mieszko.Zielinski

	Added a sanity check to UNavigationSystem::AddElementToNavOctree to guard agains DirtyElement.NavInterface being null #UE4

	#jira UE-37588

Change 3182321 on 2016/11/01 by Dmitry.Rekman

	Updated READMEs for 4.14 (UE-38059).

	#jira UE-38059

Change 3182231 on 2016/11/01 by Mitchell.Wilson

	Adding Is Valid node in Retargeting_WorldInteractionBP to resolve warning.
	#jira UE-38079

Change 3182164 on 2016/11/01 by Matt.Kuhlenschmidt

	Fix alll collision being disabled if you dont auto-generate a simple hull when importing an FBX

	#jira UE-38091

Change 3182017 on 2016/11/01 by Chris.Babcock

	Disable glVertexAttribIPointer on PowerVR Rogue
	#jira UE-38074
	#ue4
	#android

Change 3181942 on 2016/11/01 by Mitchell.Wilson

	Resolving multiple warnings in CIS for Elemental Demo.
	#jira UE-38075

Change 3181941 on 2016/11/01 by Nick.Shin

	PhysX Bulid Automation script update

	#jira UE-37329  'Compile UE4Game HTML5' - 300 Warnings

Change 3181939 on 2016/11/01 by Ryan.Vance

	#jira UE-38072

	We need to add a hook that can be called after native present has finished for SteamVR.

	PostPresentHandoff should be called when using the interleaved compositor immediately after we've submitted our eye buffers and called present for the mirror window. This unblocks the compositor process so it can do it's re-projection work. Otherwise it will block until we call WaitGetPoses which is a ways into the next frame.

Change 3181849 on 2016/11/01 by Nick.Shin

	jukka's (Mozilla) fixes to SSE2 and GL issues for HTML5
	jukka's (Mozilla) python scripts to build ThirdParty HTML5 libs

	the python scripts will need tweaking - they were moved from their original locations from:
	fd48bc0e4a

	the CMakeLists.txt (and one configure.ac) files are defiinitely used from the (bash) shell build script (to build thirdparty libs for HTML5)...

	update existing (bash shell script and UE4 c#) build files to use the new "incoming" emsdk

	#jira UE-37329 -'Compile UE4Game HTML5' - 300 Warnings

Change 3181848 on 2016/11/01 by Nick.Shin

	update compiled ThirdParty HTML5 libs using new emscripten tool chain (CL:#3180924)

	#jira UE-37329 - //UE4/Main: Step 'Compile UE4Game HTML5' - 300 Warnings

Change 3181838 on 2016/11/01 by Nick.Shin

	new emscripten tool chain configured by jukka from Mozilla

	see Engine/Extras/ThirdPartyNotUE/emsdk/emscripten/incoming/EPIC_VERSION for details on where did this version come from

	#jira UE-37329 - //UE4/Main: Step 'Compile UE4Game HTML5' - 300 Warnings

Change 3181611 on 2016/11/01 by Allan.Bentham

	Recreate vulkan swapchain after a pause/resume on android.
	#jira UE-36454

Change 3181451 on 2016/11/01 by Chris.Wood

	CrashReportClient no longer attempts to restart Launcher-run Editors via IPC with the Launcher. They are now restarted directly.
	[UE-37794] - Send and Restart from Crash Reporter Opens Project Browser

	Launcher can't accept command line args when restarting an application so it can't restart the editor with the right project.
	Also fixes broken SlateReflector in CRC (switched off in checked in version)

	#jira UE-37794

Change 3181117 on 2016/11/01 by Dmitriy.Dyomin

	Fixed: Text Actors not Rendering on Mobile
	PowerVR based devices were rendring opaque objects twice
	#jira UE-37949

Change 3181102 on 2016/11/01 by Jack.Porter

	Fix for editor crash during Landscape sculpting on pressing Ctrl+z (Subdivision enabled in material)
	#jira UE-36050

Change 3180851 on 2016/10/31 by Daniel.Wright

	Ray Traced Distance Field shadows must be projected last, since they overlap the depth range as Far CSM.  Fixes Kite demo medium-distance shadowing.
	#jira UE-37793

Change 3180844 on 2016/10/31 by Michael.Trepka

	Disabled high-DPI in Mac CrashReportClient

	#jira UE-37697

Change 3180803 on 2016/10/31 by Michael.Trepka

	Setup Mac Metal layer on the main thread to solve issues with empty game window when showing a separate log window.

	#jira UE-37998

Change 3180764 on 2016/10/31 by zachary.wilson

	Checkking in content for Lighting scenarios test, currently incomplete but needed for bug repro

	#jira UE-29618

Change 3180666 on 2016/10/31 by Dmitry.Rekman

	Fix Linux client & server hang when decoding voice chat (UE-36108).

	- break out of voice channel while loop if unable to serialize the voice packet data.
	- fixed by JoshM

	#jira UE-36108

Change 3180428 on 2016/10/31 by Mitchell.Wilson

	Rebuilt lighting in all Content Examples levels and saved to resolve warnings.
	#jira UE-37880

Change 3180399 on 2016/10/31 by Dmitry.Rekman

	Linux: revert to old commandline switch -binnedmalloc (UE-38001).

	#jira UE-38001

Change 3180298 on 2016/10/31 by Steve.Robb

	Extra information about which class has failed to have its CppStructOps initialized.

	#jira UE-37921

Change 3180289 on 2016/10/31 by John.Pollard

	Fix crash in FCurlHttpRequest::DebugCallback
	+ Specify the string length to FString's constructor as the result from StringCast is not null terminated if the string's length is specified (instead of assuming null termination).
	#jira UE-36658

Change 3180200 on 2016/10/31 by Benjamin.Hyder

	Updating QA-Materials to include BuiltData

	#jira UE-29618

Change 3180173 on 2016/10/31 by Nick.Whiting

	Fixing up static analysis warning about array size in GoogleVRHMD code

	#jira UE-38007

Change 3180123 on 2016/10/31 by ryan.brucks

	#jira UE-35977
	hooked up missing transform node inside of newly added function so that it works with variable rotations.

Change 3180108 on 2016/10/31 by Benjamin.Hyder

	Updating QA-Effects map to include BuiltData

	#jira UE-29618

Change 3180104 on 2016/10/31 by Marc.Audy

	Don't recreate the render state if the component got unregistered in the interim.
	#jira UE-37968

Change 3180084 on 2016/10/31 by Allan.Bentham

	Use glVertexAttribIPointer for ES3.
	Enable SupportsTextureMaxLevel for ES3.
	ensure GL_HALF_FLOAT is used for vertex half float format on ES3 (instead of GL_HALF_FLOAT_OES)
	Fix assert when previewing ES3.1 with PC OpenGL.
	#jira UE-37472

Change 3180082 on 2016/10/31 by Luke.Thatcher

	[RELEASE] [PS4] [-] Back out PS4 OSS warnings filter in UBT output (original CL 3150360).
	 - We weren't relying on this anyway, since the build machines are filtering based on a perl script (See CL 3151027)

	#jira UEPLAT-1424

Change 3180044 on 2016/10/31 by Michael.Trepka

	Don't create additional autorelease pool for Metal context on the game thread.

	#jira UE-37894

Change 3180023 on 2016/10/31 by Luke.Thatcher

	[RELEASE] [PS4] [^] Merge (as edit) PlayStation 4 Online Subsystem refactor for Sony SDK 4.008.061 (CL 3178249) from //UE4/Dev-Platform to OrionGame in //UE4/Release-4.14

	Original CL description:
	[~] Upgrade PlayStation 4 Online Subsystem to be compliant with Sony's new APIs in SDK 4.008.061.
	 - Replaced deprecated APIs with new ones.
	 - Replaced NpToolkit with NpToolkit2.
	 - Refactor of FUniqueNetIdPS4 and related code. FUniqueNetIdPS4 is now immutable and immovable.
	 - Added online ID cache system, which calls out to Sony's new ID Mapper Web API.

	Contains a breaking change in FUniqueNetId
	 - FUniqueNetId::ToString() now returns the SceNpAccountId string of a user, rather than the SceNpOnlineId string.
	 - Custom backends which rely on this string to identify users will need to support SceNpAccountIds, and map them to existing accounts.

	#jira UEPLAT-1424

Change 3179973 on 2016/10/31 by Sam.Deiter

	#Jira UEDOC - 3957
	#UE4 Docs: Fixing typos in the landscape tutorials for bug UEDOC - 3957
	#Code_Review lauren.ridge, jeff.wilson, ian.shadden, wes.bunn, chase.mcallister, robert.gervais

Change 3179930 on 2016/10/31 by Luke.Thatcher

	[RELEASE] [PS4] [^] Merge (as edit) PlayStation 4 Online Subsystem refactor for Sony SDK 4.008.061 (CL 3178249) from //UE4/Dev-Platform to //UE4/Release-4.14

	Original CL description:
	[~] Upgrade PlayStation 4 Online Subsystem to be compliant with Sony's new APIs in SDK 4.008.061.
	 - Replaced deprecated APIs with new ones.
	 - Replaced NpToolkit with NpToolkit2.
	 - Refactor of FUniqueNetIdPS4 and related code. FUniqueNetIdPS4 is now immutable and immovable.
	 - Added online ID cache system, which calls out to Sony's new ID Mapper Web API.

	Contains a breaking change in FUniqueNetId
	 - FUniqueNetId::ToString() now returns the SceNpAccountId string of a user, rather than the SceNpOnlineId string.
	 - Custom backends which rely on this string to identify users will need to support SceNpAccountIds, and map them to existing accounts.

	#jira UEPLAT-1424

Change 3179539 on 2016/10/31 by Jack.Porter

	Fix crash when Toggling Landscape Mode with Hidden Sub-Level containing a Landscape
	#jira UE-37954

Change 3179309 on 2016/10/29 by Benjamin.Hyder

	Re-Saving Foliage asset in Tm-DistanceFields

	#jira UE-29618

Change 3179308 on 2016/10/29 by Benjamin.Hyder

	updating AutoLOD settings for foliage example in TM-Shadermodels

	#jira UE-29618

Change 3179135 on 2016/10/28 by Chris.Babcock

	Only use alternative event flow for Daydream packaged applications
	#jira UE-37847
	#ue4
	#android

Change 3178995 on 2016/10/28 by JohnHenry.Carawon

	Adding test content for the World Origin Rebasing feature

	#jira UE-29618

Change 3178994 on 2016/10/28 by Chris.Babcock

	Disable ARM64 Google Play Games - need new library to fix crash
	#jira UE-37972
	#ue4
	#android

Change 3178955 on 2016/10/28 by Marc.Audy

	Don't worry about clearing from world's end of frame update frame if being GC'd
	#jira UE-37928

Change 3178921 on 2016/10/28 by Daniel.Wright

	[Copy] Scene captures and planar reflections force a scene color alpha channel to be used when they are capturing (does not affect the scene color format for the main views).  Fixes planar reflections with r.SceneColorFormat=3.
	Setup scissor for scene depth resolves, helps with passes using screenpercentage to reduce resolution.  Planar reflection depth resolves .8ms -> .2ms on 970
	#jira UE-37970

Change 3178919 on 2016/10/28 by Daniel.Wright

	[Copy] Fixed planar reflections in forward shading.  The change to disable checkerboard SSS caused scene color alpha to be non-zero for opaque / masked pixels in forward, but there's no SSS pass run later to correct it, since this is the forward rendering path.
	#jira UE-37970

Change 3178905 on 2016/10/28 by Max.Chen

	Sequencer: Fix fade track instance compile

	#jira UE-37939

Change 3178808 on 2016/10/28 by Dmitry.Rekman

	Linux: fix crash on exit (UE-37536).

	- Base virtual function (PostRun()) was called due to thread being stopped at the moment when the subclass destructor has already run.

	#jira UE-37536

	(Edigrating 3175651 from Dev-Platform to Release-4.14)

Change 3178707 on 2016/10/28 by Marc.Audy

	Fix inverted null check that caused load game from slot to fail if using a BP generated class
	#jira UE-37774

Change 3178664 on 2016/10/28 by Alexis.Matte

	Fix the fbx automation tests
	#jira UE-37960

Change 3178617 on 2016/10/28 by Bart.Hawthorne

	Fix issue where changing the world origin in a single player game would try to access the FNetworkPredictionData_Client_Character on character movement components

	#jira UE-37692
	#tests ran QA game and tested that assert no longer fired in debug

Change 3178615 on 2016/10/28 by Max.Chen

	Matinee to Level Sequence: Added interface to extend the matinee to level sequence converter

	Copy from Dev-Sequencer

	#jira UE-37328
	#2864

Change 3178553 on 2016/10/28 by Michael.Trepka

	Don't wait for the main thread in FMacWindow::Show()

	#jira UE-37915

Change 3178526 on 2016/10/28 by Alexis.Matte

	Clean unused material when importing a skeletal mesh. Its possible to have a material reference in a fbx node and not have any face referencing this material.
	#jira UE-37923

Change 3178451 on 2016/10/28 by Mitchell.Wilson

	Limit the max angle the cannon tower can be rotated when manually aiming.
	When max rotation is reached, debug line turns red to be consistent with the arrow tower.
	#jira UE-36512

Change 3178420 on 2016/10/28 by Lina.Halper

	Fix build issue
	#jira: UE-37911

Change 3178390 on 2016/10/28 by mason.seay

	Enabling follow on certain notifies to help catch issues

	#jira UE-29618

Change 3178325 on 2016/10/28 by Zak.Middleton

	#ue4 - (4.14) - Fix crash when player is destroyed and server PlayerController checks to see if it needs to force a network update. Also fix crash when calling ACharacter::SetReplicateMovement when not on the server.

	Mirror CL 3178247 and CL 3178256 in Dev-Framework.

	#jira UE-37902

Change 3178312 on 2016/10/28 by Max.Chen

	Sequencer: Fade only oin the current player context, not on all worlds.

	#jira UE-37939

Change 3178267 on 2016/10/28 by Lina.Halper

	Fix issue with anim editor sound play notify doesn't work with follow option

	#jira: UE-37946

Change 3178146 on 2016/10/28 by Lina.Halper

	#fix crash with thumbnail update when there is no animation, and so on.
	#code review: Benn.Gallagher
	#jira: UE-37911

Change 3178145 on 2016/10/28 by Matthew.Griffin

	Fixed Clean process during a Hot Reload
	Prevent engine build products, intermediates and exe/dlls from being deleted during Hot Reload and make sure Hot Reload state is preserved
	#jira UE-37616

Change 3178143 on 2016/10/28 by Mitchell.Wilson

	Updating BP_Spinning_Logo to stop spinning when disabled instead of finishing the rotation.
	#jira UE-36269

Change 3178110 on 2016/10/28 by Mitchell.Wilson

	Rebuilt lighting and saved levels.
	#jira UE-36913

Change 3178070 on 2016/10/28 by Mitchell.Wilson

	Adjusted trigger ragdoll time in shooter character so the character does not appear to float while in death animation.
	#jira UE-37124

Change 3178034 on 2016/10/28 by Jon.Nabozny

	Add missing Super::Tick call to ATP_TopDownCharacter::Tick.

	#jira UE-37914

Change 3178021 on 2016/10/28 by Max.Chen

	Sequence Recorder: Disable auto possess player for recorded pawns. This fixes a bug where if you record a third person template character, when you open the sequence, the recorded character will possess the viewport.

	Copy from Dev-Sequencer

	#jira UE-35342

Change 3177992 on 2016/10/28 by Matt.Kuhlenschmidt

	Fix outlined text accumulating error due to measuring the outlines for each text run rather than the entire string

	#jira UE-37935

Change 3177981 on 2016/10/28 by Nick.Darnell

	UMG - Fixing how the virtual window calculates desired size.  It was including scale again, which is fine for SWindow, but isn't what we want on the SVirtualWindow, should probably consider making a new SWindowBase class they can both share in the future.

	#jira UE-36861

Change 3177888 on 2016/10/28 by Matthew.Griffin

	Back out revision 4 from //UE4/Release-4.14/Engine/Source/Runtime/Engine/Private/InheritableComponentHandler.cpp

Change 3177881 on 2016/10/28 by Matthew.Griffin

	Added guards to WITH_EDITOR only static initialisation

Change 3177871 on 2016/10/28 by Matt.Kuhlenschmidt

	Fix crash import fbx scenes if objects contain procedural textures (not supported)

	#jira UE-37917

Change 3177856 on 2016/10/28 by Matthew.Griffin

	Adding THIRD_PARTY_INCLUDES macros around Google VR includes to fix static analysis warnings

Change 3177815 on 2016/10/28 by Graeme.Thornton

	Non-editor build fix

	#jira UE-37929

Change 3177812 on 2016/10/28 by Graeme.Thornton

	Fix for COTF crash with EDL. Manually copied from CL 3174743 in Dev-Core

	#jira UE-37810

Change 3177737 on 2016/10/28 by Guillaume.Abadie

	Brings over 3141695 and 3173310 from //Odin/Main: Fixes particle collision in the forward renderer.

	#jira UE-37927

Change 3177703 on 2016/10/28 by Phillip.Kavan

	[UE-37852] Ensure that we create a unique template object in a child class's ICH when overriding an inherited SCS default scene root node.

	change summary:
	- added UInheritableComponentHandler::SCSDefaultSceneRootOverrideNamePrefix
	- modified UInheritableComponentHandler::CreateOverridenComponentTemplate() to special-case SCS default scene root node overrides when determining the new template name
	- modified UInheritableComponentHandler::PostLoad() to special-case SCS default scene root node overrides during template name fixup
	- modified SSCSEditor::RemoveComponentNode() to skip renaming the component template away from the variable name for the default scene root node, since we don't actually recreate it when it gets re-added

	#jira UE-37852

Change 3177600 on 2016/10/27 by Chris.Babcock

	Pass through the intent action from splash screen
	#jira UE-37925
	#ue4
	#android

Change 3177436 on 2016/10/27 by Mike.Beach

	Guarding against a top crash that could occur when pasting a select node (unknown how) - now using an unchecked accessor to get a specific pin, and guarding again a null (instead of asserting).

	#jira UE-37910

Change 3177365 on 2016/10/27 by Daniel.Wright

	Fixed access of FPrecomputedLightVolumeData after it has been deleted (causes crash on exit with USE_MALLOC_STOMP enabled)
	#jira UE-37903

Change 3177236 on 2016/10/27 by Mitchell.Wilson

	Updated UVs on M_FloorTiles1 to resolve precision issues with the material's normal on mobile devices.
	Fixed reflection captures in the level and rebuilt lighting.
	#jira UE-36624

Change 3177235 on 2016/10/27 by mason.seay

	Vehicle Assets

	#jira UE-29618

Change 3177036 on 2016/10/27 by Mitchell.Wilson

	Inverted throttle control for controller Right Joystick Up, Down, Y-Axis to be consistent with the info from our template wiki
	#jira UE-37881

Change 3176996 on 2016/10/27 by mason.seay

	Missed node link

	#jira UE-29618

Change 3176993 on 2016/10/27 by mason.seay

	Test AnimBP for crash

	#jira UE-29618

Change 3176992 on 2016/10/27 by Mitchell.Wilson

	Adding [EditoronlyBP] to DefaultEditor.ini of projects that were missing it.
	#jira UE-37846

Change 3176946 on 2016/10/27 by Alexis.Matte

	We recompile the material only if there is a material expression node that ask for a shader recompile when the texture is change with no specified property.
	#jira UE-37705

Change 3176939 on 2016/10/27 by Alexis.Matte

	Check the pointer before using it
	#jira UE-37853

Change 3176927 on 2016/10/27 by mason.seay

	Rebuilt Lighting

	#jira UE-29618

Change 3176883 on 2016/10/27 by Steve.Robb

	Fix for crash when an array property changes while instancing subobjects.
	Fix for StrStr running off the end of a non-null-terminated string and a tidy up with TUniquePtr.
	Fix for accessing a deleted StaticClass() in FInputBindingEditorModule::ShutdownModule.

	#fyi matt.kuhlenschmidt, alex.fennell
	#jira UE-37752

Change 3176811 on 2016/10/27 by Chris.Bunner

	Rework of previous commit to avoid potential confusion moving forward.
	#jira UE-37424

Change 3176783 on 2016/10/27 by Chris.Bunner

	Default scalability settings to Epic, not Cinematic.
	Duplicated default render resolution scale fix (CL 3170020).
	#jira UE-37424

Change 3176692 on 2016/10/27 by Mike.Beach

	Fixing up a mistake where we weren't reading all [EditoronlyBP] settings (which are now deprecated). Was causing certain settings to default to off, and caused an inaccurate deprecation warning.

	#jira UE-37848

Change 3176635 on 2016/10/27 by mason.seay

	Setting up skeleton for retargeting testing

	#jira UE-29618

Change 3176586 on 2016/10/27 by Marcus.Wassmer

	Fix crash on D3D12 editor when selecting objects
	#jira UE-37861

Change 3176479 on 2016/10/27 by Robert.Manuszewski

	Fix for a rare crash when loading into Orion match. Made sure the Skeleton asset is loaded before PostLoad is called on it.

	#jira UE-37297
	#jira UE-37711

Change 3176107 on 2016/10/27 by Phillip.Kavan

	[UE-37690] AddComponent node template names now use a  counter to avoid a potential component data cache mismatch with an existing instance of an old AddComponent node template.

	change summary:
	- added UBlueprint::ComponentTemplateNameIndex as a way to to map component class names to an incremental counter (saved).
	- UK2Node_AddComponent::MakeNewComponentTemplateName() is now public, non-static, and uses an internal index map to generate unique component template names.

	#jira UE-37690

Change 3176105 on 2016/10/27 by Phillip.Kavan

	[UE-37686] Fix naming for archetype objects associated with new AddComponent nodes.

	change summary:
	- switched UK2Node_AddComponent::MakeNewComponentTemplateName() to be a public API.
	- modified UBlueprintComponentNodeSpawner::Invoke() to call UK2Node_AddComponent::MakeNewComponentTemplateName() in place of MakeUniqueObjectName().
	- modified UBlueprintGeneratedClass::FindArchetype() to better handle old AddComponent node template names. These were based on the UClass display name, and thus it was possible for the non-index form of that FName to collide with SCS variable names after the initial switch to use the non-indexed (base) FName for archetype matching in all cases. As a result I've reverted back to using the given ArchetypeName value for the SCS variable case.

	#jira UE-37686

Change 3176009 on 2016/10/26 by Dmitriy.Dyomin

	Fixed: Editor crash on changing sub-level visbility under certain conditions
	#jira UE-34740

Change 3175807 on 2016/10/26 by Daniel.Wright

	Fixed the editor thinking a lighting build is still active after you discard the results from one
	#jira UE-37834

Change 3175777 on 2016/10/26 by Jon.Nabozny

	#jira UT-6263
	Fix crash when running ServerTravel on a client
	Dupe of CL #3175731 on UT, checked in on behalf of ben.zeigler

Change 3175695 on 2016/10/26 by Ryan.Gerleve

	Don't clear level collections in UWorld::CleanupWorld unless bCleanupResources is true.

	#jira UE-37336

Change 3175628 on 2016/10/26 by Chad.Garyet

	Added -Build vstream from 4-14 to allow checkins from physx
	altered build script and json to reflect new changes
	#JIRA UE-37085

Change 3175612 on 2016/10/26 by Martin.Wilson

	Fix crash when running an in-editor cook on the fly server with unsaved virtual bone changes

	#jira UE-37785

Change 3175552 on 2016/10/26 by Brian.Karis

	Twinblast bust changes

	#jira UE-0

Change 3175543 on 2016/10/26 by Marc.Audy

	Allow audio thread on PS4 to use 7th core as opposed to being pinned to it
	#jira OR-30447

Change 3175538 on 2016/10/26 by Matt.Kuhlenschmidt

	Fixed a crash when clicking Apply when using the Brush Clip tool

	#jira UE-37838

Change 3175502 on 2016/10/26 by Mitchell.Wilson

	Enabled modulated shadows on lights in rolling template levels.
	#jira UE-37047

Change 3175485 on 2016/10/26 by mason.seay

	Test Map for virtual bones

	#jira UE-29618

Change 3175469 on 2016/10/26 by mason.seay

	Test assets for Virtual Bones testing

	#jira UE-29618

Change 3175428 on 2016/10/26 by Marc.Audy

	Possibly fix crash in Autosave due to dereferencing a world pointer which is freed memory
	#jira UE-37590

Change 3175414 on 2016/10/26 by Michael.Trepka

	Fixed mouse position calculations for secondary monitors on Mac

	#jira UE-37822

Change 3175382 on 2016/10/26 by Yannick.Lange

	VR Editor: - Fix: Landscape UI Elements are not visible #jira UE-36843
	- Fix: First-time switch to Landscape tab in VREditor causes UI Errors #jira UE-37410
	- Fix: Enabling Foilage Mode in VR Editor breaks the pointer #jira UE-37214
	- Fix: Landscape sculpting when attempting to move menu panels in VREditor #jira UE-37581
	#jira UE-36843 #jira UE-37410 #jira UE-37214 #jira UE-37581

Change 3175349 on 2016/10/26 by Chad.Garyet

	Changing physx build agents to compile workspaces instead of full ones
	#JIRA UE-37085

Change 3175267 on 2016/10/26 by Martin.Wilson

	Fix retarget crash

	#jira UE-37781

Change 3175205 on 2016/10/26 by Rolando.Caloca

	UE4.14 - Remove erroneus assert
	#jira UE-37584

Change 3175188 on 2016/10/26 by Chris.Babcock

	Fix out of spec GLSL operations (contributed by JeffRous)
	#jira UE-37800
	#PR #2886
	#ue4
	#android

Change 3175156 on 2016/10/26 by Mitchell.Wilson

	Adding missing iOS app icons to SunTemple project
	#jira UE-36991

Change 3175095 on 2016/10/26 by Daniel.Wright

	Fixed stationary skylight reflections using an inverted mask on materials without high quality reflections with Forward Shading
	#jira UE-37783

Change 3175075 on 2016/10/26 by Daniel.Wright

	[Copy] Support directional light dynamic shadows in any channel with forward shading, which can happen with multiple shadow casting stationary directional lights (even though only the lighting of one will appear)
	#jira UE-36497

Change 3175050 on 2016/10/26 by Jamie.Dale

	FTextRenderComponentMIDCache now marks MIDs as stale when the font parameters available in the parent material changes

	#jira UE-37819

Change 3175039 on 2016/10/26 by Daniel.Wright

	Fixed Duplication mode
	#jira UE-37231

Change 3174996 on 2016/10/26 by Mitchell.Wilson

	Removing [EditoronlyBP] changes made to DefaultEditor.ini. EDL is now disabled by default in ShooterGame.
	#jira UE-37648

Change 3174987 on 2016/10/26 by Jon.Nabozny

	Fix crash when moving InstancedStaticMeshComponent in editor when it had no mesh set, but had instances.

	#jira UE-37594

Change 3174803 on 2016/10/26 by Ori.Cohen

	Fix world origin shifting causing a crash inside physx.

	#JIRA UE-37745

Change 3174776 on 2016/10/26 by Allan.Bentham

	Work around broken depth reads on Galaxy S4.
	#jira UE-35481

Change 3174723 on 2016/10/26 by Robert.Manuszewski

	Changing the criteria for UBL to ignore the event driven loader flag to IsEngineInstalled() just like at runtime.

	#jira UE-37617

Change 3174650 on 2016/10/26 by Matthew.Griffin

	Ensured that Online Subsystem Oculus plugin is precompiled successfully for Android

Change 3174644 on 2016/10/26 by Matthew.Griffin

	Fixing GoogleVR compile issues

Change 3174352 on 2016/10/25 by Daniel.Wright

	Rename map build data along with the world - fixes lighting lost on map rename / save as.
	Duplicate map build data along with the world - fixes lighting lost on map duplicate in the content browser, or save as when the source already exists.
	Save map build data packages in SaveWorld - fixes lighting being lost on save as.
	#jira UE-37231

Change 3174335 on 2016/10/25 by Chris.Babcock

	Corrected Proguard issue with Codeworks for Android 1R5 installers
	#jira UE-37680
	#ue4
	#android

Change 3174318 on 2016/10/25 by Marcus.Wassmer

	Duplicate 3174187
	#jira UE-37020

Change 3174263 on 2016/10/25 by patrickr.donovan

	Test content updates and additions. Lighting Channel map added to TM-VRLoader.
	#jira UE-29618

Change 3174120 on 2016/10/25 by Daniel.Wright

	UObject::PostDuplicate with DuplicateMode
	* Allows differentiating between being duplicated as part of a world duplication vs duplication within a level
	* This is needed when generating a guid that needs to be unique within a level, but constant across instances of that level, like a light component
	#jira UE-37231

Change 3174113 on 2016/10/25 by Daniel.Wright

	Fixed log spam
	#jira UE-37522

Change 3174010 on 2016/10/25 by Jamie.Dale

	Fixed several crashes in the Session Frontend when viewing profiles

	- SFiltersAndPresets wasn't being cleared when the profile data was changed back to a live instance.
	- SFiltersAndPresets could crash if it was updated when no profile was selected.
	- SDataGraph could cause a crash if you clicked on it when there was no data (passed a range of -1, 0).
	- A session update message would clobber any loaded profile data, resetting to the current instance.

	#jira UE-37597

Change 3173982 on 2016/10/25 by mason.seay

	Deleting unneeded asset

	#jira UE-29618

Change 3173912 on 2016/10/25 by Ori.Cohen

	Fix divide by 0 crash when torque curve is 0

	#JIRA UE-37737

Change 3173866 on 2016/10/25 by Ben.Marsh

	Remove setting forcing UnrealCEFSubProcess to compile using Visual Studio 2013.

	#jira UE-37678

Change 3173824 on 2016/10/25 by Ben.Marsh

	Fix trying to recompile UBT in Rocket builds when cleaning a build target.

	#jira UE-37616

Change 3173812 on 2016/10/25 by Nick.Darnell

	XBoxOne - The Vertex and Index buffers are now allocated with the right nextwriteoffset to prevent stomping old data on future writes.

	#jira UE-37757

Change 3173808 on 2016/10/25 by Ben.Marsh

	Fix batch files detecting MSBuild install locations for Visual Studio "15" preview 5.

	#jira UE-37627

Change 3173711 on 2016/10/25 by Ori.Cohen

	Fix linux compiler issues for physx

	#JIRA UE-37085, UE-37114, UE-37116

Change 3173704 on 2016/10/25 by James.Cobbett

	Import test assets for Alembic Conversion test
	#jira UE-29618

Change 3173694 on 2016/10/25 by Matt.Kuhlenschmidt

	Fixed Zip project not working in binary builds

	#jira UE-37655

Change 3173692 on 2016/10/25 by James.Cobbett

	Test content for Alembic Conversion options

	#jira UE-29618

Change 3173666 on 2016/10/25 by Matt.Kuhlenschmidt

	Fixed array refreshing in the details panel not functioning properly for sub-object properties

	#jira UE-37652

Change 3173619 on 2016/10/25 by Robert.Manuszewski

	Making the cooker ignore EDL ini setting in binary engine build.

	#jira UE-37617

Change 3173616 on 2016/10/25 by Nick.Whiting

	Merging update to Google VR 1.01 SDK, which fixes multiple initialization errors

	#jira UE-37440, UE-37236

Change 3173606 on 2016/10/25 by Jamie.Dale

	Removed invalid assert

	We're already passed the collection to modify, so the assert isn't needed.

	#jira UE-37761

Change 3173604 on 2016/10/25 by Keli.Hlodversson

	Work around an issue where the SteamVR plugin will fail to initialize if SteamVR was not already running before launching.
	#jira UE-37623

Change 3173502 on 2016/10/25 by Matt.Kuhlenschmidt

	Fixed more cases of undoing causing selections to become out of sync

	#jira UE-37300

Change 3173475 on 2016/10/25 by Ori.Cohen

	Critical 4.14 physx fixes

	#JIRA UE-37085, UE-37114, UE-37116

Change 3173445 on 2016/10/25 by Robert.Manuszewski

	Disabling the Event Driven Loader in ShooterGame. Making sure the EDL can't be enabled in binary engine distributions.

	#jira UE-37394

Change 3173401 on 2016/10/25 by Matt.Kuhlenschmidt

	Guard against crashes when textures or materials are explicitly marked as pending kill and then passed to slate for rendering

	#jira UE-36261

Change 3173245 on 2016/10/25 by Allan.Bentham

	Remove incorrect assert.
	#jira UE-37699, UE-37707

Change 3173232 on 2016/10/25 by Jurre.deBaare

	Post Processing Settings do not update in Persona when the values are changed in Preview Scene Settings
	#fix make sure we also pick up vector4 fields
	#jira UE-37656

Change 3173183 on 2016/10/25 by Matthew.Griffin

	Added Shipping configs to BootstrapPackagedGame (Duplicating CL#3150210 from Main)

Change 3173065 on 2016/10/25 by Dmitriy.Dyomin

	Fixed: Disabling 'Use Landscape Lightmap' option Skewing Procedural Foliage Instances
	#jira UE-37736

Change 3172929 on 2016/10/24 by Ryan.Vance

	#jira UE-37742
	Adding SceneViewExtension hooks that are called right after init views completes. It might be advantageous to do the work we're currently doing in PreRenderViewFamily_RenderThread and PreRenderView_RenderThread after init views is called with the way SteamVR's running start is implemented.

Change 3172915 on 2016/10/24 by Rolando.Caloca

	UE4.14 - Fix compile issues on CCT
	#jira UE-37722

Change 3172762 on 2016/10/24 by Brian.Karis

	#jira UE-37369

Change 3172742 on 2016/10/24 by Daniel.Lamb

	Fixed issue with file-> cook error when you haven't built the exe which you are trying to cook for.
	#jira UE-36796
	#test Cook shootergame

Change 3172690 on 2016/10/24 by Maciej.Mroz

	DynamicClass gives now, as componet-archetype, objects with non-exact name.
	Manually merged cl#3171563

	#jira UE-37480

Change 3172663 on 2016/10/24 by Daniel.Lamb

	Stopped cooker from handling modification requests when they are PIE requests.
	#test PIE shootergame
	#jira UE-21572

Change 3172629 on 2016/10/24 by Mitchell.Wilson

	Reconnected some material functions to resolve warnings which caused characters to render with default materials, and resolving 'Top Material' warnings.
	Reimported SM_GodRay_Plane to resolve PhysX warning
	Rebuilt lighting for the level.
	#jira UE-37728

Change 3172523 on 2016/10/24 by Nick.Shin

	update physx cmakefiles and automation build scripts for release-414 stream (as per request)

	#jira UEFW-106   Add HTML5 support to PhysX CMake & automation scripts

Change 3172515 on 2016/10/24 by Nick.Shin

	remove old emsdk (1.35.0)

	#jira UEPLAT-1324  Update HTML5 PhysX to CMake

Change 3172511 on 2016/10/24 by Mark.Satterthwaite

	Don't set Metal resource option fields on texture descriptors when running on an OS that doesn't support them.
	#jira UE-37481

Change 3172461 on 2016/10/24 by Cody.Albert

	Added check for pointer validity to prevent crash in ShooterGame

	#jira UE-37433

Change 3172329 on 2016/10/24 by Peter.Sauerbrei

	fix for remote notification method misspelling
	#jira ue-37720

Change 3172322 on 2016/10/24 by Marc.Audy

	Fix unreferenced variable the brute force to unblock QA
	#jira UE-37718

Change 3172191 on 2016/10/24 by Mitchell.Wilson

	Clearing preivew meshes on some materials to resolve warnings.
	#jira UE-37713

Change 3172186 on 2016/10/24 by Matt.Kuhlenschmidt

	Fix non-editor compile error

	#jira UE-37695

Change 3172159 on 2016/10/24 by Dmitry.Rekman

	Update GitDependencies.exe (UE-37530).

	- Binary needs to be updated to support LINUX_MULTIARCH_ROOT variable.

	#jira UE-37530

Change 3172132 on 2016/10/24 by Keith.Judge

	Xbox One - Fix corrupted screenshots. Needed a GPU/CPU sync point, which legacy D3D11.x used to do for us, but now we have to do manually. Copied from Dev-Platform CL 3156872

	#jira UE-37038

Change 3172131 on 2016/10/24 by Keith.Judge

	Xbox One - Disable engine analytics on XB1 shipping games, as per XRs. Verified http requests from devkit with Fiddler. Copied from CL 3153176 in Dev-Platform.

	#jira UE-36364

Change 3172106 on 2016/10/24 by Mitchell.Wilson

	Updated reference to a material in VehicleMenu.umap to resolve warning
	#jira UE-29748

Change 3172036 on 2016/10/24 by Steve.Robb

	TEnumAsByte can be switchably deprecated for enum classes, and is currently not deprecated (reverting a change in behavior).

	#jira UE-37706

Change 3172020 on 2016/10/24 by Marc.Audy

	Child Actor should be created at registration, not creation. Otherwise attachment hierarchies can not be set up and thus, world positions incorrect
	#jira UE-37615

Change 3171966 on 2016/10/24 by Dmitry.Rekman

	Linux: fix Setup.sh on Ubuntu 16.10 (UE-37621)

	#jira UE-37621

	(Edigrating 3171266 from Dev-Platform to Release-4.14)

Change 3171964 on 2016/10/24 by Dmitry.Rekman

	Linux: fix always rebuilding FixDeps (UE-37625).

	#jira UE-37625

	(Edigrating 3153471 from Dev-Platform to Release-4.14)

Change 3171957 on 2016/10/24 by Matt.Kuhlenschmidt

	Guard against property editor crash happening when focused is lost on an object which has been GC'd due to PIE running

	#jira UE-37636

Change 3171943 on 2016/10/24 by Matt.Kuhlenschmidt

	Added mesh simplifcation plugin picker to the project settings under Editor - Mesh Simplification
	 The menu to pick simplification plugins also contains a link to find other plugins in the launcher marketplace.  The launcher navigates to "/ue/marketplace/content-cat/assets/codeplugins" for now

	#jira UE-37695

Change 3171928 on 2016/10/24 by Max.Chen

	Sequencer: Revert CL#3162724. Fix time dilation in level sequence player because it's causing a regression. Will revisit the fix for UE-37277.

	#jira UE-37589

Change 3171924 on 2016/10/24 by James.Cobbett

	Test content 'preroll.abc'. Has empty frames at the start of animation. For alembic importer testing.
	#jira UE-29618

Change 3171867 on 2016/10/24 by Lina.Halper

	- Back out revision 2 from //UE4/Release-4.14/Engine/Source/Runtime/Engine/Private/Components/SkeletalMeshComponent.cpp
	- Empties override materials before setting preview mesh in animation editor

	#jira: UE-37610
	#code review: Thomas.Sarkanen

Change 3171789 on 2016/10/24 by Allan.Bentham

	Resolve depth on appropriate mobile devices when the view contains materials that read from the depth.
	#jira UE-35023

Change 3171776 on 2016/10/24 by Robert.Manuszewski

	Increasing the initial memory allocation size for FLargeMemoryWriter to reduce the number of allocations when saving or cooking

	#jira UE-37599

Change 3171728 on 2016/10/24 by Dmitriy.Dyomin

	Fix origin rebasing to work with precomputed lighting data stored in separate package
	#jira UE-37693

Change 3171634 on 2016/10/24 by Dmitriy.Dyomin

	Added commenets to 3171621
	#jira UE-36449

Change 3171621 on 2016/10/23 by Dmitriy.Dyomin

	Fixed: Editor crash when compiling the character blueprint after a PIE session with World Composition enabled
	Actually disabled use of world composition with multiplayer PIE using separate processes
	#jira UE-36449

Change 3171424 on 2016/10/22 by Jack.Porter

	Remove unused exec command causing logspam

	#jira UE-37661

Change 3171259 on 2016/10/21 by Ryan.Vance

	Mobile multi-view update

	#jira UE-37603

	Removed dependence on shader name for determining if we need to enable multi-view, now relies on the presence of gl_ViewID_OVR
	Worked around unsigned/signed integer driver issues. Some shader compilers were choking on the unsigned postfix
	Attempted to clean up some of the code duplication in MobileBasePassRendering.cpp
	Made a few design concessions which allows the feature to run on Mali devices in the wild right now:
	  Allow the feature to be enabled with ES2 rather than just ES3.1. Mali drivers have a bug preventing shader io blocks and multi-view from working together
	  Passing the view id from the vertex shader. Mali devices don't allow referencing gl_ViewID_OVR in a pixel shader

Change 3171165 on 2016/10/21 by Peter.Sauerbrei

	revert out the memory changes for platform file cache for mobile
	#jira UE-36835

Change 3171112 on 2016/10/21 by Matt.Barnes

	Updating TM-Material_BP_Nodes to facilitate test UEQATC-2969.

	#jira UEQATC-2969

Change 3171111 on 2016/10/21 by Mike.Beach

	Mirroring CL 3171084 form Dev-BP
	Guarding against a unrepro'able top-10 crash in SGraphPin. Making sure we're not operating on a null/pending-kill/transient pin.

	#jira UE-37642

Change 3170980 on 2016/10/21 by patrickr.donovan

	Motion controller test content update - further updates to combat thumbstick noise.

	#jira UE-29618

Change 3170965 on 2016/10/21 by Mitchell.Wilson

	Moved panner in M_Frame3_BG material to Custom UV0 to resolve issue with material rendering white on tvOS
	#jira UE-37105

Change 3170905 on 2016/10/21 by Marc.Audy

	Fix AActor::Serialize crash if a null in the owned components array
	#jira UE-37641

Change 3170838 on 2016/10/21 by Ben.Woodhouse

	Integrate crash fix from main CL3162008
	Fix for crash in GPU profiler. This was caused by the RHIThread getting too far behind the renderthread. This change adds a fence wait on the renderthread in RHIEndDrawingViewport to ensure that the renderthread is never more than a frame ahead.
	#jira UE-37216

Change 3170815 on 2016/10/21 by Jamie.Dale

	Fixed a potential race-condition in FTextRenderComponentMIDCache, and updated it to detect "stale" MIDs

	FMIDData was shared between the game and render threads, but used non-thread-safe shared pointers.

	This also marks MIDs as "stale" if the number of MIDs no longer matches the number of pages in the font (which may happen if the font is edited). These "stale" MIDs are kept as a weak pointer in a separate array so that we can still keep the MID object alive as long as something is still using it (as it may still be used by a FTextRenderSceneProxy for a short while). This array of weak pointers is purged of unreferenced instances during the normal cache purge cycle.

	#jira UE-37519

Change 3170784 on 2016/10/21 by Mitchell.Wilson

	Changing a material in TM-Reflections level
	#jira UE-29618

Change 3170668 on 2016/10/21 by Mitchell.Wilson

	Updated defaulteditor.ini to resolve cook failure for UBlueprint.
	#jira UE-37648

Change 3170595 on 2016/10/21 by Chris.Wood

	Added "Vanilla" Editor detection and reporting it to analytics, MTBF and Crash Reporter.
	[UE-37132] - Detect "Vanilla" Editor and report it to MTBF analytics and Crash Reporter

	#jira UE-37132

Change 3170395 on 2016/10/21 by Robert.Manuszewski

	UBT will now respect -remoteini command line param when looking for ini files for build settings. Fixes a crash when launching BP-only project from the Editor with EDL enabled.

	#jira UE-37617

Change 3170367 on 2016/10/21 by Allan.Bentham

	Prevent overflow of bright pixels during DoF calc.
	#jira UE-31755

Change 3170363 on 2016/10/21 by Robert.Manuszewski

	Fixing crashes when cancelling async loading

	#jira UE-37634

Change 3170362 on 2016/10/21 by Robert.Manuszewski

	Fixing MallocBinned2 crashes on 32-bit platforms.

	#jira UE-37326

Change 3170280 on 2016/10/21 by Jack.Porter

	Fix for landscape not rendering in Player Collision view mode after toggling G.

	#jira UE-37576

Change 3170202 on 2016/10/21 by Dmitriy.Dyomin

	Fixed: CustomDepth is incorrect when used in Custom PostProcess after Tonemapping
	#jira UE-37628

Change 3170160 on 2016/10/20 by Aaron.McLeran

	#jira UE-37596 Making detail customizations and experimental setting for sound base showing audiomixer-only features

	Implementing CL 3169422 in 4.14

Change 3170029 on 2016/10/20 by Aaron.McLeran

	#jira UE-37004
	#jira UE-37005
	Fixing stat soundwaves

	Implementing 3154264 from Dev-Framework

Change 3170024 on 2016/10/20 by Aaron.McLeran

	#jira UE-37024 Set Sound Mix Class Override still Playing Sounds in Certain Conditions

	Implementing the CL from Dev-Framework

Change 3169869 on 2016/10/20 by Arne.Schober

	duplicated:
	CL 3169845
	#jira UE-35937

Change 3169810 on 2016/10/20 by Steve.Cano

	Moving change from CL 3169642 to 4.14 - fix a library issue that was causing Kindle Fire 1st edition to crash when trying to run QA game, may be causing issues on other devices as well

	#ue4
	#android
	#jira UE-22440

Change 3169635 on 2016/10/20 by Mike.Beach

	Mirroring CL 3169443 from Dev-BP

	Deprecating the [EditoronlyBP] config settings (which are super old, and support legacy functionality, allowing users to export editor-only UBlueprint objects on cook). This is in support of the new event-driven loader (EDL), which is incompatible with these exports. We will be removing support for these settings promptly in 4.15 (hence the choice to deprecate them for 4.14).

	#jira UE-37605

Change 3169618 on 2016/10/20 by Mitchell.Wilson

	rebuilt lighting for all levels in Content Examples
	#jira UE-37570

Change 3169447 on 2016/10/20 by Peter.Sauerbrei

	fix for double quotes causing arguments to not be sent correctly to rsync
	#jira UE-37018

Change 3169362 on 2016/10/20 by tim.gautier

	Updated TM-UMG Level Blueprint - mouse-clicks outside of UMG assets no longer take focus from the set Display Widget

	#jira abc-123

Change 3169244 on 2016/10/20 by Chris.Babcock

	Update to new CodeWorks for Android 1R5
	#jira UE-37554
	#ue4
	#android

Change 3169240 on 2016/10/20 by Jon.Nabozny

	#rn Fixup GameModeClassAliases in Engine.ini files. These must be prefixed with either /Game/ or /Script/ otherwise the asset may fail to resolve and an empty name will be used instead (and cause weird behavior).

	#jira UE-37488

Change 3169155 on 2016/10/20 by Peter.Sauerbrei

	fix for incorrect characters in bundle id when project has underscores in the name
	#jira UE-36436

Change 3169127 on 2016/10/20 by Allan.Bentham

	Fix android vulkan compile error with dev builds
	#jira abc-123

Change 3169058 on 2016/10/20 by Allan.Bentham

	Flush command buffer during init to fix vulkan crash when rendering thread is enabled.
	Fix FDeferredDeletionQueue's resource handle storage on 32 bit platforms.
	#jira UE-36452

Change 3169049 on 2016/10/20 by Peter.Sauerbrei

	fix for minimum ios version in base ini file
	#jira UE-37034

Change 3168910 on 2016/10/20 by Jack.Porter

	Fix occasional race condition crash in FTcpMessageTransportConnection on editor shutdown
	#jira UE-36944

Change 3168906 on 2016/10/20 by Dmitriy.Dyomin

	Fixed: Black rendering on Galaxy S4 PowerVR
	#jira UE-37567

Change 3168858 on 2016/10/20 by Richard.TalbotWatkin

	Made BSP rendering more robust so that out-of-range array accesses trigger an 'ensure' rather than a crash (with a view to identifying the cause of this issue). Also fixed non-editor builds.
	#jira UE-37267 - [CrashReport] UE4Editor_Engine!FModelSceneProxy::GetDynamicMeshElements() [modelrender.cpp:322]

Change 3168826 on 2016/10/20 by Richard.TalbotWatkin

	Duplicated from //UE4/Dev-Editor, CL 3156473

	Attempt to make geometry render / rebuild more robust in the hope of catching UE-36265.
	#jira UE-36265 - [CrashReport] UE4Editor_Engine!FModelSceneProxy::HasSelectedSurfaces() [modelrender.cpp:538]

Change 3168335 on 2016/10/19 by Michael.Trepka

	Restored previous version of FMacWindow::IsPointInWindow function to solve issues with window dragging.

	#jira UE-37418

Change 3168307 on 2016/10/19 by Rolando.Caloca

	UE4.14 - Integrate changes from 3051720 and 3057522

	[RENDERING] [!]
	Revert fix in GPU skin cache (original CL 2722034)
	 - Waiting on shader compilation with the GPU skin update will destroy/recreate render state, causing a crash in the GPU skin cache.

	#jira UE-37545

Change 3168201 on 2016/10/19 by Peter.Sauerbrei

	fix for urls with queries not working correctly
	#jira UE-35090

Change 3168200 on 2016/10/19 by Mitchell.Wilson

	Re-saved multiple cloth assets to resolve building adjacency information warnings.
	Replaced deprecated SetText and GrabComponent blueprint nodes with new SetText and GrabComponentAtLocation.
	Re-saved multiple assets to resolve empty engine version warnings.
	#jira UE-37537

Change 3168174 on 2016/10/19 by Alan.Noon

	#jira UE-37534
	deleted unnecessary files from Photorealistic Character project

Change 3168160 on 2016/10/19 by Arne.Schober

	duplicated:
	fixes for velocity render pass
	CL 3166370
	CL 3166799
	#jira UE-37362

Change 3168136 on 2016/10/19 by Alan.Noon

	#jira UE-37534
	Initial add of Photorealistic Character Sample project

Change 3168127 on 2016/10/19 by Peter.Sauerbrei

	fix for IOS_7 not being found
	#jira UE-37034

Change 3167886 on 2016/10/19 by patrickr.donovan

	#jira UE-37242

	TLDR; Test content updates.
	Bug entered due to finicky hardware returning noise values that weren't accounted for in test contet. Fortified test content against this edge case, no code change necessary.

Change 3167882 on 2016/10/19 by samuel.proctor

	Updating asset for Profiler Heatmap testing

	#jira UE-29618

Change 3167868 on 2016/10/19 by Dmitry.Rekman

	Linux: disable XGE on Windows (UE-37446).

	- XGE does not seem to handle new clang 3.9.0 toolchain well, with very reproducible crashes.

	Also fix build breakage with clang 3.8.1.

	- always_inline was still applied to debug builds and as such was ignored.

	#jira UE-37446

	(Edigrating CL 3166330, 3166456 from Dev-Platform to Release-4.14)

Change 3167832 on 2016/10/19 by Mitchell.Wilson

	Reconnected 'TopMaterial' in multiple materials to resolve warnings.
	Rebuilt lighting and saved levels.
	#jira UE-37529 UE-37535

Change 3167688 on 2016/10/19 by Mitchell.Wilson

	Removing preview mesh from multiple materials to resolve warnings.
	Rebuilt lighting and saved all levels.
	#jira UE-29678 UE-37526

Change 3167616 on 2016/10/19 by Marc.Audy

	Fix reversed logic checking for an Actor after a cast was supposed to have failed, broken in CL 2695656.
	#jira UE-37517

Change 3167585 on 2016/10/19 by Jamie.Dale

	Re-enabled all-cultures upload to OneSky so we prime translations correctly

	#jira UE-37518

Change 3167579 on 2016/10/19 by Jamie.Dale

	Fixed text render component regression with custom MIDs

	#jira UE-37305

Change 3167501 on 2016/10/19 by Matt.Kuhlenschmidt

	Fixed realtime rendering in editor viewport being disabled when simulating in editor

	#jira UE-37466

Change 3167498 on 2016/10/19 by Mitchell.Wilson

	Re-saving multiple blueprints with nodeguid warnings.
	Cleared preview mesh for materials with string asset reference warnings.
	Rebuilt lighting and added _BuildData to resolve lighting rebuild warnings.
	#jira UE-30840

Change 3167492 on 2016/10/19 by Matt.Kuhlenschmidt

	Fix for disappearing menus in lastest windows 10 build

	#jira UE-36752

Change 3167311 on 2016/10/19 by Mieszko.Zielinski

	Fixed EQS template cache issues with multiple query run modes #UE4

	#jira UE-37496

Change 3167206 on 2016/10/19 by Matthew.Griffin

	Moved Github promotion earlier in build script and added 'After' dependencies so that we can guarantee the order of the nightly build/prevent unimportant jobs from running before binary build is completed

Change 3167205 on 2016/10/19 by Matthew.Griffin

	Changed CommandUtils.UnzipFiles to use system unzip tool when running on mono, as there has been issues with Ionic not being able to decompress those created by the zip tool

Change 3167010 on 2016/10/19 by Dmitriy.Dyomin

	Fix for LevelStreaming getting stuck, and World->PersistentLevel null assert
	Contributed by Funcom: https://udn.unrealengine.com/questions/312900/fix-for-levelstreaming-getting-stuck-and-world-per.html
	#jira UE-36397

[CL 3189774 by Matthew Griffin in Main branch]
2016-11-08 02:45:19 -05:00

497 lines
21 KiB
C++

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
#include "AndroidPlatformEditorPrivatePCH.h"
#include "AndroidTargetSettingsCustomization.h"
#include "DetailLayoutBuilder.h"
#include "DetailCategoryBuilder.h"
#include "PropertyEditing.h"
#include "ScopedTransaction.h"
#include "SExternalImageReference.h"
#include "SHyperlinkLaunchURL.h"
#include "SPlatformSetupMessage.h"
#include "PlatformIconInfo.h"
#include "SourceControlHelpers.h"
#include "ManifestUpdateHelper.h"
#include "SNotificationList.h"
#include "NotificationManager.h"
#include "EngineBuildSettings.h"
#include "InstalledPlatformInfo.h"
#define LOCTEXT_NAMESPACE "AndroidRuntimeSettings"
//////////////////////////////////////////////////////////////////////////
// FAndroidTargetSettingsCustomization
namespace FAndroidTargetSettingsCustomizationConstants
{
const FText DisabledTip = LOCTEXT("GitHubSourceRequiredToolTip", "This requires GitHub source.");
}
TSharedRef<IDetailCustomization> FAndroidTargetSettingsCustomization::MakeInstance()
{
return MakeShareable(new FAndroidTargetSettingsCustomization);
}
FAndroidTargetSettingsCustomization::FAndroidTargetSettingsCustomization()
: AndroidRelativePath(TEXT(""))
, EngineAndroidPath(FPaths::EngineDir() + TEXT("Build/Android/Java"))
, GameAndroidPath(FPaths::GameDir() + TEXT("Build/Android"))
, EngineGooglePlayAppIDPath(EngineAndroidPath / TEXT("res") / TEXT("values") / TEXT("GooglePlayAppID.xml"))
, GameGooglePlayAppIDPath(GameAndroidPath / TEXT("res") / TEXT("values") / TEXT("GooglePlayAppID.xml"))
, EngineProguardPath(EngineAndroidPath / TEXT("proguard-project.txt"))
, GameProguardPath(GameAndroidPath / TEXT("proguard-project.txt"))
, EngineProjectPropertiesPath(EngineAndroidPath / TEXT("project.properties"))
, GameProjectPropertiesPath(GameAndroidPath / TEXT("project.properties"))
{
new (IconNames) FPlatformIconInfo(TEXT("res/drawable/icon.png"), LOCTEXT("SettingsIcon", "Icon"), FText::GetEmpty(), 48, 48, FPlatformIconInfo::Required);
new (IconNames) FPlatformIconInfo(TEXT("res/drawable-ldpi/icon.png"), LOCTEXT("SettingsIcon_LDPI", "LDPI Icon"), FText::GetEmpty(), 36, 36, FPlatformIconInfo::Required);
new (IconNames) FPlatformIconInfo(TEXT("res/drawable-mdpi/icon.png"), LOCTEXT("SettingsIcon_MDPI", "MDPI Icon"), FText::GetEmpty(), 48, 48, FPlatformIconInfo::Required);
new (IconNames) FPlatformIconInfo(TEXT("res/drawable-hdpi/icon.png"), LOCTEXT("SettingsIcon_HDPI", "HDPI Icon"), FText::GetEmpty(), 72, 72, FPlatformIconInfo::Required);
new (IconNames) FPlatformIconInfo(TEXT("res/drawable-xhdpi/icon.png"), LOCTEXT("SettingsIcon_XHDPI", "XHDPI Icon"), FText::GetEmpty(), 96, 96, FPlatformIconInfo::Required);
new (LaunchImageNames)FPlatformIconInfo(TEXT("res/drawable/downloadimagev.png"), LOCTEXT("SettingsIcon_DownloadImageV", "Download Background Vertical Image"), FText::GetEmpty(), 720, 1280, FPlatformIconInfo::Required);
new (LaunchImageNames)FPlatformIconInfo(TEXT("res/drawable/downloadimageh.png"), LOCTEXT("SettingsIcon_DownloadImageH", "Download Background Horizontal Image"), FText::GetEmpty(), 1280, 720, FPlatformIconInfo::Required);
new (LaunchImageNames)FPlatformIconInfo(TEXT("res/drawable/splashscreen_portrait.png"), LOCTEXT("LaunchImage_Portrait", "Launch Portrait"), FText::GetEmpty(), 360, 640, FPlatformIconInfo::Required);
new (LaunchImageNames)FPlatformIconInfo(TEXT("res/drawable/splashscreen_landscape.png"), LOCTEXT("LaunchImage_Landscape", "Launch Landscape"), FText::GetEmpty(), 640, 360, FPlatformIconInfo::Required);
new (DaydreamAppTileImageNames) FPlatformIconInfo(TEXT("res/drawable-nodpi/vr_icon.png"), LOCTEXT("AppTile_Icon", "App Tile Icon"), FText::GetEmpty(), 512, 512, FPlatformIconInfo::Optional);
new (DaydreamAppTileImageNames) FPlatformIconInfo(TEXT("res/drawable-nodpi/vr_icon_background.png"), LOCTEXT("AppTile_Icon_Background", "App Tile Icon Background"), FText::GetEmpty(), 512, 512, FPlatformIconInfo::Optional);
}
void FAndroidTargetSettingsCustomization::CustomizeDetails(IDetailLayoutBuilder& DetailLayout)
{
SavedLayoutBuilder = &DetailLayout;
BuildAppManifestSection(DetailLayout);
BuildIconSection(DetailLayout);
BuildLaunchImageSection(DetailLayout);
BuildDaydreamAppTileImageSection(DetailLayout);
}
static void OnBrowserLinkClicked(const FSlateHyperlinkRun::FMetadata& Metadata)
{
const FString* URL = Metadata.Find(TEXT("href"));
if(URL)
{
FPlatformProcess::LaunchURL(**URL, nullptr, nullptr);
}
}
void FAndroidTargetSettingsCustomization::BuildAppManifestSection(IDetailLayoutBuilder& DetailLayout)
{
// Cache some categories
IDetailCategoryBuilder& APKPackagingCategory = DetailLayout.EditCategory(TEXT("APKPackaging"));
IDetailCategoryBuilder& BuildCategory = DetailLayout.EditCategory(TEXT("Build"));
IDetailCategoryBuilder& SigningCategory = DetailLayout.EditCategory(TEXT("DistributionSigning"));
TSharedRef<SPlatformSetupMessage> PlatformSetupMessage = SNew(SPlatformSetupMessage, GameProjectPropertiesPath)
.PlatformName(LOCTEXT("AndroidPlatformName", "Android"))
.OnSetupClicked(this, &FAndroidTargetSettingsCustomization::CopySetupFilesIntoProject);
SetupForPlatformAttribute = PlatformSetupMessage->GetReadyToGoAttribute();
APKPackagingCategory.AddCustomRow(LOCTEXT("Warning", "Warning"), false)
.WholeRowWidget
[
PlatformSetupMessage
];
APKPackagingCategory.AddCustomRow(LOCTEXT("UpgradeInfo", "Upgrade Info"), false)
.WholeRowWidget
[
SNew(SBorder)
.Padding(1)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.Padding(FMargin(10, 10, 10, 10))
.FillWidth(1.0f)
[
SNew(SRichTextBlock)
.Text(LOCTEXT("UpgradeInfoMessage", "<RichTextBlock.TextHighlight>Note to users from 4.6 or earlier</>: We now <RichTextBlock.TextHighlight>GENERATE</> an AndroidManifest.xml when building, so if you have customized your .xml file, you will need to put all of your changes into the below settings. Note that we don't touch your AndroidManifest.xml that is in your project directory.\nAdditionally, we no longer use SigningConfig.xml, the settings are now set in the Distribution Signing section."))
.TextStyle(FEditorStyle::Get(), "MessageLog")
.DecoratorStyleSet(&FEditorStyle::Get())
.AutoWrapText(true)
+ SRichTextBlock::HyperlinkDecorator(TEXT("browser"), FSlateHyperlinkRun::FOnClick::CreateStatic(&OnBrowserLinkClicked))
]
]
];
APKPackagingCategory.AddCustomRow(LOCTEXT("BuildFolderLabel", "Build Folder"), false)
.IsEnabled(SetupForPlatformAttribute)
.NameContent()
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.Padding(FMargin(0, 1, 0, 1))
.FillWidth(1.0f)
[
SNew(STextBlock)
.Text(LOCTEXT("BuildFolderLabel", "Build Folder"))
.Font(DetailLayout.GetDetailFont())
]
]
.ValueContent()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
.Text(LOCTEXT("OpenBuildFolderButton", "Open Build Folder"))
.ToolTipText(LOCTEXT("OpenManifestFolderButton_Tooltip", "Opens the folder containing the build files in Explorer or Finder (it's recommended you check these in to source control to share with your team)"))
.OnClicked(this, &FAndroidTargetSettingsCustomization::OpenBuildFolder)
]
];
// Signing category
SigningCategory.AddCustomRow(LOCTEXT("SigningHyperlink", "Signing Hyperlink"), false)
.WholeRowWidget
[
SNew(SBox)
.HAlign(HAlign_Center)
[
SNew(SHyperlinkLaunchURL, TEXT("http://developer.android.com/tools/publishing/app-signing.html#releasemode"))
.Text(LOCTEXT("AndroidDeveloperSigningPage", "Android Developer page on Signing for Distribution"))
.ToolTipText(LOCTEXT("AndroidDeveloperSigningPageTooltip", "Opens a page that discusses the signing using keytool"))
]
];
// Google Play category
IDetailCategoryBuilder& GooglePlayCategory = DetailLayout.EditCategory(TEXT("GooglePlayServices"));
TSharedRef<SPlatformSetupMessage> GooglePlaySetupMessage = SNew(SPlatformSetupMessage, GameGooglePlayAppIDPath)
.PlatformName(LOCTEXT("GooglePlayPlatformName", "Google Play services"))
.OnSetupClicked(this, &FAndroidTargetSettingsCustomization::CopyGooglePlayAppIDFileIntoProject);
SetupForGooglePlayAttribute = GooglePlaySetupMessage->GetReadyToGoAttribute();
GooglePlayCategory.AddCustomRow(LOCTEXT("Warning", "Warning"), false)
.WholeRowWidget
[
GooglePlaySetupMessage
];
GooglePlayCategory.AddCustomRow(LOCTEXT("AppIDHyperlink", "App ID Hyperlink"), false)
.WholeRowWidget
[
SNew(SBox)
.HAlign(HAlign_Center)
[
SNew(SHyperlinkLaunchURL, TEXT("http://developer.android.com/google/index.html"))
.Text(LOCTEXT("GooglePlayDeveloperPage", "Android Developer Page on Google Play services"))
.ToolTipText(LOCTEXT("GooglePlayDeveloperPageTooltip", "Opens a page that discusses Google Play services"))
]
];
TSharedRef<IPropertyHandle> EnabledProperty = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, bEnableGooglePlaySupport));
GooglePlayCategory.AddProperty(EnabledProperty)
.EditCondition(SetupForGooglePlayAttribute, NULL);
TSharedRef<IPropertyHandle> AppIDProperty = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, GamesAppID));
AppIDProperty->SetOnPropertyValueChanged(FSimpleDelegate::CreateRaw(this, &FAndroidTargetSettingsCustomization::OnAppIDModified));
GooglePlayCategory.AddProperty(AppIDProperty)
.EditCondition(SetupForGooglePlayAttribute, NULL);
TSharedRef<IPropertyHandle> AdMobAdUnitIDProperty = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, AdMobAdUnitID));
AdMobAdUnitIDProperty->MarkHiddenByCustomization();
TSharedRef<IPropertyHandle> AdMobAdUnitIDsProperty = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, AdMobAdUnitIDs));
GooglePlayCategory.AddProperty(AdMobAdUnitIDsProperty)
.EditCondition(SetupForGooglePlayAttribute, NULL);
TSharedRef<IPropertyHandle> GooglePlayLicenseKeyProperty = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, GooglePlayLicenseKey));
GooglePlayCategory.AddProperty(GooglePlayLicenseKeyProperty)
.EditCondition(SetupForGooglePlayAttribute, NULL);
#define SETUP_ANDROIDARCH_PROP(ArchFragment, PropName, Category, Tip) \
{ \
TSharedRef<IPropertyHandle> PropertyHandle = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, PropName)); \
Category.AddProperty(PropertyHandle) \
.IsEnabled(FInstalledPlatformInfo::Get().IsValidPlatformArchitecture(TEXT("Android"), ArchFragment)) \
.ToolTip(FInstalledPlatformInfo::Get().IsValidPlatformArchitecture(TEXT("Android"), ArchFragment) ? Tip : FAndroidTargetSettingsCustomizationConstants::DisabledTip); \
}
#define SETUP_SOURCEONLY_PROP(PropName, Category, Tip) \
{ \
TSharedRef<IPropertyHandle> PropertyHandle = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, PropName)); \
Category.AddProperty(PropertyHandle) \
.IsEnabled(FEngineBuildSettings::IsSourceDistribution()) \
.ToolTip(FEngineBuildSettings::IsSourceDistribution() ? Tip : FAndroidTargetSettingsCustomizationConstants::DisabledTip); \
}
SETUP_ANDROIDARCH_PROP(TEXT("-armv7"), bBuildForArmV7, BuildCategory, LOCTEXT("BuildForArmV7ToolTip", "Enable ArmV7 CPU architecture support? (this will be used if all CPU architecture types are unchecked)"));
SETUP_ANDROIDARCH_PROP(TEXT("-arm64"), bBuildForArm64, BuildCategory, LOCTEXT("BuildForArm64ToolTip", "Enable Arm64 CPU architecture support? (use at least NDK r11c, requires Lollipop (android-21) minimum)"));
SETUP_ANDROIDARCH_PROP(TEXT("-x86"), bBuildForX86, BuildCategory, LOCTEXT("BuildForX86ToolTip", "Enable X86 CPU architecture support?"));
SETUP_ANDROIDARCH_PROP(TEXT("-x64"), bBuildForX8664, BuildCategory, LOCTEXT("BuildForX8664ToolTip", "Enable X86-64 CPU architecture support?"));
SETUP_ANDROIDARCH_PROP(TEXT("-es2"), bBuildForES2, BuildCategory, LOCTEXT("BuildForES2ToolTip", "Enable OpenGL ES2 rendering support? (this will be used if rendering types are unchecked)"));
SETUP_ANDROIDARCH_PROP(TEXT("-esdeferred"), bBuildForESDeferred, BuildCategory, LOCTEXT("BuildForESDeferredToolTip", "Enable OpenGL ES31 + AEP (Android Extension Pack) rendering support?"));
SETUP_SOURCEONLY_PROP(bSupportsVulkan, BuildCategory, LOCTEXT("SupportsVulkanToolTip", "Enable Vulkan rendering support?"));
// @todo android fat binary: Put back in when we expose those
// SETUP_SOURCEONLY_PROP(bSplitIntoSeparateApks, BuildCategory, LOCTEXT("SplitIntoSeparateAPKsToolTip", "If checked, CPU architectures and rendering types will be split into separate .apk files"));
}
void FAndroidTargetSettingsCustomization::BuildIconSection(IDetailLayoutBuilder& DetailLayout)
{
// Icon category
IDetailCategoryBuilder& IconCategory = DetailLayout.EditCategory(TEXT("Icons"));
IconCategory.AddCustomRow(LOCTEXT("IconsHyperlink", "Icons Hyperlink"), false)
.WholeRowWidget
[
SNew(SBox)
.HAlign(HAlign_Center)
[
SNew(SHyperlinkLaunchURL, TEXT("http://developer.android.com/design/style/iconography.html"))
.Text(LOCTEXT("AndroidDeveloperIconographyPage", "Android Developer Page on Iconography"))
.ToolTipText(LOCTEXT("AndroidDeveloperIconographyPageTooltip", "Opens a page on Android Iconography"))
]
];
for (const FPlatformIconInfo& Info : IconNames)
{
const FString AutomaticImagePath = EngineAndroidPath / Info.IconPath;
const FString TargetImagePath = GameAndroidPath / Info.IconPath;
IconCategory.AddCustomRow(Info.IconName)
.NameContent()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.Padding( FMargin( 0, 1, 0, 1 ) )
.FillWidth(1.0f)
[
SNew(STextBlock)
.Text(Info.IconName)
.Font(DetailLayout.GetDetailFont())
]
]
.ValueContent()
.MaxDesiredWidth(400.0f)
.MinDesiredWidth(100.0f)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.FillWidth(1.0f)
.VAlign(VAlign_Center)
[
SNew(SExternalImageReference, AutomaticImagePath, TargetImagePath)
.FileDescription(Info.IconDescription)
.RequiredSize(Info.IconRequiredSize)
.MaxDisplaySize(FVector2D(FMath::Min(96, Info.IconRequiredSize.X), FMath::Min(96, Info.IconRequiredSize.Y)))
]
];
}
}
void FAndroidTargetSettingsCustomization::BuildLaunchImageSection(IDetailLayoutBuilder& DetailLayout)
{
// Add the launch images
IDetailCategoryBuilder& LaunchImageCategory = DetailLayout.EditCategory(TEXT("LaunchImages"));
LaunchImageCategory.AddCustomRow(LOCTEXT("LaunchImageInfo", "Launch Image Info"), false)
.WholeRowWidget
[
SNew(SBorder)
.Padding(1)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.Padding(FMargin(10, 10, 10, 10))
.FillWidth(1.0f)
[
SNew(SRichTextBlock)
.Text(LOCTEXT("LaunchImageInfoMessage", "The <RichTextBlock.TextHighlight>Download Background</> image is used as the background for OBB downloading. The <RichTextBlock.TextHighlight>Launch Portrait</> image is used as a splash screen for applications with Portrait, Reverse Portrait, Sensor Portrait, Sensor, or Full Sensor orientation. The <RichTextBlock.TextHighlight>Launch Landscape</> image is used as a splash screen for applications with Landscape, Sensor Landscape, Reverse Landscape, Sensor, or Full Sensor orientation.\n\nThe launch images will be scaled to fit the device in the active orientation. Additional optional launch images may be provided as overrides for LDPI, MDPI, HDPI, and XHDPI by placing them in the project's corresponding Build/Android/res/drawable-* directory."))
.TextStyle(FEditorStyle::Get(), "MessageLog")
.DecoratorStyleSet(&FEditorStyle::Get())
.AutoWrapText(true)
+ SRichTextBlock::HyperlinkDecorator(TEXT("browser"), FSlateHyperlinkRun::FOnClick::CreateStatic(&OnBrowserLinkClicked))
]
]
];
const FVector2D LaunchImageMaxSize(150.0f, 150.0f);
for (const FPlatformIconInfo& Info : LaunchImageNames)
{
const FString AutomaticImagePath = EngineAndroidPath / Info.IconPath;
const FString TargetImagePath = GameAndroidPath / Info.IconPath;
LaunchImageCategory.AddCustomRow(Info.IconName)
.NameContent()
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.Padding(FMargin(0, 1, 0, 1))
.FillWidth(1.0f)
[
SNew(STextBlock)
.Text(Info.IconName)
.Font(DetailLayout.GetDetailFont())
]
]
.ValueContent()
.MaxDesiredWidth(400.0f)
.MinDesiredWidth(100.0f)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.FillWidth(1.0f)
.VAlign(VAlign_Center)
[
SNew(SExternalImageReference, AutomaticImagePath, TargetImagePath)
.FileDescription(Info.IconDescription)
// .RequiredSize(Info.IconRequiredSize)
.MaxDisplaySize(LaunchImageMaxSize)
]
];
}
}
void FAndroidTargetSettingsCustomization::BuildDaydreamAppTileImageSection(IDetailLayoutBuilder& DetailLayout)
{
// Daydream App Tile Category
IDetailCategoryBuilder& DaydreamAppTileCategory = DetailLayout.EditCategory(TEXT("DaydreamAppTile"));
for (const FPlatformIconInfo& Info : DaydreamAppTileImageNames)
{
const FString AutomaticImagePath = EngineAndroidPath / Info.IconPath;
const FString TargetImagePath = GameAndroidPath / Info.IconPath;
DaydreamAppTileCategory.AddCustomRow(Info.IconName)
.NameContent()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.Padding( FMargin( 0, 1, 0, 1 ) )
.FillWidth(1.0f)
[
SNew(STextBlock)
.Text(Info.IconName)
.Font(DetailLayout.GetDetailFont())
]
]
.ValueContent()
.MaxDesiredWidth(400.0f)
.MinDesiredWidth(100.0f)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.FillWidth(1.0f)
.VAlign(VAlign_Center)
[
SNew(SExternalImageReference, AutomaticImagePath, TargetImagePath)
.FileDescription(Info.IconDescription)
.RequiredSize(Info.IconRequiredSize)
.MaxDisplaySize(FVector2D(FMath::Min(96, Info.IconRequiredSize.X), FMath::Min(96, Info.IconRequiredSize.Y)))
]
];
}
}
FReply FAndroidTargetSettingsCustomization::OpenBuildFolder()
{
const FString BuildFolder = FPaths::ConvertRelativePathToFull(FPaths::GetPath(GameProjectPropertiesPath));
FPlatformProcess::ExploreFolder(*BuildFolder);
return FReply::Handled();
}
void FAndroidTargetSettingsCustomization::CopySetupFilesIntoProject()
{
// First copy the manifest, it must get copied
FText ErrorMessage;
if (!SourceControlHelpers::CopyFileUnderSourceControl(GameProjectPropertiesPath, EngineProjectPropertiesPath, LOCTEXT("ProjectProperties", "Project Properties"), /*out*/ ErrorMessage))
{
FNotificationInfo Info(ErrorMessage);
Info.ExpireDuration = 3.0f;
FSlateNotificationManager::Get().AddNotification(Info);
}
else
{
// Now try to copy all of the icons, etc... (these can be ignored if the file already exists)
for (const FPlatformIconInfo& Info : IconNames)
{
const FString EngineImagePath = EngineAndroidPath / Info.IconPath;
const FString ProjectImagePath = GameAndroidPath / Info.IconPath;
if (!FPaths::FileExists(ProjectImagePath))
{
SourceControlHelpers::CopyFileUnderSourceControl(ProjectImagePath, EngineImagePath, Info.IconName, /*out*/ ErrorMessage);
}
}
// Now try to copy all of the launch images... (these can be ignored if the file already exists)
for (const FPlatformIconInfo& Info : LaunchImageNames)
{
const FString EngineImagePath = EngineAndroidPath / Info.IconPath;
const FString ProjectImagePath = GameAndroidPath / Info.IconPath;
if (!FPaths::FileExists(ProjectImagePath))
{
SourceControlHelpers::CopyFileUnderSourceControl(ProjectImagePath, EngineImagePath, Info.IconName, /*out*/ ErrorMessage);
}
}
// Now try to copy all of the launch images... (these can be ignored if the file already exists)
for (const FPlatformIconInfo& Info : DaydreamAppTileImageNames)
{
const FString EngineImagePath = EngineAndroidPath / Info.IconPath;
const FString ProjectImagePath = GameAndroidPath / Info.IconPath;
if (!FPaths::FileExists(ProjectImagePath))
{
SourceControlHelpers::CopyFileUnderSourceControl(ProjectImagePath, EngineImagePath, Info.IconName, /*out*/ ErrorMessage);
}
}
// and copy the other files (aren't required)
//SourceControlHelpers::CopyFileUnderSourceControl(GameProguardPath, EngineProguardPath, LOCTEXT("Proguard", "Proguard Settings"), /*out*/ ErrorMessage);
}
SavedLayoutBuilder->ForceRefreshDetails();
}
void FAndroidTargetSettingsCustomization::CopyGooglePlayAppIDFileIntoProject()
{
FText ErrorMessage;
if (!SourceControlHelpers::CopyFileUnderSourceControl(GameGooglePlayAppIDPath, EngineGooglePlayAppIDPath, LOCTEXT("GooglePlayAppID", "GooglePlayAppID.xml"), /*out*/ ErrorMessage))
{
FNotificationInfo Info(ErrorMessage);
Info.ExpireDuration = 3.0f;
FSlateNotificationManager::Get().AddNotification(Info);
}
SavedLayoutBuilder->ForceRefreshDetails();
}
void FAndroidTargetSettingsCustomization::OnAppIDModified()
{
const FString NewIDString = GetDefault<UAndroidRuntimeSettings>()->GamesAppID;
if (NewIDString.Len() > 0 && !FCString::IsNumeric(*NewIDString))
{
FNotificationInfo Info(LOCTEXT("InvalidGamesAppID", "The Games App ID you provided is invalid"));
Info.ExpireDuration = 3.0f;
FSlateNotificationManager::Get().AddNotification(Info);
return;
}
if (FPaths::FileExists(GameGooglePlayAppIDPath))
{
FManifestUpdateHelper Updater(GameGooglePlayAppIDPath);
const FString AppIDTag(TEXT("name=\"app_id\">"));
const FString ClosingTag(TEXT("</string>"));
Updater.ReplaceKey(AppIDTag, ClosingTag, NewIDString);
Updater.Finalize(GameGooglePlayAppIDPath);
}
}
//////////////////////////////////////////////////////////////////////////
#undef LOCTEXT_NAMESPACE