//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Handles aligning audio listener when using speakers. // //============================================================================= using UnityEngine; using Valve.VR; namespace Valve.VR { [RequireComponent(typeof(AudioListener))] public class SteamVR_Ears : MonoBehaviour { public SteamVR_Camera vrcam; bool usingSpeakers; Quaternion offset; private void OnNewPosesApplied() { var origin = vrcam.origin; var baseRotation = origin != null ? origin.rotation : Quaternion.identity; transform.rotation = baseRotation * offset; } void OnEnable() { usingSpeakers = false; var settings = OpenVR.Settings; if (settings != null) { var error = EVRSettingsError.None; if (settings.GetBool(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_UsingSpeakers_Bool, ref error)) { usingSpeakers = true; var yawOffset = settings.GetFloat(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float, ref error); offset = Quaternion.Euler(0.0f, yawOffset, 0.0f); } } if (usingSpeakers) SteamVR_Events.NewPosesApplied.Listen(OnNewPosesApplied); } void OnDisable() { if (usingSpeakers) SteamVR_Events.NewPosesApplied.Remove(OnNewPosesApplied); } } }