#rb Ben.Marsh
#ROBOMERGE-OWNER: james.hopkin
#ROBOMERGE-AUTHOR: james.hopkin
#ROBOMERGE-SOURCE: CL 12779149 via CL 12779152 via CL 12779160
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v681-12776863)
[CL 12782243 by James Hopkin in Main branch]
#rb CopyUp
#ROBOMERGE-OWNER: ryan.vance
#ROBOMERGE-AUTHOR: ryan.vance
#ROBOMERGE-SOURCE: CL 12149088 via CL 12150247
#ROBOMERGE-BOT: (v659-12123632)
[CL 12150618 by ryan vance in Main branch]
#rb none
#jira
#ROBOMERGE-SOURCE: CL 7707386 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v384-7690951)
[CL 7707387 by ben marsh in Main branch]
#rb none
#jira UE-76940, UE-76993, UE-76943
#ROBOMERGE-SOURCE: CL 7321451 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v371-7306989)
[CL 7321452 by ben marsh in Main branch]
#rb none
#jira UE-74679
#ROBOMERGE-SOURCE: CL 6960867 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v366-6836689)
[CL 6966783 by ben marsh in Main branch]
#rb none
#jira UE-72267
#jira UE-72904
#ROBOMERGE-SOURCE: CL 6441346 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)
[CL 6441352 by ben marsh in Main branch]
Allows fast iteration of C++ changes without restarting the application. To use, select the "Live Coding (Experimental)" mode from the drop down menu next to the editor's compile button, or type "LiveCoding" into the console for a monolithic build. Press Ctrl+Alt+F11 to find changes and compile.
Changes vs standalone Live++ version:
* UBT is used to execute builds. This allows standard UE4 adaptive unity mode, allows us to reuse object files when we do regular builds, supports using any build executor allowed by UBT (XGE, SNDBS, etc..).
* Adding new source files is supported.
* Custom visualizer for FNames is supported via a weakly linked symbol in a static library (Engine/Extras/NatvisHelpers).
* Settings are exposed in the editor's project settings dialog.
* Standalone application has been rewritten as a Slate app ("LiveCodingConsole"). There is an additional option to start the program as hidden, where it will not be visible until Ctrl+Alt+F11 is hit. Similarly, closing the window will hide it instead of closing the application.
* Does not require a standalone licensed version of Live++.
Known issues:
* Does not currently support class layout changes / object reinstancing
#rb none
[FYI] Marc.Audy, Stefan.Boberg, Nick.Penwarden
#jira
#ROBOMERGE-SOURCE: CL 5304722 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)
[CL 5309051 by ben marsh in Main branch]
* Hot reload now shares the regular UBT makefile, significantly improving performance for first-time compile. The history of previous hot-reloads is stored in an intermediate file (see GetHotReloadStateFile()), allowing the action graph to be patched to the last hot reload state before executing the build rather than creating a separate makefile. (A nice side effect of this is that it allows tracking hot reload attempts, and assigning incremental suffixes rather than random numbers for each run).
* The list of modules eligable for hot reload is now explicitly saved to the makefile. During a hot reload from IDE invocation, we always try to build all out of date modules and only apply suffixes to those that support it. This prevents the confusing behavior where an editor open in the background will not attempt to build certain files.
* Logic for building dependent modules is now significantly more reliable. Only modules with changes are rebuilt, and all dependent modules of those modules are correctly rebuilt too. The -CanSkipLink option is no longer necessary, and has been removed.
* All code for dealing with hot-reload only happens when the action graph is executed. The construction of a target no longer has any knowledge of whether hot reload is enabled or not.
#fyi Steve.Robb
#rb none
[CL 4621192 by Ben Marsh in Dev-Build branch]