ConfigFilesPluginsCannotOverride

ConfigFilesPluginsCannotOverride

#Overview

name: ConfigFilesPluginsCannotOverride

The value of this variable can be defined or overridden in .ini config files. 1 .ini config file referencing this setting variable.

It is referenced in 2 C++ source files.

#Summary

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEngine.ini:3472, section: [Plugins]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Runtime/Projects/Private/PluginManager.cpp:1903

Scope (from outer to inner):

file
function     bool FPluginManager::ConfigureEnabledPlugins

Source code excerpt:

			}

			TArray<FString> ConfigFilesPluginsCannotOverride;
			GConfig->GetArray(TEXT("Plugins"), TEXT("ConfigFilesPluginsCannotOverride"), ConfigFilesPluginsCannotOverride, GEngineIni);

			TSet<FString> AllIniFiles;

			if (PluginSystemDefs::IsCachingIniFilesForProcessing())
			{
				SCOPED_BOOT_TIMING("ParallelPluginEnabling::FindIniFiles");

#Loc: <Workspace>/Engine/Source/Runtime/Projects/Private/PluginManager.cpp:1936

Scope (from outer to inner):

file
function     bool FPluginManager::ConfigureEnabledPlugins
lambda-function

Source code excerpt:


			// Mount all the enabled plugins
			ParallelFor(PluginsArray.Num(), [&PluginsArray, &ConfigCS, &PluginPakCS, &PendingConfigsCS, &PendingConfigs, &ConfigFilesPluginsCannotOverride, &AllIniFiles, this](int32 Index)
			{
				FString PlatformName = FPlatformProperties::PlatformName();
				FPlugin& Plugin = *PluginsArray[Index];
				UE_LOG(LogPluginManager, Log, TEXT("Mounting %s plugin %s"), *EnumToString(Plugin.Type), *Plugin.GetName());
				UE_LOG(LogPluginManager, Verbose, TEXT("Plugin path: %s"), *Plugin.FileName);

				auto AppendPluginConfigData = [&ConfigFilesPluginsCannotOverride](FConfigFile& DestinationPluginConfig, const FString& DestinationPluginConfigFilename, const FString& SourcePluginName, const FString& SourcePluginConfigDir, const FString& SourcePluginConfigFile)
				{
					UE_LOG(LogPluginManager, Log, TEXT("Found config from plugin[%s] %s"), *SourcePluginName, *DestinationPluginConfigFilename);

					FString BaseConfigFile = *FPaths::GetBaseFilename(SourcePluginConfigFile);
					if (ConfigFilesPluginsCannotOverride.Contains(BaseConfigFile))
					{
						// Not allowed, skip it
						FText FailureMessage = FText::Format(LOCTEXT("PluginOverrideFailureFormat", "Plugin '{0}' cannot override config file: '{1}'"), FText::FromString(SourcePluginName), FText::FromString(BaseConfigFile));
						FText DialogTitle = LOCTEXT("PluginConfigFileOverride", "Plugin config file override");
						UE_LOG(LogPluginManager, Error, TEXT("%s"), *FailureMessage.ToString());
						FMessageDialog::Open(EAppMsgType::Ok, FailureMessage, DialogTitle);