/// <summary> /// Initializes this instance. /// </summary> private void Initialize() { cachedRigidBody = this.rigidbody; studioSystem = FMODStudioSystem.Instance; }
public void LoadMixerBuses() { FMOD.Studio.MixerStrip[] mixerStrips; FMOD.Studio.Bank bank; FMOD.Studio.MixerStrip mixerStrip; FMODStudioSystem studioSystem = FMODStudioSystem.Instance; FMOD.GUID guid = new FMOD.GUID(); if (studioSystem.System == null) { Debug.LogError("Cannot find Studio System."); return; } studioSystem.System.LookupID("bank:/Master Bank", out guid); studioSystem.System.GetBank(guid, out bank); if (bank == null) { Debug.LogError("Cannot find Master Bank."); return; } bank.GetMixerStripList(out mixerStrips); Dictionary <String, MixerProperty> mixerDictionary = new Dictionary <string, MixerProperty>(mixerStrips.Length); if (mixerProperties == null) { mixerProperties = new List <MixerProperty>(mixerStrips.Length); } else { foreach (MixerProperty property in this.mixerProperties) { mixerDictionary.Add(property.BusName, property); } } string path; bool muteLevel; float faderLevel; bool mixerListExists = this.mixerProperties != null; for (int i = 0; i < mixerStrips.Length; i++) { mixerStrips[i].GetPath(out path); studioSystem.System.LookupID(path, out guid); studioSystem.System.GetMixerStrip(guid, FMOD.Studio.LoadingMode.BeginNow, out mixerStrip); mixerStrip.GetMute(out muteLevel); mixerStrip.GetFaderLevel(out faderLevel); if (path == "bus:/") { path = "Master"; } else { path = path.Replace("bus:/", string.Empty); } if (mixerListExists) { MixerProperty property = mixerDictionary[path]; property.MixerStrip = mixerStrip; property.Volume = faderLevel; property.IsEnabled = !muteLevel; } else { this.mixerProperties.Add(new MixerProperty(mixerStrip, !muteLevel, path, faderLevel)); } } this.mixerProperties.Sort(); }