IEnumerator GetMidiInIe()
    {
        yield return(new WaitUntil(() =>
                                   MIDI.initialized
                                   ));

        listConnectedMidiIn = new List <string>();
        //Debug.Log("MidiINPlugin.connectedDevices " + MidiINPlugin.connectedDevices.Count);
        foreach (MidiDevice md in MidiINPlugin.connectedDevices)
        {
            listConnectedMidiIn.Add(md.name);
            //Debug.Log("MidiINPlugin.connectedDevices " + md.name);
        }

        //Debug.LogWarning("GetMidiInIe");
        foreach (Transform child in PanelMidiIn.transform)
        {
            Destroy(child.gameObject);
        }

        var buttonNoMidi = Instantiate(ButtonMidi, Vector3.zero, Quaternion.identity);

        buttonNoMidi.transform.SetParent(PanelMidiIn.transform);
        buttonNoMidi.transform.localScale = Vector3.one;
        buttonNoMidi.name = "IN No Midi In Detected";
        if (LocalizationManager.instance != null)
        {
            buttonNoMidi.GetComponentInChildren <Text>().text =
                LocalizationManager.instance.GetLocalizedValue("No Midi In Detected");
        }
        else
        {
            buttonNoMidi.GetComponentInChildren <Text>().text = "No Midi In Detected";
        }

        var color = buttonNoMidi.GetComponent <Image>().color;

        color.a = 0.2f;
        buttonNoMidi.GetComponent <Image>().color = color;

        for (int i = 0; i < MidiINPlugin.GetDeviceCount(); i++)
        {
            if (MidiOUTPlugin.GetDeviceName(i).Contains("Session"))
            {
                continue;
            }

            buttonNoMidi.SetActive(false);
            var button = Instantiate(ButtonMidi, Vector3.zero, Quaternion.identity);
            button.transform.SetParent(PanelMidiIn.transform);
            button.transform.localScale = Vector3.one;
            button.GetComponentInChildren <Text>().text = MidiINPlugin.GetDeviceName(i).Trim();

            if (listConnectedMidiIn.Contains(MidiINPlugin.GetDeviceName(i)))
            {
                button.name = "IN DISCONNECT " + MidiINPlugin.GetDeviceName(i);
                color       = button.GetComponent <Image>().color;
                color.a     = 1f;
                button.GetComponent <Image>().color = color;
            }
            else
            {
                button.name = "IN CONNECT " + MidiINPlugin.GetDeviceName(i);
                color       = button.GetComponent <Image>().color;
                color.a     = 0.2f;
                button.GetComponent <Image>().color = color;
            }
        }
    }
Exemple #2
0
    void Init()
    {
        foreach (MidiSelectionUIDeviceButton button in INs)
        {
            Destroy(button.gameObject);
        }

        INs = new List <MidiSelectionUIDeviceButton> ();

        foreach (MidiSelectionUIDeviceButton button in OUTs)
        {
            Destroy(button.gameObject);
        }

        OUTs = new List <MidiSelectionUIDeviceButton> ();

        int count = MidiINPlugin.deviceNames.Count > MidiOUTPlugin.deviceNames.Count ? MidiINPlugin.deviceNames.Count : MidiOUTPlugin.deviceNames.Count;

        _minHeight = count * (int)PREFAB_MidiDeviceButton.GetComponent <LayoutElement> ().preferredHeight + 100;

        if (_minHeight < minHeight)
        {
            _minHeight = minHeight;
        }

        _minWidth = minWidth;

        for (int i = 0; i < MidiINPlugin.GetDeviceCount(); i++)
        {
            var go = Instantiate(PREFAB_MidiDeviceButton);

            go.transform.SetParent(inPanel, false);
            MidiSelectionUIDeviceButton button = go.GetComponent <MidiSelectionUIDeviceButton> ();
            button.device          = MidiSelectionUIDeviceButton.Device.IN;
            button.midiSelectionUI = this;
            button.text.text       = MidiINPlugin.GetDeviceName(i);

            bool connected = false;

            foreach (MidiDevice device in MidiINPlugin.connectedDevices)
            {
                if (device.name == button.text.text)
                {
                    connected = true;
                }
            }

            button.connected = connected;

            if (connected)
            {
                button.image.color = connectedColor;
            }
            else
            {
                button.image.color = disconnectedColor;
            }

            INs.Add(button);

            int preferredWidth = (int)button.text.preferredWidth;
            if (preferredWidth > _minWidth / 2)
            {
                _minWidth = 2 * preferredWidth;
            }
        }

        for (int i = 0; i < MidiOUTPlugin.GetDeviceCount(); i++)
        {
            var go = Instantiate(PREFAB_MidiDeviceButton);
            go.transform.SetParent(outPanel, false);
            MidiSelectionUIDeviceButton button = go.GetComponent <MidiSelectionUIDeviceButton> ();
            button.device          = MidiSelectionUIDeviceButton.Device.OUT;
            button.midiSelectionUI = this;
            button.text.text       = MidiOUTPlugin.GetDeviceName(i);

            bool connected = false;

            foreach (MidiDevice device in MidiOUTPlugin.connectedDevices)
            {
                if (device.name == button.text.text)
                {
                    connected = true;
                }
            }

            button.connected = connected;

            if (connected)
            {
                button.image.color = connectedColor;
            }
            else
            {
                button.image.color = disconnectedColor;
            }

            OUTs.Add(button);

            int preferredWidth = (int)button.text.preferredWidth;
            if (preferredWidth > _minWidth / 2)
            {
                _minWidth = 2 * preferredWidth;
            }
        }

        _minWidth += 2 * widthMargin;
        //_minHeight += 2 * heightMargin;

        midiPanel.SetSize(new Vector2(_minWidth, _minHeight));
    }