* Contains some selected back outs from other cls that included config context dependent changes, though it's limited to only backing out broken parts as much as possible to minimize surface area.
[Backout] - CL20029182
[FYI] josh.adams
Original CL Desc
-----------------------------------------------------------------
- Adding FConfigContext which is used to repalce LoadExternalIniFile, LoadLocalIniFile, etc, as well as have localized data for all configs read on a thread (like the other platform configs loaded in the editor)
- The Load*IniFile functions will create a Context, but eventually those APIs will go away and the Context will be the only way to load ini files
- Simplified some of the ini loading code, like removing the HierarchyCache (it wasn't helping editor load times, and added much complexity, and was not thread-safe, and it shouldn't actually be helpful because all the calls to Load*IniFile should eventually be replaced with either GConfig or FCOnfigCacheIni::ForPlatform(), which won't need to re-read in files
- Ini reading time actually went down due to the simplification, including Cache removal
- Left in old code for now behing a #define (USE_CONTEXT) in case something goes wrong
- Added in VERIFY_CONTEXT mode which I used to run original and Context modes and compare (including preflighting builds) (I also added a Compare function that we may want to keep around to use for future debugging)
- Added a separate set of config layers for plugins which speeds up plugin parsing, but also will fix the issue with BaseEngine.ini vs DefaultEngine.ini in Engine vs Project plugins (this shows how Contexts can bring useful information down into the guts - however a later change will enable it)
- Once this is all seen to be working, I will clean up the non-Context functions, and some globals vs static members, etc
#rb paul.chipchase
#preflight 62716c1c5e6ce673f452005a
#ROBOMERGE-AUTHOR: josh.adams
#ROBOMERGE-SOURCE: CL 20029165 via CL 20029180 via CL 20905839 via CL 20905880
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)
[CL 20908094 by mic rooney in ue5-main branch]
- new property bVersePublicApi in Build.cs files that is set to expose the associated Verse code to public users
- new property "VersePublicApi" in uplugin files that is set to expose the associated Verse code to public users
#rb andrew.scheidecker, conan.reis
#rnx
#preflight 628c579c3b67edca7a615f57
#preflight 628fe09bf622d972b5f58a6e
#ROBOMERGE-OWNER: markus.breyer
#ROBOMERGE-AUTHOR: markus.breyer
#ROBOMERGE-SOURCE: CL 20386247 via CL 20386248 via CL 20386313 via CL 20386316
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)
[CL 20387729 by markus breyer in ue5-main branch]
#rb Paul.Chipchase
#rnx
#jira UE-133191
PR #8567: Improve diagnostics for plugin version mismatch. (Contributed by zorbathut)
#preflight 628248becf7e4667a98c2c49
- I tweeked the log message slightly from the PR
-Worth noting that we don't need to localize this message even if it does feel a bit user facing as ::PromptToLoadIncompatiblePlugin will display a localized error message relating to the problem to the end user.
[CL 20222531 by zorbathut in ue5-main branch]
- Moved the IniCacheSet into the FConfigContext, and out of FConfigCacheIni. We could possibly get rid of it now entirely with the reduced number of paths we look for (and the fact that plugin scanning will be multithreaded soon)
- Removed the TRUEENGINE workaround now that Plugins are using a context to load the file, this makes the workaround unnecessary since plugins don't fake the EngineConfigDir
#rb jon.nabozny
#preflight 627959cf242446ce6c637258
#jira UE-151373,UE-151376
[CL 20108089 by Josh Adams in ue5-main branch]
Config files are marked NoSave when plugin overrides them.
NoSave prevents issues with plugins leaving stale data around in config if turned off later.
#preflight 6238f556ec68595f3b7cac21
#rb dave.belanger
#ROBOMERGE-OWNER: rex.hill
#ROBOMERGE-AUTHOR: rex.hill
#ROBOMERGE-SOURCE: CL 19481929 via CL 19487176 via CL 19497560 via CL 19497573
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v936-19480137)
[CL 19498734 by rex hill in ue5-main branch]
#rb PJ.Kack
#rnx
#preflight 6239f155ca34ffd7bf6c5f8d
#robomerge FNNC
- By setting "UE_DISABLE_PLUGIN_DISCOVERY=1" in its target.cs a stand-alone program can avoid the cost of iterating over all plugins but still load and enable specific plugins that it knows it needs.
- In the future we could make this data driven by allowing a program to supply something similar to the .upluginmanifest file.
[CL 19479783 by paul chipchase in ue5-main branch]
This code path was intended primarily for Cooked / Packaged builds, where precaching all the INI files available in cooked files gave a significant reduction in startup times.
However, for editor builds, this actually causes significantly higher startup times (20s longer, or more).
#jira UE-143919
#preflight 62194531f014007cf8c76dee
#rb Josh.Adams
#lockdown julien.marchand
#ROBOMERGE-AUTHOR: jon.nabozny
#ROBOMERGE-SOURCE: CL 19157899 in //UE5/Release-5.0/... via CL 19159862
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19161503 by jon nabozny in ue5-main branch]