modular-avatar/UnitTests~/ReactiveComponent/ObjectToggleTests.cs
kaikoga efa263b551
chore: Fix non-VRChat support (for MA 1.10.5) (#1324)
* feat: add version defines for VRCSDK

* chore: early return if VRCSDK project but not VRChat avatar
2024-10-27 10:06:35 -07:00

54 lines
1.7 KiB
C#

#if MA_VRCSDK3_AVATARS
using System.Linq;
using modular_avatar_tests;
using nadena.dev.modular_avatar.core;
using nadena.dev.modular_avatar.core.editor;
using NUnit.Framework;
using UnityEditor.Animations;
using UnityEngine;
namespace UnitTests.ReactiveComponent
{
internal class ObjectToggleTests : TestBase
{
[Test]
public void WhenObjectIsAlwaysOn_CorrectProxyParameterIsGenerated()
{
var root = CreateRoot("root");
var obj = CreateChild(root, "obj");
var toggle = CreateChild(root, "toggle");
// Prevent obj from being removed by the GC game objects pass
obj.AddComponent<MeshRenderer>();
var toggleComponent = toggle.AddComponent<ModularAvatarObjectToggle>();
var aor = new AvatarObjectReference();
aor.Set(obj);
toggleComponent.Objects = new()
{
new()
{
Active = false,
Object = aor
}
};
AvatarProcessor.ProcessAvatar(root);
// TODO: Ideally we should start using play mode testing for these things...
var fx = (AnimatorController)FindFxController(root).animatorController;
var readableProp = fx.parameters.FirstOrDefault(
p => p.name.StartsWith("__MA/ReadableProp/obj/UnityEngine.GameObject/m_IsActive")
);
Assert.IsNotNull(readableProp);
Assert.AreEqual(readableProp.defaultFloat, 0);
Assert.IsFalse(obj.activeSelf);
}
}
}
#endif