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-OWNER: ryan.gerleve
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5403464 in //UE4/Release-4.22/... via CL 5403485
#ROBOMERGE-BOT: ENGINE (Main -> Dev-Networking)

[CL 5417897 by ben marsh in Dev-Networking branch]
This commit is contained in:
ben marsh
2019-03-15 12:57:01 -04:00
parent c23e05b7f0
commit d1b5b28bc4
15 changed files with 133 additions and 80 deletions

View File

@@ -137,9 +137,9 @@ void FLiveCodingModule::EnableForSession(bool bEnable)
UE_LOG(LogLiveCoding, Display, TEXT("Console will be hidden but remain running in the background. Restart to disable completely."));
LppSetActive(false);
LppSetVisible(false);
bEnabledForSession = false;
}
}
bEnabledForSession = bEnable;
}
bool FLiveCodingModule::IsEnabledForSession() const
@@ -147,6 +147,18 @@ bool FLiveCodingModule::IsEnabledForSession() const
return bEnabledForSession;
}
bool FLiveCodingModule::CanEnableForSession() const
{
#if !IS_MONOLITHIC
FModuleManager& ModuleManager = FModuleManager::Get();
if(ModuleManager.HasAnyOverridenModuleFilename())
{
return false;
}
#endif
return true;
}
bool FLiveCodingModule::HasStarted() const
{
return bStarted;
@@ -193,6 +205,13 @@ bool FLiveCodingModule::StartLiveCoding()
{
if(!bStarted)
{
// Make sure there aren't any hot reload modules already active
if (!CanEnableForSession())
{
UE_LOG(LogLiveCoding, Error, TEXT("Unable to start live coding session. Some modules have already been hot reloaded."));
return false;
}
// Setup the console path
GLiveCodingConsolePath = ConsolePathVariable->GetString();
if (!FPaths::FileExists(GLiveCodingConsolePath))