The main changes are as follows:
1. moved Json out of Core into own module 'Json'
2. moved 3 i10n classes (Json serializers) from Core into a new module 'Internationalization' *
3. fixed up 2 i10n classes in Core to not instantiate the 3 Json-based classes. instead they are now passed in as a dependency
*) (2) and (3) were required to decouple the I10n code in Core from Json. Much of the i10n code probably doesn't belong into Core in the first place, but there is no time to fix this right now.
The following cosmetic changes were also made:
- NULL to nullptr
- namespaced enums to enum classes
- renamed the three i10n Json serializer classes to comply with naming conventions
- removed file header comments (not used)
- documentation, spelling, spacing etc,
#UpgradeNotes: If your module is including Json.h then you have to add 'Json' to your Build.cs module dependencies.
#ReviewedBy: justin.sargent, saul.abreu
[CL 2310420 by Max Preussner in Main branch]
TTP# 337511 - ANALYTICS: Store Epic Account ID and Machine Unique GUIDs on Users Machine. Send with Every Event.
This works differently to what the TTP originally asked for, but I've checked with MaxP/MattK/WesH and we're okay with the way this works, as it avoids an annoyingly tight dependency between the analytics and the editor.
On the request of MattK, I also changed FPlatformMisc::GetRegistryString to be FPlatformMisc::GetStoredValue and added a corresponding FPlatformMisc::SetStoredValue. These will store generic key->value pairs using a platform specific store (the registry on Windows, and an INI file on other platforms).
DesktopPlatform uses these to provide access to the Machine ID and Epic Account ID (the Epic Account ID is set when the user logs into the Launcher).
The Editor sends an "Editor.ProgramStarted" event containing this data. This can then be tied to the current analytics session via the analytics session ID.
Tested on Windows and OS X.
ReviewedBy Thomas.Sarkanen, Max.Preussner
[CL 2113818 by Jamie Dale in Main branch]
- All projects referenced by .uprojectdirs are included, rather than using a separate hard-coded list of paths.
- Samples installed by the launcher are included.
[CL 2072300 by Ben Marsh in Main branch]
Whenever a blank engine association is read from a .uproject via GetEngineIdentifierForProject(), it checks up the directory hierarchy for an engine capable of loading it via its .uprojectdirs search directories. If found, it will use that engine's local identifier from the registry, or register it if it doesn't exist.
Setting a project's engine association to an engine which is capable of loading it via it's .uprojectdirs will cause it to write a blank engine association string into the .uproject (and triggering the behaviour above on open).
#codereview Michael.Trepka
[CL 2064463 by Ben Marsh in Main branch]
* Lots of code moved into IDesktopPlatform for sharing with Launcher and Mac (including setting up file associations, querying project versions, etc...)
* Hack to enumerate all the known launcher engine installations. Does not use registry keys any more. Will probably change to use a list of installations generated by the launcher at some point soon.
* List of registered GitHub builds is stored in HKEY_CURRENT_USER
* Switching engine versions is now done through a dialog rather than through the context menu.
* VersionSelector includes a version number for shell integration, allowing it to defer to an existing installation of the same version if necessary.
#codereview Michael.Trepka
[CL 2045845 by Ben Marsh in Main branch]