From b3142d7f115d82e99f2794afef6e7d2d7d520f8a Mon Sep 17 00:00:00 2001 From: bd_ Date: Mon, 24 Jun 2024 11:14:18 +0900 Subject: [PATCH] chore: minor cleanups, unit tests (#901) --- Editor/Animation/PathMappings.cs | 15 +- UnitTests~/Animation/PlayAudio.meta | 8 + .../Animation/PlayAudio/PlayAudioRemapping.cs | 31 + .../PlayAudio/PlayAudioRemapping.cs.meta | 3 + .../PlayAudio/PlayAudioRemapping.prefab | 534 ++++++++++++++++++ .../PlayAudio/PlayAudioRemapping.prefab.meta | 7 + .../PlayAudioRemappingController.controller | 185 ++++++ ...ayAudioRemappingController.controller.meta | 8 + UnitTests~/Tests.asmdef | 5 + 9 files changed, 783 insertions(+), 13 deletions(-) create mode 100644 UnitTests~/Animation/PlayAudio.meta create mode 100644 UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs create mode 100644 UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs.meta create mode 100644 UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab create mode 100644 UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab.meta create mode 100644 UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller create mode 100644 UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller.meta diff --git a/Editor/Animation/PathMappings.cs b/Editor/Animation/PathMappings.cs index 3e80c66a..00852a0f 100644 --- a/Editor/Animation/PathMappings.cs +++ b/Editor/Animation/PathMappings.cs @@ -7,9 +7,7 @@ using nadena.dev.ndmf; using nadena.dev.ndmf.util; using UnityEditor; using UnityEngine; -using Object = UnityEngine.Object; #if MA_VRCSDK3_AVATARS_3_5_2_OR_NEWER -using VRC.SDK3.Avatars.Components; #endif #endregion @@ -18,8 +16,6 @@ namespace nadena.dev.modular_avatar.animation { #region - using UnityObject = Object; - #endregion /// @@ -277,14 +273,6 @@ namespace nadena.dev.modular_avatar.animation return newClip; } -#if MA_VRCSDK3_AVATARS_3_5_2_OR_NEWER - private VRCAnimatorPlayAudio ApplyMappingsToPlayAudio(VRCAnimatorPlayAudio audio) - { - audio.SourcePath = MapPath(audio.SourcePath, true); - return audio; - } -#endif - internal void OnDeactivate(BuildContext context) { Dictionary clipCache = new Dictionary(); @@ -300,7 +288,8 @@ namespace nadena.dev.modular_avatar.animation #if MA_VRCSDK3_AVATARS_3_5_2_OR_NEWER _animationDatabase.ForeachPlayAudio(playAudio => { - ApplyMappingsToPlayAudio(playAudio); + if (playAudio == null) return; + playAudio.SourcePath = MapPath(playAudio.SourcePath, true); }); #endif diff --git a/UnitTests~/Animation/PlayAudio.meta b/UnitTests~/Animation/PlayAudio.meta new file mode 100644 index 00000000..0ca88ecd --- /dev/null +++ b/UnitTests~/Animation/PlayAudio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a272257a64fd3545b17f1c4bf88ccf0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs new file mode 100644 index 00000000..9ccdc7e3 --- /dev/null +++ b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs @@ -0,0 +1,31 @@ +using nadena.dev.modular_avatar.core.editor; +using NUnit.Framework; +using UnityEditor.Animations; +using VRC.SDK3.Avatars.Components; + +#if MA_VRCSDK3_AVATARS_3_5_2_OR_NEWER +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); + } + } +} +#endif \ No newline at end of file diff --git a/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs.meta b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs.meta new file mode 100644 index 00000000..a6b89bfa --- /dev/null +++ b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 246702d9ba3e44b69332373a62ced7b6 +timeCreated: 1719191520 \ No newline at end of file diff --git a/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab new file mode 100644 index 00000000..c371b7c3 --- /dev/null +++ b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab @@ -0,0 +1,534 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &265119862458686319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5359483176744087022} + - component: {fileID: 6767498223902361718} + - component: {fileID: 3083441405030068533} + - component: {fileID: 770825958819181880} + m_Layer: 0 + m_Name: PlayAudioRemapping + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5359483176744087022 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265119862458686319} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.092807084, y: 0.91336465, z: -0.81755215} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2374223349072045661} + - {fileID: 3941668978861828596} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &6767498223902361718 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265119862458686319} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!114 &3083441405030068533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265119862458686319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 542108242, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: + ViewPosition: {x: 0, y: 1.6, z: 0.2} + Animations: 0 + ScaleIPD: 1 + lipSync: 0 + lipSyncJawBone: {fileID: 0} + lipSyncJawClosed: {x: 0, y: 0, z: 0, w: 1} + lipSyncJawOpen: {x: 0, y: 0, z: 0, w: 1} + VisemeSkinnedMesh: {fileID: 0} + MouthOpenBlendShapeName: Facial_Blends.Jaw_Down + VisemeBlendShapes: [] + unityVersion: + portraitCameraPositionOffset: {x: 0, y: 0, z: 0} + portraitCameraRotationOffset: {x: 0, y: 1, z: 0, w: -0.00000004371139} + networkIDs: [] + customExpressions: 0 + expressionsMenu: {fileID: 0} + expressionParameters: {fileID: 0} + enableEyeLook: 0 + customEyeLookSettings: + eyeMovement: + confidence: 0.5 + excitement: 0.5 + leftEye: {fileID: 0} + rightEye: {fileID: 0} + eyesLookingStraight: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingUp: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingDown: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingLeft: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingRight: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidType: 0 + upperLeftEyelid: {fileID: 0} + upperRightEyelid: {fileID: 0} + lowerLeftEyelid: {fileID: 0} + lowerRightEyelid: {fileID: 0} + eyelidsDefault: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsClosed: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsLookingUp: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsLookingDown: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsSkinnedMesh: {fileID: 0} + eyelidsBlendshapes: + customizeAnimationLayers: 1 + baseAnimationLayers: + - isEnabled: 0 + type: 0 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 4 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 5 + animatorController: {fileID: 9100000, guid: dfb9d64672ce12146bd486d455360564, + type: 2} + mask: {fileID: 0} + isDefault: 0 + specialAnimationLayers: + - isEnabled: 0 + type: 6 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 7 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 8 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + AnimationPreset: {fileID: 0} + animationHashSet: [] + autoFootsteps: 1 + autoLocomotion: 1 + collider_head: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_torso: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_footR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_footL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_handR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_handL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerIndexL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerMiddleL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerRingL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerLittleL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerIndexR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerMiddleR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerRingR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerLittleR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!114 &770825958819181880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265119862458686319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1427037861, guid: 4ecd63eff847044b68db9453ce219299, type: 3} + m_Name: + m_EditorClassIdentifier: + launchedFromSDKPipeline: 0 + completedSDKPipeline: 0 + blueprintId: + contentType: 0 + assetBundleUnityVersion: + fallbackStatus: 0 +--- !u!1 &6739982813768973813 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2374223349072045661} + - component: {fileID: 2173147159387031478} + m_Layer: 0 + m_Name: Bone Proxy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2374223349072045661 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6739982813768973813} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4427583208098650903} + m_Father: {fileID: 5359483176744087022} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2173147159387031478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6739982813768973813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 42581d8044b64899834d3d515ab3a144, type: 3} + m_Name: + m_EditorClassIdentifier: + boneReference: 55 + subPath: New Parent + attachmentMode: 1 +--- !u!1 &7552762365415873619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4427583208098650903} + - component: {fileID: 4783097503119723021} + m_Layer: 0 + m_Name: Audio Source + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4427583208098650903 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7552762365415873619} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2374223349072045661} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &4783097503119723021 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7552762365415873619} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &9059666484830693097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3941668978861828596} + m_Layer: 0 + m_Name: New Parent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3941668978861828596 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9059666484830693097} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5359483176744087022} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab.meta b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab.meta new file mode 100644 index 00000000..af838952 --- /dev/null +++ b/UnitTests~/Animation/PlayAudio/PlayAudioRemapping.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3da23c4d6804c324090846f8baad5d0d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller b/UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller new file mode 100644 index 00000000..3b29af4d --- /dev/null +++ b/UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller @@ -0,0 +1,185 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7983749912692842299 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1859411423, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + Source: {fileID: 0} + SourcePath: Bone Proxy/Audio Source + PlaybackOrder: 0 + ParameterName: + Volume: {x: 1, y: 1} + VolumeApplySettings: 1 + Pitch: {x: 1, y: 1} + PitchApplySettings: 1 + Clips: [] + ClipsApplySettings: 1 + Loop: 0 + LoopApplySettings: 1 + DelayInSeconds: 0 + PlayOnEnter: 1 + StopOnEnter: 1 + PlayOnExit: 0 + StopOnExit: 0 + playbackIndex: 0 +--- !u!1107 &-5210512098555855929 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New StateMachine + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -4614558718388692769} + m_Position: {x: 340, y: 50, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -4614558718388692769} +--- !u!1102 &-4614558718388692769 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New State + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: + - {fileID: 8580092932010070820} + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-3515136345829021480 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New State + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: + - {fileID: -7983749912692842299} + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &-321918993066545419 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -3515136345829021480} + m_Position: {x: 400, y: 10, z: 0} + m_ChildStateMachines: + - serializedVersion: 1 + m_StateMachine: {fileID: -5210512098555855929} + m_Position: {x: 400, y: 150, z: 0} + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -3515136345829021480} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PlayAudioRemappingController + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -321918993066545419} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!114 &8580092932010070820 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1859411423, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + Source: {fileID: 0} + SourcePath: Bone Proxy/Audio Source + PlaybackOrder: 0 + ParameterName: + Volume: {x: 1, y: 1} + VolumeApplySettings: 1 + Pitch: {x: 1, y: 1} + PitchApplySettings: 1 + Clips: [] + ClipsApplySettings: 1 + Loop: 0 + LoopApplySettings: 1 + DelayInSeconds: 0 + PlayOnEnter: 1 + StopOnEnter: 1 + PlayOnExit: 0 + StopOnExit: 0 + playbackIndex: 0 diff --git a/UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller.meta b/UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller.meta new file mode 100644 index 00000000..18a0d3f2 --- /dev/null +++ b/UnitTests~/Animation/PlayAudio/PlayAudioRemappingController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfb9d64672ce12146bd486d455360564 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnitTests~/Tests.asmdef b/UnitTests~/Tests.asmdef index 1816b9a8..ed1e9598 100644 --- a/UnitTests~/Tests.asmdef +++ b/UnitTests~/Tests.asmdef @@ -30,6 +30,11 @@ "name": "com.vrchat.avatars", "expression": "", "define": "MA_VRCSDK3_AVATARS" + }, + { + "name": "com.vrchat.avatars", + "expression": "3.5.2", + "define": "MA_VRCSDK3_AVATARS_3_5_2_OR_NEWER" } ], "noEngineReferences": false