Made sure that FHotReloadModule still reported slow task progress while stuck in a busy loop
ReviewedBy Anderew.Rodham
[CL 2435569 by Matthew Griffin in Main branch]
Fixed failed C++ hot reload not displaying an error to the user (UE-8241)
- Also added slightly better progress reporting to hot reload when adding code to a project
[CL 2419709 by Ben Marsh in Main branch]
* Multicast delegate Add* calls now return FDelegateHandles, and Remove* calls are now all deprecated, except for a new Remove function which takes a FDelegateHandle.
* New FConsoleManager::RegisterConsoleVariableSink_Handle and UnregisterConsoleVariableSink_Handle functions which work in terms of FConsoleVariableSinkHandle.
* Timer calls which don't take FTimerHandles are deprecated.
* FTicker::AddTicker now returns an FDelegateHandle and is removed by an overloaded Remove function.
* DEFINE_ONLINE_DELEGATE* macros now define _Handle variants of the Add/Remove functions which return/take handles.
* Various other handle-based registration changes.
* Some unity build fixes.
* Some simplification of delegate code.
* Fixes for lots of existing code to use handle-based registration and unregistration.
#codereview robert.manuszewski
[CL 2400883 by Steve Robb in Main branch]
- When hot reload was invoked from the IDE, the editor would not reload all of the game modules if there was more than one module had the game name as part of the module name
- For example after compiling "VehicleGame" and "VehicleGameLoadingScreen", only "VehicleGameLoadingScreen" would be reloaded in the editor
#codereview Robert.Manuszewski
[CL 2391306 by Mike Fricker in Main branch]
- CDO property values that have changed after hot-reload will now be propagated to the existing instances
- Adding code to a non-code project will no longer require restarting the editor to be able to work with new code (the new module will automatically be compiled and loaded)
[CL 2385307 by Robert Manuszewski in Main branch]
Includes following engine changes:
Getting display metrics only once at construct time when using SSafeZone. GetDisplayMetrics is expensive in Windows so it is impractical to call it every frame.
- Some AI API improvements, mostly switchig pointer function parameters to references.
- minor refactor of UCrowdFollowingComponent's queryinf functions:
- IsCrowd*Enabled functions refactored to IsCrowd*Active
- implemented IsCrowd*Enabled that return acrual values of relevant properties
- Added a function to CrowdManager to query for location of agents neighbouring given agent
Added support for PS4 touchpad-based cursor
You can now choose to skip synchronously scanning for asset data in object libraries and just use the data that is currently in the asset registry. The data will be refereshed automatically later once the global scan completes. The only applies to non-commandlet editor instances.
Crash fixes for trying to access NULL Metal surfaces on IOS
Slate: Cleaned up some atlas code related to padding and corrected some comments
[CL 2347323 by Ben Zeigler in Main branch]
FScopedSlowTask has been refactored to better allow for nesting of slow operations. This allows us to cascade nested scopes and provide accurate feedback on slow tasks. FScopedSlowTasks now work together when nested inside sub functions. Break up long functions that contain calls to multiple nested FScopedSlowTasks with FScopedSlowTask::EnterProgressFrame().
Example Usage:
void DoSlowWork()
{
FScopedSlowTask Progress(2.f, LOCTEXT("DoingSlowWork", "Doing Slow Work..."));
// Optionally make this show a dialog if not already shown
Progress.MakeDialog();
// Indicate that we are entering a frame representing 1 unit of work
Progress.EnterProgressFrame(1.f);
// DoFirstThing() can follow a similar pattern of creating a scope divided into frames. These contribute to their parent's progress frame proportionately.
DoFirstThing();
Progress.EnterProgressFrame(1.f);
DoSecondThing();
}
This addresses TTP#338602 - NEEDS REVIEW: Editor progress bars nearly always just show 100%, don't offer useful indication of progress
[CL 2322391 by Andrew Rodham in Main branch]
#change Adding better (working) versions of Process.GetProcesses(), Process.Name and Process.Modules to BuildHostPlatformAbstraction
#change ShouldDoHotReload will now use those new methods to learn if the target is running
#change On the Mac, we can't use 'Added' filesystem event to know if new binaries have been compiled as it reports temporary linker files instead of the final binaries which are only reported by 'Modified' event.
[CL 2321016 by Robert Manuszewski in Main branch]
#change Added (desktop) platform abstraction for checking if UBT is running. Fully functional for Windows, WIP for Mac and Linux (should work, but can give false positives)
[CL 2302894 by Robert Manuszewski in Main branch]
#ttp 345522: HotReload: Should not try to link DLLs when target is up to date
#change Added code to handle up-to-date state of modules in hot-reload code.
#change Added ECompilationResult::UpToDate and ECompilationResult::Canceled, ECompilationResult::Failed()
#change UBT: added -canskiplink command line param and support for skipping link actions when there was nothing to compile
#change extended the duration of re-compile notifications (TTP# 346604 NUXF-246 Hot compile fail message fades)
#change Added 'Compile Canceled' notification (instead of 'Compile Failed')
[CL 2302307 by Robert Manuszewski in Main branch]
#change Moved hot-reload-only code from FBlueprintCompileReinstancer to FHotReloadClassReinstancer
#change It's not possible to derive classes from FBlueprintCompileReinstancer
#change Added code to handle re-creating CDOs after hot-reload even if the class hasn't changed.
[CL 2300696 by Robert Manuszewski in Main branch]
#ttp 345519: HotReload: After failing to HotReload once, it would not function again during that session
[CL 2292199 by Robert Manuszewski in Main branch]
#change Made sure the correct target is passed to UBT when compiling engine/editor modules for non code-based game projects
#change Refactored FLevelEditorActionCallbacks::CanShowSourceCodeActions() code to FHotReloadModule::IsAnyGameModuleLoaded
[CL 2291052 by Robert Manuszewski in Main branch]