/// <summary>
 /// Initializes this instance.
 /// </summary>
 private void Initialize()
 {
     cachedRigidBody = this.rigidbody;
     studioSystem    = FMODStudioSystem.Instance;
 }
Exemple #2
0
    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();
    }