123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- //======= 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);
- }
- }
- }
|