private void CleanupAudioFilter() { if (audioFilter) { audioFilter.composition = null; Object.Destroy(audioFilter); Debug.LogFormat("OVRMRAudioFilter destroyed"); audioFilter = null; } }
private void RefreshAudioFilter() { if (cameraRig != null && (audioListener == null || !audioListener.enabled || !audioListener.gameObject.activeInHierarchy)) { CleanupAudioFilter(); AudioListener tmpAudioListener = cameraRig.centerEyeAnchor.gameObject.activeInHierarchy ? cameraRig.centerEyeAnchor.GetComponent <AudioListener>() : null; if (tmpAudioListener != null && !tmpAudioListener.enabled) { tmpAudioListener = null; } if (tmpAudioListener == null) { if (Camera.main != null && Camera.main.gameObject.activeInHierarchy) { tmpAudioListener = Camera.main.GetComponent <AudioListener>(); if (tmpAudioListener != null && !tmpAudioListener.enabled) { tmpAudioListener = null; } } } if (tmpAudioListener == null) { Object[] allListeners = Object.FindObjectsOfType <AudioListener>(); foreach (var l in allListeners) { AudioListener al = l as AudioListener; if (al != null && al.enabled && al.gameObject.activeInHierarchy) { tmpAudioListener = al; break; } } } if (tmpAudioListener == null) { Debug.LogWarning("[OVRExternalComposition] No AudioListener in scene"); } else { Debug.LogFormat("[OVRExternalComposition] AudioListener found, obj {0}", tmpAudioListener.gameObject.name); } audioListener = tmpAudioListener; if (audioListener != null) { audioFilter = audioListener.gameObject.AddComponent <OVRMRAudioFilter>(); audioFilter.composition = this; Debug.LogFormat("OVRMRAudioFilter added"); } } }