// Copyright Epic Games, Inc. All Rights Reserved. using EpicGames.Core; namespace UnrealBuildTool { /// /// Stores information about where a module rules object came from, and how it can be used. /// class ModuleRulesContext { /// /// The scope for this module. Used to validate references to other modules. /// public RulesScope Scope; /// /// The default directory for output files /// public DirectoryReference DefaultOutputBaseDir; /// /// The plugin that this module belongs to /// public PluginInfo? Plugin; /// /// Whether this module should be included in the default hot reload set /// public bool bCanHotReload; /// /// Whether this module should be compiled with optimization disabled in DebugGame configurations (ie. whether it's a game module). /// public bool bCanBuildDebugGame; /// /// Whether this module can be used for generating shared PCHs /// public bool bCanUseForSharedPCH; /// /// Whether to treat this module as a game module for UHT ordering /// public bool bClassifyAsGameModuleForUHT; /// /// The default module type for UnrealHeaderTool. Do not use this for inferring other things about the module. /// public UHTModuleType? DefaultUHTModuleType; /// /// Constructor /// public ModuleRulesContext(RulesScope Scope, DirectoryReference DefaultOutputBaseDir) { this.Scope = Scope; this.DefaultOutputBaseDir = DefaultOutputBaseDir; bCanUseForSharedPCH = true; } /// /// Copy constructor /// /// The context to copy from public ModuleRulesContext(ModuleRulesContext Other) { Scope = Other.Scope; DefaultOutputBaseDir = Other.DefaultOutputBaseDir; Plugin = Other.Plugin; bCanHotReload = Other.bCanHotReload; bCanBuildDebugGame = Other.bCanBuildDebugGame; bCanUseForSharedPCH = Other.bCanUseForSharedPCH; bClassifyAsGameModuleForUHT = Other.bClassifyAsGameModuleForUHT; DefaultUHTModuleType = Other.DefaultUHTModuleType; } } }