You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
//======= 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);
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |