void ShowSequenceContainer(AudioPlayerOld.Container container, SerializedProperty containerProperty) { AdjustName("Sequence Container", currentSource, container); if (currentSourceProperty.isExpanded) { EditorGUI.indentLevel += 1; ShowSourceParentSettings(currentSource, container); ShowGeneralSourceSettings(currentSource, container); ShowChildrenSources(currentSource, container, containerProperty); EditorGUI.indentLevel -= 1; } }
void ShowSourceParentSettings(AudioPlayerOld.SubContainer source, AudioPlayerOld.Container container) { if (GetParentContainerType(source, container) == AudioPlayerOld.SubContainer.ContainerTypes.RandomContainer) { source.weight = Mathf.Max(EditorGUILayout.FloatField("Weight", source.weight), 0); EditorGUILayout.Space(); } else if (GetParentContainerType(source, container) == AudioPlayerOld.SubContainer.ContainerTypes.SequenceContainer) { source.repeat = Mathf.Max(EditorGUILayout.IntField("Repeat", source.repeat), 1); EditorGUILayout.Space(); } source.sourceType = (AudioPlayerOld.SubContainer.ContainerTypes)EditorGUILayout.EnumPopup(source.sourceType); }
void ShowContainers() { if (audioPlayer.containers == null) { return; } SerializedProperty containersProperty = serializedObject.FindProperty("containers"); if (AddElementFoldOut(containersProperty, "Containers".ToGUIContent())) { audioPlayer.containers[audioPlayer.containers.Length - 1] = new AudioPlayerOld.Container(); audioPlayer.containers[audioPlayer.containers.Length - 1].name = AudioPlayerOld.GetUniqueName(audioPlayer.containers, "default"); audioPlayer.containers[audioPlayer.containers.Length - 1].subContainers = new List <AudioPlayerOld.SubContainer>(); } if (containersProperty.isExpanded) { EditorGUI.indentLevel += 1; for (int i = 0; i < audioPlayer.containers.Length; i++) { AudioPlayerOld.Container container = audioPlayer.containers[i]; currentContainer = container; SerializedProperty containerProperty = containersProperty.GetArrayElementAtIndex(i); if (DeleteElementFoldOutWithArrows(containersProperty, i, container.name.ToGUIContent())) { break; } if (container.showing) { EditorGUI.indentLevel += 1; EditorGUI.BeginDisabledGroup(Application.isPlaying); container.name = EditorGUILayout.TextField(container.name); EditorGUI.EndDisabledGroup(); container.containerType = (AudioPlayerOld.Container.ContainerTypes)EditorGUILayout.EnumPopup(container.containerType); ShowSources(container, containerProperty); EditorGUI.indentLevel -= 1; } } EditorGUI.indentLevel -= 1; } }
void ShowSampler(AudioPlayerOld.Container container, SerializedProperty containerProperty) { if (string.IsNullOrEmpty(currentSource.instrumentName)) { AdjustName("Sampler: null", currentSource, container); } else { AdjustName("Sampler: " + currentSource.instrumentName + " " + currentSource.midiNote + "/" + currentSource.velocity, currentSource, container); } if (currentSourceProperty.isExpanded) { EditorGUI.indentLevel += 1; ShowSourceParentSettings(currentSource, 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) { currentSource.instrumentIndex = Mathf.Min(EditorGUILayout.Popup("Instrument", currentSource.instrumentIndex, displayedOptions), Sampler.Instance.instruments.Length - 1); currentSource.instrumentName = Sampler.Instance.instruments[currentSource.instrumentIndex].name; currentSource.midiNote = EditorGUILayout.IntSlider("Midi Note", currentSource.midiNote, (int)Sampler.Instance.instruments[currentSource.instrumentIndex].minNote, (int)Sampler.Instance.instruments[currentSource.instrumentIndex].maxNote); currentSource.velocity = EditorGUILayout.Slider("Velocity", currentSource.velocity, 0, 127); ShowGeneralSourceSettings(currentSource, container); } else { EditorGUILayout.HelpBox("Add Instruments in the Sampler.", MessageType.Info); currentSource.instrumentName = ""; } EditorGUI.indentLevel -= 1; } }
void AdjustName(string prefix, AudioPlayerOld.SubContainer source, AudioPlayerOld.Container container) { source.name = prefix; if (source.sourceType == AudioPlayerOld.SubContainer.ContainerTypes.MixContainer || source.sourceType == AudioPlayerOld.SubContainer.ContainerTypes.RandomContainer || source.sourceType == AudioPlayerOld.SubContainer.ContainerTypes.SequenceContainer) { source.name += " | Sources: " + source.childrenLink.Count; } if (GetParentContainerType(source, container) == AudioPlayerOld.SubContainer.ContainerTypes.RandomContainer) { source.name += " | Weight: " + source.weight; } else if (GetParentContainerType(source, container) == AudioPlayerOld.SubContainer.ContainerTypes.SequenceContainer) { source.name += " | Repeat: " + source.repeat; } }
void ShowAudioSource(AudioPlayerOld.Container container, SerializedProperty containerProperty) { if (currentSource.audioSource == null) { AdjustName("Audio Source: null", currentSource, container); } else { AdjustName("Audio Source: " + currentSource.audioSource.clip.name, currentSource, container); } if (currentSourceProperty.isExpanded) { EditorGUI.indentLevel += 1; ShowSourceParentSettings(currentSource, container); currentSource.audioSource = (AudioSource)EditorGUILayout.ObjectField("Audio Source", currentSource.audioSource, typeof(AudioSource), true); ShowGeneralSourceSettings(currentSource, container); EditorGUI.indentLevel -= 1; } }
AudioPlayerOld.SubContainer.ContainerTypes GetParentContainerType(AudioPlayerOld.SubContainer source, AudioPlayerOld.Container container) { AudioPlayerOld.SubContainer.ContainerTypes containerType = AudioPlayerOld.SubContainer.ContainerTypes.AudioSource; if (source.parentLink != 0) { containerType = container.GetSourceWithID(source.parentLink).sourceType; } else if (container.containerType == AudioPlayerOld.Container.ContainerTypes.MixContainer) { containerType = AudioPlayerOld.SubContainer.ContainerTypes.MixContainer; } else if (container.containerType == AudioPlayerOld.Container.ContainerTypes.RandomContainer) { containerType = AudioPlayerOld.SubContainer.ContainerTypes.RandomContainer; } else if (container.containerType == AudioPlayerOld.Container.ContainerTypes.SequenceContainer) { containerType = AudioPlayerOld.SubContainer.ContainerTypes.SequenceContainer; } return(containerType); }
void ShowGeneralSourceSettings(AudioPlayerOld.SubContainer source, AudioPlayerOld.Container container) { source.delay = Mathf.Max(EditorGUILayout.FloatField("Delay", source.delay), 0); source.syncMode = (AudioPlayerOld.SyncMode)EditorGUILayout.EnumPopup("Sync Mode", source.syncMode); }
void ShowChildrenSources(AudioPlayerOld.SubContainer source, AudioPlayerOld.Container container, SerializedProperty containerProperty) { SerializedProperty subContainersProperty = containerProperty.FindPropertyRelative("subContainers"); if (AddElementFoldOut(subContainersProperty, "Sources".ToGUIContent(), source.childrenLink.Count)) { currentContainer.subContainers[currentContainer.subContainers.Count - 1] = new AudioPlayerOld.SubContainer(); if (currentContainer.subContainers.Count > 1) { currentContainer.subContainers.Last().Initialize(currentContainer, currentSource.id, currentContainer.subContainers[currentContainer.subContainers.Count - 2]); } else { currentContainer.subContainers.Last().Initialize(currentContainer, currentSource.id); } } if (subContainersProperty.isExpanded) { EditorGUI.indentLevel += 1; if (source.childrenLink.Count != 0) { for (int i = 0; i < source.childrenLink.Count; i++) { currentSource = container.GetSourceWithID(source.childrenLink[i]); currentSourceProperty = subContainersProperty.GetArrayElementAtIndex(i); int index = container.subContainers.IndexOf(currentSource); if (DeleteElementFoldOut(subContainersProperty, index, currentSource.name.ToGUIContent())) { container.GetSourceWithID(source.id).childrenLink.Remove(currentSource.id); container.RemoveEmptyReferences(); break; } switch (currentSource.sourceType) { case AudioPlayerOld.SubContainer.ContainerTypes.AudioSource: ShowAudioSource(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.Sampler: ShowSampler(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.MixContainer: ShowMixContainer(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.RandomContainer: ShowRandomContainer(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.SequenceContainer: ShowSequenceContainer(container, containerProperty); break; } } } EditorGUI.indentLevel -= 1; } Separator(); }
void ShowSources(AudioPlayerOld.Container container, SerializedProperty containerProperty) { SerializedProperty sourcesProperty = containerProperty.FindPropertyRelative("sources"); if (AddElementFoldOut(sourcesProperty, "Sources".ToGUIContent())) { currentContainer.sources[currentContainer.sources.Length - 1] = new AudioPlayerOld.SubContainer(); if (currentContainer.sources.Length > 1) { currentContainer.sources[currentContainer.sources.Length - 1].Initialize(currentContainer, 0, currentContainer.sources[currentContainer.sources.Length - 2]); } else { currentContainer.sources[currentContainer.sources.Length - 1].Initialize(currentContainer, 0); } } if (sourcesProperty.isExpanded) { EditorGUI.indentLevel += 1; if (container.sources != null) { for (int i = 0; i < container.sources.Length; i++) { currentSource = container.sources[i]; currentSourceProperty = sourcesProperty.GetArrayElementAtIndex(i); if (DeleteElementFoldOut(sourcesProperty, i, currentSource.name.ToGUIContent())) { container.RemoveEmptyReferences(); break; } switch (currentSource.sourceType) { case AudioPlayerOld.SubContainer.ContainerTypes.AudioSource: ShowAudioSource(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.Sampler: ShowSampler(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.MixContainer: ShowMixContainer(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.RandomContainer: ShowRandomContainer(container, containerProperty); break; case AudioPlayerOld.SubContainer.ContainerTypes.SequenceContainer: ShowSequenceContainer(container, containerProperty); break; } } } EditorGUI.indentLevel -= 1; } Separator(); }