using System; using UnityEngine; using Valve.VR; [RequireComponent(typeof(AudioListener))] public class SteamVR_Ears : MonoBehaviour { private void OnNewPosesApplied(params object[] args) { Transform origin = this.vrcam.origin; Quaternion lhs = (!(origin != null)) ? Quaternion.identity : origin.rotation; base.transform.rotation = lhs * this.offset; } private void OnEnable() { this.usingSpeakers = false; CVRSettings settings = OpenVR.Settings; if (settings != null) { EVRSettingsError evrsettingsError = EVRSettingsError.None; if (settings.GetBool("steamvr", "usingSpeakers", false, ref evrsettingsError)) { this.usingSpeakers = true; float @float = settings.GetFloat("steamvr", "speakersForwardYawOffsetDegrees", 0f, ref evrsettingsError); this.offset = Quaternion.Euler(0f, @float, 0f); } } if (this.usingSpeakers) { SteamVR_Utils.Event.Listen("new_poses_applied", new SteamVR_Utils.Event.Handler(this.OnNewPosesApplied)); } } private void OnDisable() { if (this.usingSpeakers) { SteamVR_Utils.Event.Remove("new_poses_applied", new SteamVR_Utils.Event.Handler(this.OnNewPosesApplied)); } } public SteamVR_Camera vrcam; private bool usingSpeakers; private Quaternion offset; }