Nuke.Unreal
Build Unreal apps in Style.
Loading...
Searching...
No Matches
PluginDescriptor.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4
5namespace Nuke.Unreal.Plugins;
6
7/// <summary>
8/// The version format for .uplugin files. This rarely changes now; plugin descriptors should maintain backwards compatibility automatically.
9/// </summary>
11{
12 /// <summary>
13 /// Invalid
14 /// </summary>
15 Invalid = 0,
16
17 /// <summary>
18 /// Initial version
19 /// </summary>
20 Initial = 1,
21
22 /// <summary>
23 /// Adding SampleNameHash
24 /// </summary>
25 NameHash = 2,
26
27 /// <summary>
28 /// Unifying plugin/project files (since abandoned, but backwards compatibility maintained)
29 /// </summary>
31
32 /// <summary>
33 /// This needs to be the last line, so we can calculate the value of Latest below
34 /// </summary>
36
37 /// <summary>
38 /// The latest plugin descriptor version
39 /// </summary>
41}
42
43/// <summary>
44/// In-memory representation of a .uplugin file
45/// </summary>
46/// <param name="FileVersion">
47/// Descriptor version number
48/// </param>
49/// <param name="Version">
50/// Version number for the plugin. The version number must increase with every version of the plugin, so that the system
51/// can determine whether one version of a plugin is newer than another, or to enforce other requirements. This version
52/// number is not displayed in front-facing UI. Use the VersionName for that.
53/// </param>
54/// <param name="VersionName">
55/// Name of the version for this plugin. This is the front-facing part of the version number. It doesn't need to match
56/// the version number numerically, but should be updated when the version number is increased accordingly.
57/// </param>
58/// <param name="FriendlyName">
59/// Friendly name of the plugin
60/// </param>
61/// <param name="Description">
62/// Description of the plugin
63/// </param>
64/// <param name="Category">
65/// The name of the category this plugin
66/// </param>
67/// <param name="CreatedBy">
68/// The company or individual who created this plugin. This is an optional field that may be displayed in the user interface.
69/// </param>
70/// <param name="CreatedByURL">
71/// Hyperlink URL string for the company or individual who created this plugin. This is optional.
72/// </param>
73/// <param name="DocsURL">
74/// Documentation URL string.
75/// </param>
76/// <param name="MarketplaceURL">
77/// Marketplace URL for this plugin. This URL will be embedded into projects that enable this plugin, so we can redirect to the marketplace if a user doesn't have it installed.
78/// </param>
79/// <param name="SupportURL">
80/// Support URL/email for this plugin.
81/// </param>
82/// <param name="EngineVersion">
83/// Sets the version of the engine that this plugin is compatible with.
84/// </param>
85/// <param name="IsPluginExtension">4
86/// If true, this plugin from a platform extension extending another plugin */
87/// </param>
88/// <param name="SupportedTargetPlatforms">
89/// List of platforms supported by this plugin. This list will be copied to any plugin reference from a project file, to allow filtering entire plugins from staged builds.
90/// </param>
91/// <param name="SupportedPrograms">
92/// List of programs supported by this plugin.
93/// </param>
94/// <param name="Modules">
95/// List of all modules associated with this plugin
96/// </param>
97/// <param name="LocalizationTargets">
98/// List of all localization targets associated with this plugin
99/// </param>
100/// <param name="EnabledByDefault">
101/// Whether this plugin should be enabled by default for all projects
102/// </param>
103/// <param name="CanContainContent">
104/// Can this plugin contain content?
105/// </param>
106/// <param name="CanContainVerse">
107/// Can this plugin contain Verse code (either in content directory or in any of its modules)?
108/// </param>
109/// <param name="IsBetaVersion">
110/// Marks the plugin as beta in the UI
111/// </param>
112/// <param name="IsExperimentalVersion">
113/// Marks the plugin as experimental in the UI
114/// </param>
115/// <param name="Installed">
116/// Set for plugins which are installed
117/// </param>
118/// <param name="RequiresBuildPlatform">
119/// For plugins that are under a platform folder (eg. /IOS/), determines whether compiling the plugin requires the build platform and/or SDK to be available
120/// </param>
121/// <param name="IsSealed">
122/// When true, prevents other plugins from depending on this plugin
123/// </param>
124/// <param name="NoCode">
125/// When true, this plugin should not contain any code or modules.
126/// </param>
127/// <param name="ExplicitlyLoaded">
128/// When true, this plugin's modules will not be loaded automatically nor will it's content be mounted automatically. It will load/mount when explicitly requested and LoadingPhases will be ignored
129/// </param>
130/// <param name="HasExplicitPlatforms">
131/// When true, an empty SupportedTargetPlatforms is interpeted as 'no platforms' with the expectation that explict platforms will be added in plugin platform extensions
132/// </param>
133/// <param name="PreBuildSteps">
134/// Set of pre-build steps to execute, keyed by host platform name.
135/// </param>
136/// <param name="PostBuildSteps">
137/// Set of post-build steps to execute, keyed by host platform name.
138/// </param>
139/// <param name="Plugins">
140/// Additional plugins that this plugin depends on
141/// </param>
142/// <param name="DisallowedPlugins">
143/// Plugins that this plugin should never depend on
144/// </param>
145public record class PluginDescriptor(
146 int FileVersion = 3,
147 int Version = 1,
148 string? VersionName = null,
149 string? FriendlyName = null,
150 string? Description = null,
151 string? Category = null,
152 string? CreatedBy = null,
153 string? CreatedByURL = null,
154 string? DocsURL = null,
155 string? MarketplaceURL = null,
156 string? SupportURL = null,
157 string? EngineVersion = null,
158 bool? IsPluginExtension = null,
159 List<UnrealPlatform>? SupportedTargetPlatforms = null,
160 List<string>? SupportedPrograms = null,
161 List<ModuleDescriptor>? Modules = null,
162 List<LocalizationTargetDescriptor>? LocalizationTargets = null,
163 bool? EnabledByDefault = null,
164 bool? CanContainContent = null,
165 bool? CanContainVerse = null,
166 bool? IsBetaVersion = null,
167 bool? IsExperimentalVersion = null,
168 bool? Installed = null,
169 bool? RequiresBuildPlatform = null,
170 bool? IsSealed = null,
171 bool? NoCode = null,
172 bool? ExplicitlyLoaded = null,
173 bool? HasExplicitPlatforms = null,
174 Dictionary<UnrealPlatform, List<string>>? PreBuildSteps = null,
175 Dictionary<UnrealPlatform, List<string>>? PostBuildSteps = null,
176 List<PluginReferenceDescriptor>? Plugins = null,
177 List<string>? DisallowedPlugins = null
178);
High level representation of an Unreal Engine version.
record class PluginDescriptor(int FileVersion=3, int Version=1, string? VersionName=null, string? FriendlyName=null, string? Description=null, string? Category=null, string? CreatedBy=null, string? CreatedByURL=null, string? DocsURL=null, string? MarketplaceURL=null, string? SupportURL=null, string? EngineVersion=null, bool? IsPluginExtension=null, List< UnrealPlatform >? SupportedTargetPlatforms=null, List< string >? SupportedPrograms=null, List< ModuleDescriptor >? Modules=null, List< LocalizationTargetDescriptor >? LocalizationTargets=null, bool? EnabledByDefault=null, bool? CanContainContent=null, bool? CanContainVerse=null, bool? IsBetaVersion=null, bool? IsExperimentalVersion=null, bool? Installed=null, bool? RequiresBuildPlatform=null, bool? IsSealed=null, bool? NoCode=null, bool? ExplicitlyLoaded=null, bool? HasExplicitPlatforms=null, Dictionary< UnrealPlatform, List< string > >? PreBuildSteps=null, Dictionary< UnrealPlatform, List< string > >? PostBuildSteps=null, List< PluginReferenceDescriptor >? Plugins=null, List< string >? DisallowedPlugins=null)
In-memory representation of a .uplugin file.
PluginDescriptorVersion
The version format for .uplugin files. This rarely changes now; plugin descriptors should maintain ba...
@ LatestPlusOne
This needs to be the last line, so we can calculate the value of Latest below.
@ ProjectPluginUnification
Unifying plugin/project files (since abandoned, but backwards compatibility maintained)
@ Latest
The latest plugin descriptor version.