Ark Server API (ASA) - Wiki
Loading...
Searching...
No Matches
ConfigHierarchy.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Misc/ConfigTypes.h"
6
7// See FConfigContext.cpp for the types here
8
10{
11 /**************************************************
12 **** CRITICAL NOTES
13 **** If you change this array, you need to also change EnumerateConfigFileLocations() in ConfigHierarchy.cs!!!
14 **** And maybe UObject::GetDefaultConfigFilename(), UObject::GetGlobalUserConfigFilename()
15 **************************************************/
16
17 // Engine/Base.ini
18 { TEXT("AbsoluteBase"), TEXT("{ENGINE}/Config/Base.ini"), EConfigLayerFlags::NoExpand},
19
20 // Engine/Base*.ini
21 { TEXT("Base"), TEXT("{ENGINE}/Config/Base{TYPE}.ini") },
22 // Engine/Platform/BasePlatform*.ini
23 { TEXT("BasePlatform"), TEXT("{ENGINE}/Config/{PLATFORM}/Base{PLATFORM}{TYPE}.ini") },
24 // Project/Default*.ini
25 { TEXT("ProjectDefault"), TEXT("{PROJECT}/Config/Default{TYPE}.ini"), EConfigLayerFlags::AllowCommandLineOverride },
26 // Project/Generated*.ini Reserved for files generated by build process and should never be checked in
27 { TEXT("ProjectGenerated"), TEXT("{PROJECT}/Config/Generated{TYPE}.ini") },
28 // Project/Custom/CustomConfig/Default*.ini only if CustomConfig is defined
29 { TEXT("CustomConfig"), TEXT("{PROJECT}/Config/Custom/{CUSTOMCONFIG}/Default{TYPE}.ini"), EConfigLayerFlags::RequiresCustomConfig },
30 // Engine/Platform/Platform*.ini
31 { TEXT("EnginePlatform"), TEXT("{ENGINE}/Config/{PLATFORM}/{PLATFORM}{TYPE}.ini") },
32 // Project/Platform/Platform*.ini
33 { TEXT("ProjectPlatform"), TEXT("{PROJECT}/Config/{PLATFORM}/{PLATFORM}{TYPE}.ini") },
34 // Project/Platform/GeneratedPlatform*.ini Reserved for files generated by build process and should never be checked in
35 { TEXT("ProjectPlatformGenerated"), TEXT("{PROJECT}/Config/{PLATFORM}/Generated{PLATFORM}{TYPE}.ini") },
36 // Project/Platform/Custom/CustomConfig/Platform*.ini only if CustomConfig is defined
37 { TEXT("CustomConfigPlatform"), TEXT("{PROJECT}/Config/{PLATFORM}/Custom/{CUSTOMCONFIG}/{PLATFORM}{TYPE}.ini"), EConfigLayerFlags::RequiresCustomConfig },
38 // UserSettings/.../User*.ini
39 { TEXT("UserSettingsDir"), TEXT("{USERSETTINGS}Unreal Engine/Engine/Config/User{TYPE}.ini"), EConfigLayerFlags::NoExpand },
40 // UserDir/.../User*.ini
41 { TEXT("UserDir"), TEXT("{USER}Unreal Engine/Engine/Config/User{TYPE}.ini"), EConfigLayerFlags::NoExpand },
42 // Project/User*.ini
43 { TEXT("GameDirUser"), TEXT("{PROJECT}/Config/User{TYPE}.ini"), EConfigLayerFlags::NoExpand },
44};
45
46
47/// <summary>
48/// Plugins don't need to look at the same number of insane layers. Here PROJECT is the Plugin dir
49/// </summary>
51{
52 // Engine/Base.ini
53 { TEXT("AbsoluteBase"), TEXT("{ENGINE}/Config/Base.ini"), EConfigLayerFlags::NoExpand},
54
55 // Plugin/Base*.ini
56 { TEXT("PluginBase"), TEXT("{PLUGIN}/Config/Base{TYPE}.ini") },
57 // Plugin/Default*.ini (we use Base and Default as we can have both depending on Engine or Project plugin, but going forward we should stick with Default)
58 { TEXT("PluginDefault"), TEXT("{PLUGIN}/Config/Default{TYPE}.ini") },
59 // Plugin/Platform/Platform*.ini
60 { TEXT("PluginPlatform"), TEXT("{PLUGIN}/Config/{PLATFORM}/{PLATFORM}{TYPE}.ini") },
61 // Project/Default.ini
62 { TEXT("ProjectDefault"), TEXT("{PROJECT}/Config/Default{TYPE}.ini") },
63 // Project/Platform/.ini
64 { TEXT("ProjectDefault"), TEXT("{PROJECT}/Config/{PLATFORM}/{PLATFORM}{TYPE}.ini") },
65};
66
67
68
69/**************************************************
70**** CRITICAL NOTES
71**** If you change these arrays, you need to also change EnumerateConfigFileLocations() in ConfigHierarchy.cs!!!
72**************************************************/
74{
75 // No replacements
76 { nullptr, nullptr, nullptr, nullptr, EConfigExpansionFlags::All },
77
78 // Restricted Locations
79 {
80 TEXT("{ENGINE}/"), TEXT("{ENGINE}/Restricted/NotForLicensees/"),
81 TEXT("{PROJECT}/Config/"), TEXT("{RESTRICTEDPROJECT_NFL}/Config/"),
83 },
84 {
85 TEXT("{ENGINE}/"), TEXT("{ENGINE}/Restricted/NoRedist/"),
86 TEXT("{PROJECT}/Config/"), TEXT("{RESTRICTEDPROJECT_NR}/Config/"),
88 },
89
90 // Platform Extensions
91 {
92 TEXT("{ENGINE}/Config/{PLATFORM}/"), TEXT("{EXTENGINE}/Config/"),
93 TEXT("{PROJECT}/Config/{PLATFORM}/"), TEXT("{EXTPROJECT}/Config/"),
95 },
96
97 // Platform Extensions in Restricted Locations
98 //
99 // Regarding the commented EConfigExpansionFlags::ForPlugin expansions: in the interest of keeping plugin ini scanning fast,
100 // we disable these expansions for plugins because they are not used by Epic, and are unlikely to be used by licensees. If
101 // we can make scanning fast (caching what directories exist, etc), then we could turn this back on to be future-proof.
102 {
103 TEXT("{ENGINE}/Config/{PLATFORM}/"), TEXT("{ENGINE}/Restricted/NotForLicensees/Platforms/{PLATFORM}/Config/"),
104 TEXT("{PROJECT}/Config/{PLATFORM}/"), TEXT("{RESTRICTEDPROJECT_NFL}/Platforms/{PLATFORM}/Config/"),
105 EConfigExpansionFlags::ForUncooked | EConfigExpansionFlags::ForCooked // | EConfigExpansionFlags::ForPlugin
106 },
107 {
108 TEXT("{ENGINE}/Config/{PLATFORM}/"), TEXT("{ENGINE}/Restricted/NoRedist/Platforms/{PLATFORM}/Config/"),
109 TEXT("{PROJECT}/Config/{PLATFORM}/"), TEXT("{RESTRICTEDPROJECT_NR}/Platforms/{PLATFORM}/Config/"),
110 EConfigExpansionFlags::ForUncooked // | EConfigExpansionFlags::ForPlugin
111 },
112};
static FConfigLayer GPluginLayers[]
Plugins don't need to look at the same number of insane layers. Here PROJECT is the Plugin dir.
static FConfigLayer GConfigLayers[]
static FConfigLayerExpansion GConfigExpansions[]
EConfigExpansionFlags
Definition Enums.h:18841
EConfigLayerFlags
Definition Enums.h:11993
#define TEXT(x)
Definition Platform.h:1108