GUBP High Level
* Temp Storage is zipped into a single archive per node now. This results in ~75% reduction in temp storage usage and network traffic, not to mention the per-file overhead.
* Temp Storage is in P:\\Builds\\{Game}\\TmpStore instead of P:\\Builds\\{Game}\\GUBP (to facilitate easier cleaning of this new structure).
* Temp Storage nodes are in subdirectories of {Branch}\\{CL}\\{NodeName} now instead of a flat directory structure that was hard to manually sift through.
GUBP Mid Level
* Removed -Store= and -StoreSuffix= test parameters.
* Added -NoZipTempStorage parameter to turn off temp storage zipping if necessary.
* Created GUBP.JobInfo class that collects info about the job as a whole to be passed around by GUBP. Mostly used by any code that need to interact with TempStorage.
* Created TempStorageNodeInfo that describes the necessary parameters to find the temp storage location for a node.
* Fully XML commented TempStorage.cs, and commented internals all major functions.
* Added a bunch of telemetry data for storing, retrieving, and cleaning shared temp storage.
UAT Mid Level
* Fixed a bug in Ionic.Zip that make ExtractAll() not work on Mono, checked in new DLLs.
* Added UAT parameter -UseLocalBuildStorage that allows you to test build storage stuff completely locally. Writes to Engine\\Saved\\LocalBuilds\\...
GUBP Low Level
* Refactored some GUBP startup code so temp vars would be limited in scope. Makes it easier to track the impact of refactoring these things.
* CullNodesForPreflight is only called for preflight builds.
* Refactored TempStorage.FindTempStorageManifests to use new TmpStore structure and harden the brittle string/path parsing it was doing. See the new TempStorage FindMatchingSharedTempStorageNodeCLs().
* Refactored TempStorage Saving and Loading to use XDocument instead of older XmlDocument. Removed a bunch of redundant checks.
* Use StripBaseDirectory and MakeRerootedFilePath to remove the brittle directory manipulation code. Directories no longer require a '/' at the end.
* Removed a few redundant caching layers in cleaning temp storage that try to ensure we don't clean a folder twice. None of them were necessary.
* Removed unused single-threaded copy code from temp storage.
* Updated Temp Storage unit test, and fully commented the logic behind it.
UAT Low Level
* UAT top level exception handler is now a single log line now to help parsers find the error.
* Removed several uses of FormatException as it doesn't display the entire exception chain, and is not as good as the default exception formatter.
* Removed ExceptionToString as it used FormatException, which was not a good precedent.
* Fixed several cases of exception propagation that was not properly chaining the inner exception.
* Refactored ThreadedCopyFiles to use Parallel.For because it was just as fast (if not faster) and much simpler to maintain.
* Removed the suffix from Robust_FileExists_NoExceptions because it's sole purpose in life WAS to throw exceptions!
* Added a bunch of XML doc comments to CommandUtils.
* Modernized some container manipulation and iteration to use IEnumerable and extension methods more appropriately.
* Added several @todos for other minor cleanup stuff that should happen eventually.
* Fixed some uses of String.Compare to use invariant culture.
#codereview:ben.marsh
[CL 2644846 by Wes Hunt in Main branch]
Conceptual changes:
- SSection is no longer responsible for drag operations. This alleviates mouse capture fighting and event ordering issues to do with both SSequencerTrackArea and SSection wanting to potentially handle drag-like events.
- ISequencerEditTool can be implemented to define interaction logic for the sequencer as a whole.
- There is only ever one tool active at a time. This is set by SSequencer::SetEditTool.
- Edit tools are responsible for handling mouse input based on the current environment
- Sequencer hotspots define particular points of interest on the sequencer UI such as keys, sections etc. Hotspots can optionally define a drag protocol. This may or may not be honored by the current edit tool.
- FVirtualConvertor has been formalised as FVirtualTrackArea which provides logic for converting between virtual and physical track area space, as well as hit-testing logic.
We currently have two tools: move (V) and marquee (M) selection. Marquee selection has two modes (key and section selection) which can be toggled with the toolbar button, or by pressing the hotkey multiple times.
[CL 2640139 by Andrew Rodham in Main branch]
Copied SFilePath from SNewProjectWizard and added some new features to allow for error status messages on the edit boxes
Added Plugin Creator Background to the plugin style as well as some more padding for the elements in it
Removed unnecessary code creating each individual folder for new plugins as each file creation/copy creates the new directory internally
#jira UE-19048
[CL 2640113 by Matthew Griffin in Main branch]
- Added curve editor icon instead of "Curve Editor" text.
- Added auto key icon instead of "Auto Key" text.
- Moved clean view and toggle auto scroll to menu.
- Added "Add Object" button to add selected objects to the animation.
- Added "Key All" button to toggle between keying all channels and not.
[CL 2639918 by Max Chen in Main branch]