Commit Graph

410 Commits

Author SHA1 Message Date
jamie dale
87c34119f4 Don't mount localization data for explicitly loaded plugins by default
This allows them to separate their mounting and content loading into two phases, such as allowing a GFP to mount the plugin when "registered" and defer mounting the localization data until "activating".

Note: Anything that was calling one of the MountExplicitlyLoadedPlugin functions to load a plugin, will now need to also call MountExplicitlyLoadedPluginLocalizationData if it wants to also mount the localization data.

#rb anton.dunchev, Leon.Huang

[CL 32029617 by jamie dale in ue5-main branch]
2024-03-05 14:18:02 -05:00
jamie dale
edef03928d Don't load localization data for unmounted explicitly loaded plugins
[FYI] Leon.Huang
#rnx

[CL 31978251 by jamie dale in ue5-main branch]
2024-03-02 17:41:16 -05:00
matt breindel
3c6cf59c14 Infrastructure and general implementation of a new system for providing improve error messages when we skip loading a package during import because the plugin wasn't mounted. the plugin manager and the GameFeatureSubsystem now have an opportunity to provide additional information to the user about why the plugin wasn't loaded or the package wasn't found.
#jira UE-205029
[REVIEW] [at]will.brown [at]*eric.knapik [at]*danny.couture
[FYI] [at]francis.hurteau
#rb danny.couture, Eric.Knapik

[CL 31957199 by matt breindel in ue5-main branch]
2024-03-01 16:48:08 -05:00
will brown
9171aa0825 Added new function suite to return found plugins that are enabled. Updated the LoadBuiltInGameFeaturePlugins sort function to skip plugin dependencies that are not enabled for correctness however it does not impact the final EnabledPlugins list
#rb Eric.Knapik

[CL 31824835 by will brown in ue5-main branch]
2024-02-26 19:29:36 -05:00
david punsetmartinez
35b92de9d0 Keep shared reference of IPlugin instead of its raw pointer
[REVIEW] [at]dave.belanger [at]robert.manuszewski
#rb Dave.Belanger, Robert.Manuszewski

[CL 31808550 by david punsetmartinez in ue5-main branch]
2024-02-26 12:44:06 -05:00
will brown
1895b96763 Removing the UE_LOG bandaid now that the real solution is submitted. The log is also missing the file name context and it wasn't that helpful.
[CL 31779526 by will brown in ue5-main branch]
2024-02-23 17:17:31 -05:00
will brown
89e769075b In editor, optional plugin dependencies need to be compiled enabled or command line enabled otherwise they are ignored. Updated UBT to write out the BuildPlugins names to the target receipt or compiled into the executable.
#rb Joe.Kirchoff, Justin.Marcus
[FYI] Eric.Knapik

[CL 31774544 by will brown in ue5-main branch]
2024-02-23 15:23:25 -05:00
will brown
b22ae9215d Adding UE_LOG when the descriptor fails to read or parse as a bandaid. There is a race condition when calling FText::Format when FInternationalization is not initialized yet. The crash prevents the plugin name from outputing.
#rb bhavan.vaishnav
[FYI] guillaume.patry

[CL 31506576 by will brown in ue5-main branch]
2024-02-14 20:34:26 -05:00
josh adams
08e95db7d2 Fixed the warning that caused the original backout
[Backout] - CL31459949
[FYI] bob.tellez
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL31443953
[FYI] Josh.Adams
Original CL Desc
-----------------------------------------------------------------
Phase 1 of the FConfigBranch changes:
Introduced FConfigBranch which maintains logic and data for each individual branch of GConfig (Engine, Game, Input, DeviceProfiles, etc), with static and dynamic layers
Introduced FConfigCommandStream which is how each layer is loaded, and Apply'd to an FConfigFile
Added a new way of making a "diff" of in-memory vs what's loaded, which creates an FConfigCommandStream that can be re-applied (more useful in Phase 2, see below)
Expectation is no visible differences from before this change, as it's mostly internal data structure changes
Phase 2 is where the functional changes will happen, with the dynamic layers being able to be removed at runtime, and the state of GConfig is maintained as expdected
The editor does maintain full state of where config values come from, so the "getini" command in the editor will show a lot more information now
Runtime will not keep any state, so unloading dynamic layers is not supported by default (running with -ConfigReplayMethod=1 or 2 will allow for it, but will use more memory)

#rb david.harvey
#jira UE-201472

[CL 31470013 by josh adams in ue5-main branch]
2024-02-14 08:59:25 -05:00
bob tellez
005a9bf20c [Backout] - CL31443953
[FYI] Josh.Adams
Original CL Desc
-----------------------------------------------------------------
Phase 1 of the FConfigBranch changes:
Introduced FConfigBranch which maintains logic and data for each individual branch of GConfig (Engine, Game, Input, DeviceProfiles, etc), with static and dynamic layers
Introduced FConfigCommandStream which is how each layer is loaded, and Apply'd to an FConfigFile
Added a new way of making a "diff" of in-memory vs what's loaded, which creates an FConfigCommandStream that can be re-applied (more useful in Phase 2, see below)
Expectation is no visible differences from before this change, as it's mostly internal data structure changes
Phase 2 is where the functional changes will happen, with the dynamic layers being able to be removed at runtime, and the state of GConfig is maintained as expdected
The editor does maintain full state of where config values come from, so the "getini" command in the editor will show a lot more information now
Runtime will not keep any state, so unloading dynamic layers is not supported by default (running with -ConfigReplayMethod=1 or 2 will allow for it, but will use more memory)

#rb david.harvey
#jira UE-201472

[CL 31459959 by bob tellez in ue5-main branch]
2024-02-13 23:13:53 -05:00
josh adams
bf1468e4b0 Phase 1 of the FConfigBranch changes:
Introduced FConfigBranch which maintains logic and data for each individual branch of GConfig (Engine, Game, Input, DeviceProfiles, etc), with static and dynamic layers
Introduced FConfigCommandStream which is how each layer is loaded, and Apply'd to an FConfigFile
Added a new way of making a "diff" of in-memory vs what's loaded, which creates an FConfigCommandStream that can be re-applied (more useful in Phase 2, see below)
Expectation is no visible differences from before this change, as it's mostly internal data structure changes
Phase 2 is where the functional changes will happen, with the dynamic layers being able to be removed at runtime, and the state of GConfig is maintained as expdected
The editor does maintain full state of where config values come from, so the "getini" command in the editor will show a lot more information now
Runtime will not keep any state, so unloading dynamic layers is not supported by default (running with -ConfigReplayMethod=1 or 2 will allow for it, but will use more memory)

#rb david.harvey
#jira UE-201472

[CL 31444162 by josh adams in ue5-main branch]
2024-02-13 15:40:54 -05:00
dan oconnor
b700017558 Support important messages for platform splash screen and improve plugin managers slow task reporting
#rb ben.hoffman

[CL 31024101 by dan oconnor in ue5-main branch]
2024-01-30 17:34:47 -05:00
holger schmidt
1bd34d8c73 Added option to prevent unload of code library for GameFeaturePlugins.
#rb Justin.Marcus

[CL 30816240 by holger schmidt in ue5-main branch]
2024-01-23 15:40:21 -05:00
steve robb
66266c6a11 Fixed up DerivedDataCache, DesktopPlatform, ApplicationCore, AssetRegistry, Core, CoreUObject, Projects, Sockets code to use EAllowShrinking instead of bools.
[CL 30676428 by steve robb in ue5-main branch]
2024-01-17 19:51:06 -05:00
marc audy
56a32fea9d Silence false V621, V654, and V1078 warnings mostly caused by TStaticArray, placement new, or population of the array inside a lambda
[CL 30587485 by marc audy in ue5-main branch]
2024-01-12 00:52:57 -05:00
marc audy
40118bf525 Silence warnings
[CL 30444877 by marc audy in ue5-main branch]
2023-12-22 17:21:37 -05:00
ahmed siddique
d70352cd9b Android SingleInstance Service
Tested on Android with Lyra and also preflight checks.

#android
#rb chris.babcock

[CL 30244258 by ahmed siddique in ue5-main branch]
2023-12-11 13:59:52 -05:00
leon huang
95acda43f6 Localization:
Introduced opt in localization for plugins. Plugins can be set to never have localization config files generated, auto-generated or have the localization pipeline use the user generated localization config files.
- All existing plugins with localization targets will be retrofitted to have a LocalizationConfigGenerationPolicy of Never to match current behavior.
- Introduced the LocalizationConfigGenerationPolicy enum to plugin descriptors and LocalizationTargetDescriptors. This controls whether plugin localization targets use user generated localization config files, auto-generated localization config files or if the plugin is never to have localization config files and thus not localized.
- Introduced a step in the Localize UAT command to auto-generate localization config files with default settings for plugins that opt into the auto-generation feature.
- Added a clean up step in the Localize uAT command to delete all auto-generated files and folders from a run of the command.
- Added a -PreserveAutoGeneratedResources flag for the Localize UAT command to preserve the auto-generated files and directories for debugging.
-Updated both the C# and C++ version of the LocalizationTargetDescriptor to contain the new LocalizationConfigGenerationPolicy and have them read and written from the plugin descriptor files.
- Updated the NewPluginLocalizationTarget command under the LocalizationTargetEditor UAT command to accept a LocalizationConfigGenerationPolicy as a command line argument for all plugin localization targets to be created.
If the parameter is not specified, the parameter defaults to the Auto LocalizationConfigGenerationPolicy for all the plugins specified.
#rb: Jamie.Dale
#jira: UE-194880, UE-194879
#test Used the NewPluginLocalizationTarget sub-command to create plugins with an auto localization target. Used the Localize UAT command to perform a gather for such a plugin. Config files were indeed generated, the plugin was gathered and the loc data stored in PluginName/Content/Localization and then the config files were deleted. No fuss, no muss

[CL 30172150 by leon huang in ue5-main branch]
2023-12-06 19:03:56 -05:00
matt peters
3274ca2761 PluginManager: Improve feedback when a required plugin is unavailable and the process is terminated.
#rnx
#rb Josh.Adams

[CL 30029239 by matt peters in ue5-main branch]
2023-11-30 18:49:18 -05:00
marc audy
763a611985 Fix C4072 warnings
#rnx

[CL 29852844 by marc audy in ue5-main branch]
2023-11-20 17:26:53 -05:00
jeremie roy
f2b22d2836 Add optional plugins to DefaultEngine config
#rb jason.walter
#jira UE-200398

[CL 29777963 by jeremie roy in ue5-main branch]
2023-11-16 10:37:37 -05:00
dave belanger
bd996ec826 Plugin descriptor load/save api that takes in a TCHAR* for the filename instead of an FString
#rb Rex.Hill
#rnx

[CL 29639629 by dave belanger in ue5-main branch]
2023-11-10 10:16:09 -05:00
andrew scheidecker
422df66985 Fix FPluginDescriptor::UpdateJson ignoring VerseVersion field, and not removing other Verse-related fields when appropriate.
#rb Dave.Belanger, Markus.Breyer

[CL 29486915 by andrew scheidecker in ue5-main branch]
2023-11-06 09:14:49 -05:00
bob tellez
2622494073 [Backout] - CL29418739, restoring 29416045
Original CL Desc
-----------------------------------------------------------------
New VerseScope "InternalUser" and renamed "User" to "PublicUser"

- new enumerator for VerseScope named "InternalUser"
- renamed existing VerseScope "User" to "PublicUser" - this is possible without breaking existing projects since the VerseScope is not written out to the uplugin file when it is set to "User"

#rb andrew.scheidecker
#rnx

[CL 29419291 by bob tellez in ue5-main branch]
2023-11-03 16:08:07 -04:00
bob tellez
08cd9760a6 [Backout] - CL29416045
[FYI] Markus.Breyer
Original CL Desc
-----------------------------------------------------------------
New VerseScope "InternalUser" and renamed "User" to "PublicUser"

- new enumerator for VerseScope named "InternalUser"
- renamed existing VerseScope "User" to "PublicUser" - this is possible without breaking existing projects since the VerseScope is not written out to the uplugin file when it is set to "User"

#rb andrew.scheidecker
#rnx

[CL 29418991 by bob tellez in ue5-main branch]
2023-11-03 16:01:34 -04:00