4 using System.Collections.Generic;
18 [RequireComponent(typeof(AudioSource))]
19 [RequireComponent(typeof(AudioLowPassFilter))]
20 [RequireComponent(typeof(AudioHighPassFilter))]
21 [DisallowMultipleComponent]
27 [Tooltip(
"The quality level of the simulated audio source.")]
32 get {
return sourceQuality; }
33 set { sourceQuality = value; }
39 private AudioLoFiFilterSettings filterSettings;
44 private AudioLowPassFilter lowPassFilter;
45 private AudioHighPassFilter highPassFilter;
51 private Dictionary<AudioLoFiSourceQuality, AudioLoFiFilterSettings> sourceQualityFilterSettings =
52 new Dictionary<AudioLoFiSourceQuality, AudioLoFiFilterSettings>();
56 LoadQualityFilterSettings();
58 filterSettings = sourceQualityFilterSettings[SourceQuality];
60 lowPassFilter = gameObject.GetComponent<AudioLowPassFilter>();
61 lowPassFilter.cutoffFrequency = filterSettings.LowPassCutoff;
63 highPassFilter = gameObject.GetComponent<AudioHighPassFilter>();
64 highPassFilter.cutoffFrequency = filterSettings.HighPassCutoff;
69 AudioLoFiFilterSettings newSettings = sourceQualityFilterSettings[SourceQuality];
70 if (newSettings != filterSettings)
75 if (influencerManager != null)
81 filterSettings = newSettings;
82 lowPassFilter.cutoffFrequency = filterSettings.LowPassCutoff;
83 highPassFilter.cutoffFrequency = filterSettings.HighPassCutoff;
90 private void LoadQualityFilterSettings()
92 if (sourceQualityFilterSettings.Keys.Count > 0) {
return; }
94 sourceQualityFilterSettings.Add(
96 new AudioLoFiFilterSettings(10, 22000));
97 sourceQualityFilterSettings.Add(
99 new AudioLoFiFilterSettings(300, 3400));
100 sourceQualityFilterSettings.Add(
102 new AudioLoFiFilterSettings(50, 7000));
103 sourceQualityFilterSettings.Add(
105 new AudioLoFiFilterSettings(40, 5000));
106 sourceQualityFilterSettings.Add(
108 new AudioLoFiFilterSettings(30, 15000));
117 private struct AudioLoFiFilterSettings
122 public float LowPassCutoff
123 {
get;
private set; }
128 public float HighPassCutoff
129 {
get;
private set; }
136 public AudioLoFiFilterSettings(
float highPassCutoff,
float lowPassCutoff) :
this()
138 HighPassCutoff = highPassCutoff;
139 LowPassCutoff = lowPassCutoff;
146 public static bool operator ==(AudioLoFiFilterSettings a, AudioLoFiFilterSettings b)
155 public static bool operator !=(AudioLoFiFilterSettings a, AudioLoFiFilterSettings b)
157 return !(a.Equals(b));
164 public override bool Equals(
object obj)
171 if (!(obj is AudioLoFiFilterSettings))
176 AudioLoFiFilterSettings other = (AudioLoFiFilterSettings)obj;
177 if ((other.LowPassCutoff != LowPassCutoff) ||
178 (other.HighPassCutoff != HighPassCutoff))
190 public override int GetHashCode()
192 string s =
string.Format(
193 "[AudioLoFiFilterSettings] Low: {0}, High: {1}",
197 return s.GetHashCode();