mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2024-12-29 02:35:06 +08:00
3667dc319a
* add version defines * refactor: prefer BuildContext.ctor() overload taking GameObject * wrap unit tests entirely with MA_VRCSDK3_AVATARS * wrap unit tests smart with MA_VRCSDK3_AVATARS * wrap runtime entirely with MA_VRCSDK3_AVATARS * wrap VRC.SDKBase.IEditorOnly with MA_VRCSDK3_AVATARS * wrap editor entirely with MA_VRCSDK3_AVATARS * fix AvatarObjectReference.Get(Component) * wrap editor smart with MA_VRCSDK3_AVATARS * wrap BuildContext smart with MA_VRCSDK3_AVATARS * wrap PluginDefinition smart with MA_VRCSDK3_AVATARS * style: move conditional compiles one step outside
72 lines
2.6 KiB
C#
72 lines
2.6 KiB
C#
#if MA_VRCSDK3_AVATARS
|
|
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
public void StripsExtraPBones_near()
|
|
{
|
|
var prefab = CreatePrefab("DuplicatePBStripping_near.prefab");
|
|
AvatarProcessor.ProcessAvatar(prefab);
|
|
|
|
// Note that this prefab has a pair of PhysBones whose names match and are just 1mm apart.
|
|
// They should be merged because some outfit authors copy the entire armature, including PhysBones.
|
|
Assert.AreEqual(1, prefab.GetComponentsInChildren<VRCPhysBone>().Length);
|
|
}
|
|
|
|
[Test]
|
|
public void StripsExtraPBones_far()
|
|
{
|
|
var prefab = CreatePrefab("DuplicatePBStripping_far.prefab");
|
|
AvatarProcessor.ProcessAvatar(prefab);
|
|
|
|
// Note that this prefab has a pair of PhysBones whose names match but are more than 1mm apart.
|
|
// They should not be merged to preserve intentionally attached PhysBone, which is not copied from the avatar.
|
|
Assert.AreEqual(2, prefab.GetComponentsInChildren<VRCPhysBone>().Length);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |