dev/HumanoidRetargeter.Tests/Mapping/FightNightProfileTests.cs
using System.Collections.Generic;
using HumanoidRetargeter.Mapping;
using HumanoidRetargeter.Maths;
using HumanoidRetargeter.Skeleton;
using Xunit;
using SkeletonModel = HumanoidRetargeter.Skeleton.Skeleton;
namespace HumanoidRetargeter.Tests.Mapping;
public sealed class FightNightProfileTests
{
[Fact]
public void BoxerRigSelectsFightNightAndLeavesControlAndGloveShellBonesUnmapped()
{
Assert.Equal(33, ProfileLibrary.FightNight.Aliases.Count);
var definitions = new List<BoneDefinition>();
foreach (var aliases in ProfileLibrary.FightNight.Aliases.Values)
definitions.Add(new BoneDefinition(aliases[0], null, XForm.Identity));
foreach (var helper in new[]
{
"Reference", "AITrajectory", "Neck1", "LeftForeArmTwist",
"LeftAnkleEffectorAux", "LeftHandThumbGlove", "LeftHandIndexGlove",
})
{
definitions.Add(new BoneDefinition(helper, null, XForm.Identity));
}
var skeleton = SkeletonModel.Create(definitions);
var detection = ProfileDetector.Detect(skeleton);
Assert.NotNull(detection);
Assert.Equal("fight_night", detection.Value.Profile.Name);
Assert.Equal(1f, detection.Value.Result.Confidence);
Assert.Equal(skeleton.IndexOf("LeftInHandMiddle"),
detection.Value.Result.RoleToBone[BoneRole.MiddleMetaL]);
Assert.DoesNotContain(skeleton.IndexOf("LeftHandThumbGlove"),
detection.Value.Result.RoleToBone.Values);
Assert.DoesNotContain(skeleton.IndexOf("LeftHandIndexGlove"),
detection.Value.Result.RoleToBone.Values);
Assert.DoesNotContain(skeleton.IndexOf("LeftAnkleEffectorAux"),
detection.Value.Result.RoleToBone.Values);
}
}