408 Commits

Author SHA1 Message Date
will brown
71ce7a302e Removing the field "Plugins" on update to force the array to be rebuilt in the same order as the plugins array rather than new items being appended to the end
#rb robert.millar

[CL 32500174 by will brown in 5.4 branch]
2024-03-26 02:54:06 -04:00
jamie dale
ce1393cb22 Implemented localization resource unloading for plugins
This leverages 4-bytes of padding in FDisplayStringEntry to store an ID (an int32 index generated via FTextLocalizationManager::GetLocalizationTargetPathId) that is used to tag each display string with the localization target that it belongs to, without increasing the size of DisplayStringLookupTable.

There is an additional LUT mapping each localization target ID to its text IDs to act as an accelerator for HandleLocalizationTargetsUnmounted, however this LUT only tracks text IDs associated with localization data loaded via HandleLocalizationTargetsMounted to minimize the memory impact of this additional tracking. Without this LUT HandleLocalizationTargetsUnmounted would need to spin the entire live table each time, which is not acceptable from a performance standpoint.

Now that HandleLocalizationTargetsUnmounted is implemented it's also been hooked into GFP deactivation, to mirror how HandleLocalizationTargetsMounted was hooked into GFP activation.

#rb anton.dunchev

[CL 32499628 by jamie dale in 5.4 branch]
2024-03-26 02:33:01 -04:00
jamie dale
d595ce65cb 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 32496881 by jamie dale in 5.4 branch]
2024-03-26 00:50:54 -04:00
jamie dale
e197fc8f11 Don't load localization data for unmounted explicitly loaded plugins
[FYI] Leon.Huang
#rnx

[CL 32496490 by jamie dale in 5.4 branch]
2024-03-26 00:38:32 -04:00
will brown
7f11ae8bfc 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 32488936 by will brown in 5.4 branch]
2024-03-25 18:26:10 -04:00
david punsetmartinez
135094f2ae Keep shared reference of IPlugin instead of its raw pointer
[REVIEW] [at]dave.belanger [at]robert.manuszewski
#rb Dave.Belanger, Robert.Manuszewski

[CL 32488701 by david punsetmartinez in 5.4 branch]
2024-03-25 18:20:12 -04:00
will brown
414bc559cd 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 32487889 by will brown in 5.4 branch]
2024-03-25 18:04:19 -04:00
will brown
d6342c2f1a 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 32487791 by will brown in 5.4 branch]
2024-03-25 18:03:41 -04:00
will brown
833360b456 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 31506543 by will brown in 5.4 branch]
2024-02-14 20:34:05 -05:00
dan oconnor
f73f31660e Support important messages for platform splash screen and improve plugin managers slow task reporting
#rb ben.hoffman

[CL 31026773 by dan oconnor in 5.4 branch]
2024-01-30 18:18:17 -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
markus breyer
7e623a0aeb 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 29416324 by markus breyer in ue5-main branch]
2023-11-03 14:58:25 -04:00
andrew scheidecker
91489e5c60 Add an optional Verse language version field to uplugins. There's currently only one valid version: 0.
#rb Markus.Breyer

[CL 29275425 by andrew scheidecker in ue5-main branch]
2023-10-31 10:57:17 -04:00