bd_ 7086b35b3f
fix: play audio absolute paths in a relative controller break (#1555)
In MA 1.11.x, while we corrected relative play audio paths where possible,
we would leave them unchanged if no corresponding object was found. This
meant that we maintained compatibility with older assets that uses absolute
addressing for their Play Audio paths. This change restores that behavior.
2025-04-12 18:55:07 -07:00

38 lines
1.4 KiB
C#

#if MA_VRCSDK3_AVATARS_3_5_2_OR_NEWER
using nadena.dev.modular_avatar.core.editor;
using NUnit.Framework;
using UnityEditor.Animations;
using VRC.SDK3.Avatars.Components;
namespace modular_avatar_tests
{
public class PlayAudioRemapping : TestBase
{
[Test]
public void PlayAudioBehaviorsAreRemappedToCorrectPaths()
{
var prefab = CreatePrefab("PlayAudioRemapping.prefab");
AvatarProcessor.ProcessAvatar(prefab);
var fx = FindFxController(prefab);
var ac = (AnimatorController)fx.animatorController;
var layer = ac.layers[0];
var state = layer.stateMachine.states[0].state;
var playAudio = (VRCAnimatorPlayAudio) state.behaviours[0];
Assert.AreEqual("New Parent/Bone Proxy/Audio Source", playAudio.SourcePath);
var subState = layer.stateMachine.stateMachines[0].stateMachine.states[0].state;
var playAudio2 = (VRCAnimatorPlayAudio) subState.behaviours[0];
Assert.AreEqual("New Parent/Bone Proxy/Audio Source", playAudio2.SourcePath);
var absLayer = findFxLayer(prefab, "absolute");
state = absLayer.stateMachine.states[0].state;
playAudio = (VRCAnimatorPlayAudio) state.behaviours[0];
Assert.AreEqual("New Parent/Bone Proxy/Audio Source", playAudio.SourcePath);
}
}
}
#endif