using CliFx; using CliFx.Attributes; using IConsole = CliFx.Infrastructure.IConsole; namespace KeepersCompound.Lightmapper; internal static class Program { public static async Task Main() => await new CliApplicationBuilder().AddCommandsFromThisAssembly().Build().RunAsync(); } [Command(Description = "Compute lightmaps for a NewDark .MIS/.COW")] public class LightCommand : ICommand { [CommandParameter(0, Description = "The path to the root Thief installation.")] public required string InstallPath { get; init; } [CommandParameter(1, Description = "The folder name of the fan mission. For OMs this is blank.")] public required string CampaignName { get; init; } [CommandParameter(2, Description = "The name of the mission file including extension.")] public required string MissionName { get; init; } [CommandOption("output", 'o', Description = "Name of output file excluding extension.")] public string OutputName { get; init; } = "kc_lit"; [CommandOption("multiSampling", 'm', Description = "Enables multi-sampled shadows. Higher quality but slower.")] public bool MultiSampling { get; init; } = false; public ValueTask ExecuteAsync(IConsole console) { Timing.Reset(); var lightMapper = new LightMapper(InstallPath, CampaignName, MissionName); lightMapper.Light(MultiSampling); lightMapper.Save(OutputName); Timing.LogAll(); return default; } }