Exemplo n.º 1
0
    void ShowSequenceContainer(AudioPlayer.SubContainer source, AudioPlayer.Container container, SerializedProperty containerProperty)
    {
        AdjustName("Sequence Container", source, container);

        if (source.showing)
        {
            EditorGUI.indentLevel += 1;
            ShowSourceParentSettings(source, container);
            ShowGeneralSourceSettings(source, container);
            ShowChildrenSources(source, container, containerProperty);
            EditorGUI.indentLevel -= 1;
        }
    }
Exemplo n.º 2
0
 void ShowSourceParentSettings(AudioPlayer.SubContainer source, AudioPlayer.Container container)
 {
     if (GetParentContainerType(source, container) == AudioPlayer.SubContainer.ContainerTypes.RandomContainer)
     {
         source.weight = Mathf.Max(EditorGUILayout.FloatField("Weight", source.weight), 0);
         EditorGUILayout.Space();
     }
     else if (GetParentContainerType(source, container) == AudioPlayer.SubContainer.ContainerTypes.SequenceContainer)
     {
         source.repeat = Mathf.Max(EditorGUILayout.IntField("Repeat", source.repeat), 1);
         EditorGUILayout.Space();
     }
     source.sourceType = (AudioPlayer.SubContainer.ContainerTypes)EditorGUILayout.EnumPopup(source.sourceType);
 }
Exemplo n.º 3
0
    void ShowSampler(AudioPlayer.SubContainer source, AudioPlayer.Container container, SerializedProperty containerProperty)
    {
        if (string.IsNullOrEmpty(source.instrumentName))
        {
            AdjustName("Sampler: null", source, container);
        }
        else
        {
            AdjustName("Sampler: " + source.instrumentName + " " + source.midiNote + "/" + source.velocity, source, container);
        }

        if (source.showing)
        {
            EditorGUI.indentLevel += 1;
            ShowSourceParentSettings(source, container);

            string[] displayedOptions = new string[0];
            if (Sampler.Instance != null)
            {
                if (Sampler.Instance.instruments != null)
                {
                    displayedOptions = new string[Sampler.Instance.instruments.Length];
                    for (int i = 0; i < Sampler.Instance.instruments.Length; i++)
                    {
                        displayedOptions[i] = Sampler.Instance.instruments[i].name;
                    }
                }
            }

            if (displayedOptions.Length > 0)
            {
                source.instrumentIndex = Mathf.Min(EditorGUILayout.Popup("Instrument", source.instrumentIndex, displayedOptions), Sampler.Instance.instruments.Length - 1);
                source.instrumentName  = Sampler.Instance.instruments[source.instrumentIndex].name;
                source.midiNote        = EditorGUILayout.IntSlider("Midi Note", source.midiNote, (int)Sampler.Instance.instruments[source.instrumentIndex].minNote, (int)Sampler.Instance.instruments[source.instrumentIndex].maxNote);
                source.velocity        = EditorGUILayout.Slider("Velocity", source.velocity, 0, 127);
                ShowGeneralSourceSettings(source, container);
            }
            else
            {
                EditorGUILayout.HelpBox("Add Instruments in the Sampler.", MessageType.Info);
                source.instrumentName = "";
            }

            EditorGUI.indentLevel -= 1;
        }
    }
Exemplo n.º 4
0
    void AdjustName(string prefix, AudioPlayer.SubContainer source, AudioPlayer.Container container)
    {
        source.name = prefix;

        if (source.sourceType == AudioPlayer.SubContainer.ContainerTypes.MixContainer || source.sourceType == AudioPlayer.SubContainer.ContainerTypes.RandomContainer || source.sourceType == AudioPlayer.SubContainer.ContainerTypes.SequenceContainer)
        {
            source.name += " | Sources: " + source.childrenLink.Count;
        }

        if (GetParentContainerType(source, container) == AudioPlayer.SubContainer.ContainerTypes.RandomContainer)
        {
            source.name += " | Weight: " + source.weight;
        }
        else if (GetParentContainerType(source, container) == AudioPlayer.SubContainer.ContainerTypes.SequenceContainer)
        {
            source.name += " | Repeat: " + source.repeat;
        }
    }
Exemplo n.º 5
0
    void ShowAudioSource(AudioPlayer.SubContainer source, AudioPlayer.Container container, SerializedProperty containerProperty)
    {
        if (source.audioSource == null)
        {
            AdjustName("Audio Source: null", source, container);
        }
        else
        {
            AdjustName("Audio Source: " + source.audioSource.clip.name, source, container);
        }

        if (source.showing)
        {
            EditorGUI.indentLevel += 1;
            ShowSourceParentSettings(source, container);
            source.audioSource = (AudioSource)EditorGUILayout.ObjectField("Audio Source", source.audioSource, typeof(AudioSource), true);
            ShowGeneralSourceSettings(source, container);

            EditorGUI.indentLevel -= 1;
        }
    }
Exemplo n.º 6
0
    AudioPlayer.SubContainer.ContainerTypes GetParentContainerType(AudioPlayer.SubContainer source, AudioPlayer.Container container)
    {
        AudioPlayer.SubContainer.ContainerTypes containerType = AudioPlayer.SubContainer.ContainerTypes.AudioSource;

        if (source.parentLink != 0)
        {
            containerType = container.GetSourceWithID(source.parentLink).sourceType;
        }
        else if (container.containerType == AudioPlayer.Container.ContainerTypes.MixContainer)
        {
            containerType = AudioPlayer.SubContainer.ContainerTypes.MixContainer;
        }
        else if (container.containerType == AudioPlayer.Container.ContainerTypes.RandomContainer)
        {
            containerType = AudioPlayer.SubContainer.ContainerTypes.RandomContainer;
        }
        else if (container.containerType == AudioPlayer.Container.ContainerTypes.SequenceContainer)
        {
            containerType = AudioPlayer.SubContainer.ContainerTypes.SequenceContainer;
        }

        return(containerType);
    }
Exemplo n.º 7
0
 void ShowGeneralSourceSettings(AudioPlayer.SubContainer source, AudioPlayer.Container container)
 {
     source.delay    = Mathf.Max(EditorGUILayout.FloatField("Delay", source.delay), 0);
     source.syncMode = (AudioPlayer.SyncMode)EditorGUILayout.EnumPopup("Sync Mode", source.syncMode);
 }
Exemplo n.º 8
0
    void ShowChildrenSources(AudioPlayer.SubContainer source, AudioPlayer.Container container, SerializedProperty containerProperty)
    {
        EditorGUILayout.BeginHorizontal();
        source.sourcesShowing = EditorGUILayout.Foldout(source.sourcesShowing, "Sources (" + source.childrenLink.Count + ")");

        EditorGUI.BeginDisabledGroup(Application.isPlaying);
        if (ShowAddElementButton(containerProperty.FindPropertyRelative("subContainers")))
        {
            container.subContainers[container.subContainers.Count - 1] = new AudioPlayer.SubContainer();
            if (container.subContainers.Count > 1)
            {
                container.subContainers[container.subContainers.Count - 1].Initialize(container, source.id, container.subContainers[container.subContainers.Count - 2]);
            }
            else
            {
                container.subContainers[container.subContainers.Count - 1].Initialize(container, source.id);
            }
        }
        EditorGUI.EndDisabledGroup();
        EditorGUILayout.EndHorizontal();

        if (source.sourcesShowing)
        {
            EditorGUI.indentLevel += 1;
            if (source.childrenLink.Count != 0)
            {
                for (int i = 0; i < source.childrenLink.Count; i++)
                {
                    AudioPlayer.SubContainer childSource = container.GetSourceWithID(source.childrenLink[i]);
                    int index = container.subContainers.IndexOf(childSource);

                    EditorGUILayout.BeginHorizontal();
                    childSource.showing = EditorGUILayout.Foldout(childSource.showing, childSource.name);
                    EditorGUI.BeginDisabledGroup(Application.isPlaying);
                    if (ShowDeleteElementButton(containerProperty.FindPropertyRelative("subContainers"), index))
                    {
                        container.GetSourceWithID(source.id).childrenLink.Remove(childSource.id);
                        container.RemoveEmptyReferences();
                        break;
                    }
                    EditorGUILayout.EndHorizontal();
                    EditorGUI.EndDisabledGroup();

                    if (childSource.sourceType == AudioPlayer.SubContainer.ContainerTypes.AudioSource)
                    {
                        ShowAudioSource(childSource, container, containerProperty);
                    }
                    else if (childSource.sourceType == AudioPlayer.SubContainer.ContainerTypes.Sampler)
                    {
                        ShowSampler(childSource, container, containerProperty);
                    }
                    else if (childSource.sourceType == AudioPlayer.SubContainer.ContainerTypes.MixContainer)
                    {
                        ShowMixContainer(childSource, container, containerProperty);
                    }
                    else if (childSource.sourceType == AudioPlayer.SubContainer.ContainerTypes.RandomContainer)
                    {
                        ShowRandomContainer(childSource, container, containerProperty);
                    }
                    else if (childSource.sourceType == AudioPlayer.SubContainer.ContainerTypes.SequenceContainer)
                    {
                        ShowSequenceContainer(childSource, container, containerProperty);
                    }
                }
            }
            EditorGUI.indentLevel -= 1;
        }
        ShowSeparator(false);
    }
Exemplo n.º 9
0
    void ShowSources(AudioPlayer.Container container, SerializedProperty containerProperty)
    {
        EditorGUILayout.BeginHorizontal();
        container.sourcesShowing = EditorGUILayout.Foldout(container.sourcesShowing, "Sources (" + container.sources.Length + ")");

        EditorGUI.BeginDisabledGroup(Application.isPlaying);
        if (ShowAddElementButton(containerProperty.FindPropertyRelative("sources")))
        {
            container.sources[container.sources.Length - 1] = new AudioPlayer.SubContainer();
            if (container.sources.Length > 1)
            {
                container.sources[container.sources.Length - 1].Initialize(container, 0, container.sources[container.sources.Length - 2]);
            }
            else
            {
                container.sources[container.sources.Length - 1].Initialize(container, 0);
            }
        }

        EditorGUI.EndDisabledGroup();
        EditorGUILayout.EndHorizontal();

        if (container.sourcesShowing)
        {
            EditorGUI.indentLevel += 1;
            if (container.sources != null)
            {
                for (int i = 0; i < container.sources.Length; i++)
                {
                    AudioPlayer.SubContainer source = container.sources[i];

                    EditorGUILayout.BeginHorizontal();
                    source.showing = EditorGUILayout.Foldout(source.showing, source.name);
                    EditorGUI.BeginDisabledGroup(Application.isPlaying);
                    if (ShowDeleteElementButton(containerProperty.FindPropertyRelative("sources"), i))
                    {
                        container.RemoveEmptyReferences();
                        break;
                    }
                    EditorGUILayout.EndHorizontal();
                    EditorGUI.EndDisabledGroup();

                    if (source.sourceType == AudioPlayer.SubContainer.ContainerTypes.AudioSource)
                    {
                        ShowAudioSource(source, container, containerProperty);
                    }
                    else if (source.sourceType == AudioPlayer.SubContainer.ContainerTypes.Sampler)
                    {
                        ShowSampler(source, container, containerProperty);
                    }
                    else if (source.sourceType == AudioPlayer.SubContainer.ContainerTypes.MixContainer)
                    {
                        ShowMixContainer(source, container, containerProperty);
                    }
                    else if (source.sourceType == AudioPlayer.SubContainer.ContainerTypes.RandomContainer)
                    {
                        ShowRandomContainer(source, container, containerProperty);
                    }
                    else if (source.sourceType == AudioPlayer.SubContainer.ContainerTypes.SequenceContainer)
                    {
                        ShowSequenceContainer(source, container, containerProperty);
                    }
                }
            }
            EditorGUI.indentLevel -= 1;
        }
        ShowSeparator(false);
    }