2019-12-26 23:01:54 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2018-01-02 15:30:26 -05:00
2017-05-03 14:18:32 -04:00
using System.Collections.Generic ;
2020-12-21 23:07:37 -04:00
using EpicGames.Core ;
2017-05-03 14:18:32 -04:00
namespace UnrealBuildTool
{
/// <summary>
/// Stores information about a plugin that is being built for a target
/// </summary>
class UEBuildPlugin
{
/// <summary>
/// Information about the plugin
/// </summary>
public PluginInfo Info ;
/// <summary>
/// Modules that this plugin belongs to
/// </summary>
2018-01-20 11:19:29 -05:00
public List < UEBuildModuleCPP > Modules = new List < UEBuildModuleCPP > ( ) ;
2017-05-03 14:18:32 -04:00
/// <summary>
/// Recursive
/// </summary>
2020-12-20 18:47:42 -04:00
public HashSet < UEBuildPlugin > ? Dependencies ;
2017-05-03 14:18:32 -04:00
/// <summary>
/// Whether the descriptor for this plugin is needed at runtime; because it has modules or content which is used, or because it references another module that does.
/// </summary>
public bool bDescriptorNeededAtRuntime ;
/// <summary>
/// Whether this descriptor is referenced non-optionally by something else; a project file or other plugin. This is recursively applied to the plugin's references.
/// </summary>
public bool bDescriptorReferencedExplicitly ;
2021-09-09 12:10:41 -04:00
/// <summary>
/// Chain of references to this plugin
/// </summary>
public string ReferenceChain ;
2017-05-03 14:18:32 -04:00
/// <summary>
/// Constructor
/// </summary>
/// <param name="Info">The static plugin information</param>
2021-09-09 12:10:41 -04:00
/// <param name="ReferenceChain">Chain of references to this plugin</param>
public UEBuildPlugin ( PluginInfo Info , string ReferenceChain )
2017-05-03 14:18:32 -04:00
{
this . Info = Info ;
2021-09-09 12:10:41 -04:00
this . ReferenceChain = ReferenceChain ;
2017-05-03 14:18:32 -04:00
}
/// <summary>
/// Accessor for the name of this plugin
/// </summary>
2023-05-30 18:01:50 -04:00
public string Name = > Info . Name ;
2017-05-03 14:18:32 -04:00
/// <summary>
/// Accessor for the file for this plugin
/// </summary>
2023-05-30 18:01:50 -04:00
public FileReference File = > Info . File ;
2017-05-03 14:18:32 -04:00
2019-08-12 17:59:42 -04:00
/// <summary>
/// Accessor for the child files for this plugin
/// </summary>
2023-05-30 18:01:50 -04:00
public List < FileReference > ChildFiles = > Info . ChildFiles ;
2019-08-12 17:59:42 -04:00
2017-07-21 12:42:36 -04:00
/// <summary>
/// Accessor for the type of the plugin
/// </summary>
2023-05-30 18:01:50 -04:00
public PluginType Type = > Info . Type ;
2017-07-21 12:42:36 -04:00
2017-05-03 14:18:32 -04:00
/// <summary>
/// Accessor for this plugin's root directory
/// </summary>
2023-05-30 18:01:50 -04:00
public DirectoryReference Directory = > Info . Directory ;
2017-05-03 14:18:32 -04:00
/// <summary>
/// Accessor for this plugin's descriptor
/// </summary>
2023-05-30 18:01:50 -04:00
public PluginDescriptor Descriptor = > Info . Descriptor ;
2017-05-03 14:18:32 -04:00
/// <summary>
/// Returns the name of this plugin for debugging
/// </summary>
/// <returns>Name of the plugin</returns>
public override string ToString ( )
{
return Info . Name ;
}
}
}