Compare commits

...

2 Commits

Author SHA1 Message Date
Jarrod Doyle ca017e3f7b
Removed debug print 2024-10-29 07:45:03 +00:00
Jarrod Doyle f5fa373519
Replace System.CommandLine with CliFx 2024-10-29 07:43:32 +00:00
3 changed files with 32 additions and 45 deletions

View File

@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
<PackageReference Include="clifx" Version="2.3.5" />
<PackageReference Include="TinyEmbree" Version="1.0.3" />
</ItemGroup>

View File

@ -246,11 +246,6 @@ public class LightMapper
if (propLight != null)
{
if (propLight.QuadLit)
{
Console.WriteLine("Quadlit light wowzer");
}
var light = new Light
{
Position = baseLight.Position + propLight.Offset,

View File

@ -1,46 +1,38 @@
using System.CommandLine;
using CliFx;
using CliFx.Attributes;
using IConsole = CliFx.Infrastructure.IConsole;
namespace KeepersCompound.Lightmapper;
class Program
internal static class Program
{
private static void Main(string[] args)
public static async Task<int> 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)
{
var installPathArg = new Argument<string>(
"installPath",
"The path to the root Thief installation.");
var campaignNameArg = new Argument<string>(
"campaignName",
"The folder name of the fan mission. For OMs this is blank.");
var missionNameArg = new Argument<string>(
"missionName",
"The name of the mission file including extension.");
var outputFileOption = new Option<string>(
["-o", "--output"],
() => "kc_lit",
"Name of output file excluding extension.");
var multiSamplingOption = new Option<bool>(
"--multiSampling",
() => false,
"Enables multi-sampled shadows. Higher quality but slower.");
Timing.Reset();
var rootCommand = new RootCommand("Compute lightmaps for a NewDark .MIS/.COW");
rootCommand.AddArgument(installPathArg);
rootCommand.AddArgument(campaignNameArg);
rootCommand.AddArgument(missionNameArg);
rootCommand.AddOption(outputFileOption);
rootCommand.AddOption(multiSamplingOption);
rootCommand.SetHandler((installPath, campaignName, missionName, outputFile, multiSampling) =>
{
Timing.Reset();
var lightMapper = new LightMapper(InstallPath, CampaignName, MissionName);
lightMapper.Light(MultiSampling);
lightMapper.Save(OutputName);
var lightMapper = new LightMapper(installPath, campaignName, missionName);
lightMapper.Light(multiSampling);
lightMapper.Save(outputFile);
Timing.LogAll();
}, installPathArg, campaignNameArg, missionNameArg, outputFileOption, multiSamplingOption);
rootCommand.Invoke(args);
Timing.LogAll();
return default;
}
}