modular-avatar/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping.cs
bd_ df47be245f fix: duplicate PB stripping fails in some configurations
The previous logic failed when duplicate PBs explicitly specify their root transform.
This change rewrites this logic and expands the cases in which PBs are pruned.
2023-01-17 00:01:08 +09:00

46 lines
1.5 KiB
C#

using nadena.dev.modular_avatar.core.editor;
using NUnit.Framework;
using VRC.SDK3.Dynamics.PhysBone.Components;
namespace modular_avatar_tests.DuplicatePBStripping
{
public class DuplicatePBStripping : TestBase
{
[Test]
public void StripsExtraPBones_withNullRootTransform()
{
var prefab = CreatePrefab("DuplicatePBStripping_nullRef.prefab");
AvatarProcessor.ProcessAvatar(prefab);
Assert.AreEqual(1, prefab.GetComponentsInChildren<VRCPhysBone>().Length);
}
[Test]
public void StripsExtraPBones_withExplicitRootTransform()
{
var prefab = CreatePrefab("DuplicatePBStripping_objRef.prefab");
AvatarProcessor.ProcessAvatar(prefab);
Assert.AreEqual(1, prefab.GetComponentsInChildren<VRCPhysBone>().Length);
}
[Test]
public void StripsExtraPBones_withSiblingRootTransform()
{
var prefab = CreatePrefab("DuplicatePBStripping_otherRef.prefab");
AvatarProcessor.ProcessAvatar(prefab);
Assert.AreEqual(1, prefab.GetComponentsInChildren<VRCPhysBone>().Length);
}
[Test]
public void StripsExtraPBones_notWhenTargetDiffers()
{
var prefab = CreatePrefab("DuplicatePBStripping_preserve.prefab");
AvatarProcessor.ProcessAvatar(prefab);
// Note that this prefab has one duplicate, one non-duplicate component
Assert.AreEqual(2, prefab.GetComponentsInChildren<VRCPhysBone>().Length);
}
}
}