-
Notifications
You must be signed in to change notification settings - Fork 1
/
AvatarGeneratorTest.cs
87 lines (73 loc) · 3.1 KB
/
AvatarGeneratorTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#nullable enable
using System.Threading.Tasks;
using FluentAssertions;
using Mochineko.DynamicUnityAvatarGenerator.Presets;
using Mochineko.Relent.Result;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
namespace Mochineko.DynamicUnityAvatarGenerator.Tests
{
internal sealed class AvatarGeneratorTest
{
[Test]
[RequiresPlayMode(true)]
public void GenerateHumanoidAvatarTest()
{
var gameObject = DummySkeletonCreator.CreateDummyHumanoidHierarchy();
var rootBoneRetriever = new RegularExpressionRootBoneRetriever(@".*(?i)Hips$");
var humanBoneRetrievers = DummySkeletonCreator.CreateDummyHumanBoneRetrievers();
var (avatar, map) = AvatarGenerator.GenerateHumanoidAvatar(
gameObject,
rootBoneRetriever,
humanBoneRetrievers,
new HumanDescriptionParameters()
).Unwrap();
avatar.isValid.Should().BeTrue();
avatar.isHuman.Should().BeTrue();
avatar.humanDescription.skeleton.Length.Should().Be(22);
avatar.humanDescription.human.Length.Should().Be(21);
avatar.humanDescription.human.Length.Should().Be(map.Count);
map[HumanBodyBones.Hips].transform.name.Should().Be("bone.Hips");
var mappedFromAvatar = HumanBoneTransformMapCreator
.MapFromAvatar(avatar, gameObject)
.Unwrap();
foreach (var fromAvatar in mappedFromAvatar)
{
fromAvatar.Value.Should().Be(map[fromAvatar.Key]);
}
Object.Destroy(avatar);
Object.Destroy(gameObject);
}
/// <summary>
/// See https://docs.readyplayer.me/ready-player-me/api-reference/avatars/full-body-avatars
/// </summary>
[Test]
[RequiresPlayMode(true)]
public void ReadyPlayerMeAvatarGenerationTest()
{
var gameObject = DummySkeletonCreator.CreateReadyPlayerMeHumanoidHierarchy();
var (avatar, map) = AvatarGenerator.GenerateHumanoidAvatar(
gameObject,
MixamoAndBipedRootBoneRetriever.Preset,
MixamoAndBipedHumanBoneRetrievers.Preset,
HumanDescriptionParametersPreset.Preset)
.Unwrap();
avatar.isValid.Should().BeTrue();
avatar.isHuman.Should().BeTrue();
avatar.humanDescription.skeleton.Length.Should().Be(33);
avatar.humanDescription.human.Length.Should().Be(32);
avatar.humanDescription.human.Length.Should().Be(map.Count);
map[HumanBodyBones.Hips].transform.name.Should().Be("Hips");
var mappedFromAvatar = HumanBoneTransformMapCreator
.MapFromAvatar(avatar, gameObject)
.Unwrap();
foreach (var fromAvatar in mappedFromAvatar)
{
fromAvatar.Value.Should().Be(map[fromAvatar.Key]);
}
Object.Destroy(avatar);
Object.Destroy(gameObject);
}
}
}