There is no restriction on your Distribution of a Product made using the Licensed Technology that does not include any Engine Code or any Paid Content Distributed in uncooked source format (in each case, including as modified by you under the License) and does not require any Licensed Technology (including as modified by you under the License) to run (“Unrestricted Products”). For clarity, the foregoing does not constitute a license under any patents, copyrights, trademarks, trade secrets or other intellectual property rights, whether by implication, estoppel or otherwise.
而 EULA 中对于 Engine Tools 的定义是:
“Engine Tools” means (a) editors and other tools included in the Engine Code; (b) any code and modules in either the Developer or Editor folders, including in object code format, whether statically or dynamically linked; and (c) other software that may be used to develop standalone products based on the Licensed Technology.
// Find all the modules that are not part of the standard set HashSet<string> FilteredModuleNames = new HashSet<string>(); foreach (string ModuleName in ModuleNames) { FileReference ModuleFileName = RulesAssembly.GetModuleFileName(ModuleName); if (Directories.Any(x => ModuleFileName.IsUnderDirectory(x))) { string RelativeFileName = ModuleFileName.MakeRelativeTo(UnrealBuildTool.EngineSourceDirectory); if (ExcludeFolders.All(x => RelativeFileName.IndexOf(x, StringComparison.InvariantCultureIgnoreCase) == -1) && !PrecompiledModules.Any(x => x.Name == ModuleName)) { FilteredModuleNames.Add(ModuleName); } } }
// Add all the plugins which aren't already being built foreach(UEBuildPlugin PrecompilePlugin in PrecompilePlugins) { foreach (ModuleDescriptor ModuleDescriptor in PrecompilePlugin.Descriptor.Modules) { if (ModuleDescriptor.IsCompiledInConfiguration(Platform, TargetType, bAllowDeveloperModules && Rules.bBuildDeveloperTools, Rules.bBuildEditor, Rules.bBuildRequiresCookedData)) { string RelativeFileName = RulesAssembly.GetModuleFileName(ModuleDescriptor.Name).MakeRelativeTo(UnrealBuildTool.EngineDirectory); if (!ExcludeFolders.Any(x => RelativeFileName.Contains(x)) && !PrecompiledModules.Any(x => x.Name == ModuleDescriptor.Name)) { FilteredModuleNames.Add(ModuleDescriptor.Name); } } } } // ... }