Commit Graph

25 Commits

Author SHA1 Message Date
Tim Smith
dfc7238978 Provide console feedback when starting live coding fails packaged builds
#rb self
#jira UE-149580
#preflight 62fa974c153b17e746461877

[CL 21391530 by Tim Smith in ue5-main branch]
2022-08-15 15:08:39 -04:00
Tim Smith
6da6208fa9 Fixed issue where modules listed to be preloaded were not being preloaded.
#rb self
#jira UE-160674
#preflight 62f4f82e7c66d5539e8a8bad

[CL 21334853 by Tim Smith in ue5-main branch]
2022-08-11 08:59:35 -04:00
Tim Smith
561cc621f4 Fixed issue where live coding would always complain that a plugin wasn't enabled for live coding. This would happen if the plugin wasn't explicitly enabled by the project but was loaded by another plugin.
#rb self
#jira UE-155343
#preflight 62d57d283c3df32390b44c54

[CL 21149283 by Tim Smith in ue5-main branch]
2022-07-18 11:46:10 -04:00
tim smith
c440be643c Live coding now handles adding a feature pack as long as the project already contained source files. Otherwise it requests that the game be built from the IDE. Will also request that the game be built from the IDE when adding a class to a blueprint only project.
#rb none
#rnx
#jira UE-130744 UE-134701

#ushell-cherrypick of 18406025 by Tim.Smith
#preflight 61b0d7367177ccd1a130be05

#ROBOMERGE-AUTHOR: tim.smith
#ROBOMERGE-SOURCE: CL 18407173 in //UE5/Release-5.0/... via CL 18407182
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18407194 by tim smith in ue5-release-engine-test branch]
2021-12-08 11:50:54 -05:00
tim smith
6cb88ced21 Fixing compile issue with type not being defined
#rb trivial
#rnx
#preflight 616c18306ac2b60001e33b31

#ROBOMERGE-AUTHOR: tim.smith
#ROBOMERGE-SOURCE: CL 17839357 in //UE5/Release-5.0/... via CL 17839365
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v881-17767770)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17839366 by tim smith in ue5-release-engine-test branch]
2021-10-17 09:35:54 -04:00
tim smith
d0f6b45a08 Fixing compile issue with type not being defined
#rb trivial
#rnx
#preflight 616701a45eae5700010b2db9

#ROBOMERGE-AUTHOR: tim.smith
#ROBOMERGE-SOURCE: CL 17802769 in //UE5/Release-5.0/... via CL 17802809
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v881-17767770)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17802827 by tim smith in ue5-release-engine-test branch]
2021-10-13 13:18:44 -04:00
tim smith
0617a5be6f LiveCoding feedback to user when the console can't be started has been improved.
#rb trivial
#preflight 6166c0d5bf7be80001d33794

#ROBOMERGE-AUTHOR: tim.smith
#ROBOMERGE-SOURCE: CL 17798658 in //UE5/Release-5.0/... via CL 17801707
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v881-17767770)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17801876 by tim smith in ue5-release-engine-test branch]
2021-10-13 12:19:13 -04:00
tim smith
b294a27c29 Add the ability to enable re-instancing via project settings. Old setting still supported.
Add the ability to enable auto compile when adding new C++ classes.
Fixed user feedback issues when adding new C++ classes.

#rb joe.kirchoff
#rnx
#jira UE-116958
#preflight 60cb2e884ce02c0001d278c1

#ROBOMERGE-SOURCE: CL 16703582 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16703591 by tim smith in ue5-release-engine-test branch]
2021-06-17 08:47:50 -04:00
tim smith
899eaa25cd Improved notifications in the editor/game for live coding.
Added message that packaging can fail if assets reference new changes.

#rb
#rnx
#jira UE-115558
#preflight 60c39c8e8d00b80001b1e85f

#ROBOMERGE-SOURCE: CL 16645001 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v833-16641396)

[CL 16645007 by tim smith in ue5-release-engine-test branch]
2021-06-11 14:48:40 -04:00
Tim Smith
5fb833c5c1 Added support for more arbitrary property changes to live coding.
1) Changed the pre/post compile notifications from module notifications to process commands.
2) Added server command to notify that we want re-instance patching (two phase)
3) Added support for two phase patching to enable re-instancing without all the limitations.
4) Added a null CDO check for old blueprint classes (approved by Phillip)

#rb ben.marsh
#rnx
#preflight 6086e3481046fb000183c2d4

[CL 16115620 by Tim Smith in ue5-main branch]
2021-04-26 12:49:25 -04:00
Marc Audy
01b7c9f4f5 Merge UE5/RES @ 15958325 to UE5/Main
This represents UE4/Main @ 15913390 and Dev-PerfTest @ 15913304

[CL 15958515 by Marc Audy in ue5-main branch]
2021-04-08 14:32:07 -04:00
Tim Smith
a2237e050d LiveCoding Re-instancing
LIMITATIONS:

1) Re-instancing will only update UClass instance data.
2) Adding and removing properties should only be done towards the end of a class or structure and can not be followed by complex data types.
3) Adding and removing properties from a base class should not be done if a derived class contains complex data types.

KNOWN ISSUES:

1) Changes to enumerations and structures will not be reflected in existing blueprints.  However, adding new nodes to the blueprint will show the updated enumeration or structure.
2) If a class contains an enumeration or structure as a member, the class will not be re-instanced if enumeration or structure is changed.

CHANGES:

1) LiveCodingServer
1a) Modified to always execute certain static instances during load.
1b) Modified to exclude the _Statics static structures to avoid patching to old copies.

2) Added support for LiveCoding reinstancing
2a) Refactored deferred registration system for UClass, UEnum, and UScriptStruct to use a common system that works for normal game, hot reload and live coding.
2b) Type specific version check data is possible (i.e. enum doesn't have a size)
2c) Single registration static for UClass
2d) Single registration class for all types that is just a blind forward to API.
2e) Static and dynamic registrations use different API entry points to avoid having overloaded argument lists that just apply to one or the other.
2f) Shims for older API

3) New common "Reload" system to avoid using HotReload code.
3a) Support common delegates regardless of who is reloading/reinstancing.
3b) Re-instancing code moved from HotReload to Kismet2 (where the bulk of the re-instance code already existed).
3c) Modified PyWrapper to use new helper class instead of depending on HotRelaod
3d) Added WITH_RELOAD which is defined if HotReload or LiveCoding is enabled.
3e) Modifed existing code to use new #define and delegates.

Robert did the review on the changes covered by Part 2.  Remaining changes are all straightforward.

#rb robert.manuszewski
#jira UE-74493

[CL 15736777 by Tim Smith in ue5-main branch]
2021-03-18 08:13:59 -04:00
Marc Audy
ada7c144fa Merge //UE5/Release-Engine-Staging @14903491 to //UE5/Main
[CL 14906022 by Marc Audy in ue5-main branch]
2020-12-11 14:21:20 -04:00
ryan durand
471d972e62 Updating copyright for Engine Developer.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870584 by ryan durand in Main branch]
2019-12-26 15:32:37 -05:00
ben marsh
1c50519254 LiveCoding: Add a delegate that's called when a Live Coding patch is applied.
#jira UE-79227
[FYI] Rex.Hill


#ROBOMERGE-SOURCE: CL 8362316 via CL 8362852
#ROBOMERGE-BOT: (v402-8361577)

[CL 8362915 by ben marsh in Main branch]
2019-08-28 12:34:28 -04:00
Ben Marsh
0cc6e3dca6 Copying //UE4/Dev-Build to Dev-Main (//UE4/Dev-Main)
#rb none
#rnx

[CL 6631504 by Ben Marsh in Main branch]
2019-05-24 11:51:54 -04:00
ben marsh
583aa01bf7 LiveCoding: Add support for lazy loading modules. This lets us enable live coding for the entire engine without a large startup penalty. Project modules are still preloaded by default.
#rb none
#jira

#ROBOMERGE-SOURCE: CL 5437980 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5437990 by ben marsh in Main branch]
2019-03-18 18:07:05 -04:00
ben marsh
4b0b806b71 Fix issues related to hot-reload and LiveCoding co-existing.
* Removed code to invalidate makefiles when adding new source files. UBT should be reliable enough to make this determination itself nowadays, and ignored -invalidatemakefilesonly argument was causing modules to be recompiled.
* Fixed incorrect config section name when determining whether to allow hot reload from IDE. Now prevents hot reload from IDE when live coding is enabled.
* Added error message when trying to add a new class with Live Coding enabled.
* Added error messages when trying to start Live Coding after a hot reload has taken place.
* Added error messages when trying to hot reload with Live Coding enabled.

#jira UE-71253
#rb none

#ROBOMERGE-SOURCE: CL 5403464 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5403485 by ben marsh in Main branch]
2019-03-14 17:52:18 -04:00
ben marsh
81efe5710b LiveCoding: Fix determination of whether a module is part of a project plugin. Such modules report "false" for FModuleStatus.bIsGamePlugin.
#rb none
#jira UE-71399

#ROBOMERGE-SOURCE: CL 5365389 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368509 by ben marsh in Main branch]
2019-03-12 10:10:07 -04:00
ben marsh
d695b8a97d Fix "Compile" button in toolbar using legacy hot reload when live coding startup is set to manual.
#rb none
#jira UE-71359

#ROBOMERGE-SOURCE: CL 5361201 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368484 by ben marsh in Main branch]
2019-03-12 10:09:26 -04:00
ben marsh
e8ecd788f2 LiveCoding: Fix setting for enabling/disabling live coding not being saved when modified via the toolbar.
#rb none
#jira UE-71362

#ROBOMERGE-SOURCE: CL 5360814 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368482 by ben marsh in Main branch]
2019-03-12 10:09:23 -04:00
ben marsh
6cf6469c8f LiveCoding: Tweaks to live coding settings.
* Compile dropdown now just contains a checkbox for enabling live coding.
* Compile dropdown has a link to open the editor preferences window.
* Live coding can be enabled from the editor settings window.
* Option to show the console on startup is now folded into the startup mode.
* Options in the editor settings window are greyed out unless live coding is enabled.

#rb none
#jira

#ROBOMERGE-SOURCE: CL 5352692 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5364901 by ben marsh in Main branch]
2019-03-11 18:57:53 -04:00
ben marsh
90201985e0 LiveCoding: Disable the editor compile button while a compile is in progress.
#rb none
#jira UE-71077

#ROBOMERGE-SOURCE: CL 5343160 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5343162 by ben marsh in Main branch]
2019-03-07 17:30:35 -05:00
ben marsh
b02ec9e909 LiveCoding: Expose a Tick() function so that systems that don't use fire EndFrame() callbacks can still tick the live coding module. Also add a -LiveCoding command line argument to force it on.
#rb none
#jira

#ROBOMERGE-SOURCE: CL 5340479 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5340483 by ben marsh in Main branch]
2019-03-07 15:21:21 -05:00
ben marsh
cf183af67c Integrating live coding feature (aka Live++) into UE4.
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]
2019-03-05 18:49:25 -05:00