diff --git a/VAUListener.cs b/VAUListener.cs index b9430d85f0271f48893d63c5358108a2d9c0a11f..aab882ccb5e6ec5796429f191ba8487c3502a399 100644 --- a/VAUListener.cs +++ b/VAUListener.cs @@ -6,11 +6,15 @@ using VA; public class VAUListener : MonoBehaviour { - public string listenername = "Listener"; - public int maxreverbZones = 2; + public string Name = "Listener"; + + public int NumMaxReverbZones = 2; public string VAAudioRenderer = "MyBinauralArtificialReverb"; - private int Listener; + public VAUHRIRDataset HRIR = null; + + private int _ID; private VANet _VA = null; + private Quaternion q; private Transform t; private AudioReverbZone[] reverbZones; @@ -23,19 +27,22 @@ public class VAUListener : MonoBehaviour { { get { - return Listener; + return _ID; } } - - // Use this for initialization + void Start() { _VA = VAUAdapter.VA; - Listener = _VA.CreateListener(listenername); - listenername += " " + Listener; - _VA.SetListenerAuralizationMode(Listener, "all"); - _VA.SetListenerHRIRDataset(Listener, VAUAdapter.DefaultHRIRID); + _ID = _VA.CreateListener(Name); + _VA.SetListenerAuralizationMode(_ID, "all"); + if (HRIR) + _VA.SetListenerHRIRDataset(_ID, HRIR.ID); + else if( VAUAdapter.DefaultHRIRID != -1 ) + _VA.SetListenerHRIRDataset(_ID, VAUAdapter.DefaultHRIRID); + SetListenerPositionOrientation(); + _VA.SetArtificalReverbarationTime(VAAudioRenderer, 0.3f); reverbZones = FindObjectsOfType(typeof(AudioReverbZone)) as AudioReverbZone[]; } @@ -45,9 +52,8 @@ public class VAUListener : MonoBehaviour { if (GetComponent<VAUAuralizationMode>() != null) GetComponent<VAUAuralizationMode>().AuraStringChanged += OnListenerAuralizationModeChanged; } - - // Update is called once per frame - void Update () + + void Update () { SetListenerPositionOrientation(); SetActiveReverbZones(); @@ -63,8 +69,8 @@ public class VAUListener : MonoBehaviour { Vector3 view = q * Vector3.forward; Vector3 view_ogl = new Vector3(view.x, view.y, -view.z); Vector3 up_ogl = new Vector3(up.x, up.y, -up.z); - _VA.SetListenerPosition(Listener, t.transform.position.x, t.transform.position.y, -t.transform.position.z); - _VA.SetListenerOrientationVU(Listener, view_ogl.x, view_ogl.y, view_ogl.z, up_ogl.x, up_ogl.y, up_ogl.z); + _VA.SetListenerPosition(_ID, t.transform.position.x, t.transform.position.y, -t.transform.position.z); + _VA.SetListenerOrientationVU(_ID, view_ogl.x, view_ogl.y, view_ogl.z, up_ogl.x, up_ogl.y, up_ogl.z); } void SetActiveReverbZones() @@ -76,7 +82,7 @@ public class VAUListener : MonoBehaviour { int i = 0; foreach (AudioReverbZone reverbZone in reverbZones) { - if (i >= maxreverbZones) + if (i >= NumMaxReverbZones) break; float actDistance = Vector3.Distance(reverbZone.transform.position, gameObject.transform.position); if ((actDistance < reverbZone.maxDistance)) @@ -115,7 +121,7 @@ public class VAUListener : MonoBehaviour { void OnListenerAuralizationModeChanged(string AuraMode) { - _VA.SetListenerAuralizationMode(Listener, AuraMode); + _VA.SetListenerAuralizationMode(_ID, AuraMode); } void OnDisable() @@ -126,6 +132,6 @@ public class VAUListener : MonoBehaviour { void OnDestroy() { - _VA.DeleteListener(Listener); + _VA.DeleteListener(_ID); } }