using System.Collections.Generic; using UnityEditor; using UnityEngine; using Debug = UnityEngine.Debug; using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine.Audio; #if MULTIPLAYER_ENABLED using DarkTonic.MasterAudio.Multiplayer; #endif namespace DarkTonic.MasterAudio.EditorScripts { [CustomEditor(typeof(EventSounds))] // ReSharper disable once CheckNamespace public class AudioEventInspector : Editor { private List _groupNames; private List _busNames; private List _playlistNames; private List _playlistControllerNames; private List _customEventNames; private bool _maInScene; private MasterAudio _ma; private EventSounds _sounds; // ReSharper disable once ConvertToConstant.Local // ReSharper disable once FieldCanBeMadeReadOnly.Local // ReSharper disable once RedundantDefaultMemberInitializer private bool _hasMechanim = false; private readonly List _changedList = new List(); private bool _isDirty; public static List GetSoundGroupList() { var groups = new List(); var ma = MasterAudio.Instance; var maInScene = ma != null; if (maInScene) { // ReSharper disable once PossibleNullReferenceException groups = ma.GroupNames; } var creators = FindObjectsOfType(typeof(DynamicSoundGroupCreator)) as DynamicSoundGroupCreator[]; // ReSharper disable once PossibleNullReferenceException foreach (var dsgc in creators) { var trans = dsgc.transform; for (var i = 0; i < trans.childCount; ++i) { var group = trans.GetChild(i).GetComponent(); if (group == null) { continue; } groups.Add(group.name); } } return groups; } protected virtual void PopulateItemNames(List groups, List buses, List playlists, List events) { if (groups == null) { groups = new List(); } if (buses == null) { buses = new List(); } if (playlists == null) { playlists = new List(); } if (events == null) { events = new List(); } var creators = FindObjectsOfType(typeof(DynamicSoundGroupCreator)) as DynamicSoundGroupCreator[]; // ReSharper disable once PossibleNullReferenceException foreach (var dsgc in creators) { var trans = dsgc.transform; for (var i = 0; i < trans.childCount; ++i) { var group = trans.GetChild(i).GetComponent(); if (group != null) { groups.Add(group.name); } } foreach (var bus in dsgc.groupBuses) { buses.Add(bus.busName); } foreach (var playlist in dsgc.musicPlaylists) { playlists.Add(playlist.playlistName); } foreach (var custom in dsgc.customEventsToCreate) { events.Add(custom.EventName); } } groups.Sort(); if (groups.Count > 1) { // "type in" back to index 0 (sort puts it at #1) groups.Insert(0, groups[1]); } buses.Sort(); if (buses.Count > 1) { // "type in" back to index 0 (sort puts it at #1) buses.Insert(0, buses[1]); } playlists.Sort(); if (playlists.Count > 1) { // "type in" back to index 0 (sort puts it at #1) playlists.Insert(0, playlists[1]); } events.Sort(); if (events.Count > 1) { // "type in" back to index 0 (sort puts it at #1) events.Insert(0, events[1]); } } public override void OnInspectorGUI() { MasterAudio.Instance = null; _ma = MasterAudio.Instance; _maInScene = _ma != null; if (_maInScene) { DTGUIHelper.ShowHeaderTexture(MasterAudioInspectorResources.LogoTexture); } _isDirty = false; DTGUIHelper.HelpHeader("https://www.dtdevtools.com/docs/masteraudio/EventSounds.htm"); _sounds = (EventSounds)target; var showNewUIEvents = _sounds.unityUIMode == EventSounds.UnityUIVersion.uGUI; var hasSlider = _sounds.GetComponent() != null; var hasButton = _sounds.GetComponent