void DisplayChildBuildDirectories(string label, List <PlatformStringSetting> settings, FMODPlatform platform) { string[] buildDirectories = EditorUtils.GetBankPlatforms(); bool overriden = Settings.HasSetting(settings, platform); string current = Settings.GetSetting(settings, platform, "Desktop"); string inherit = Settings.GetSetting(settings, Settings.GetParent(platform), "Desktop"); int index = Array.IndexOf(buildDirectories, current); if (index < 0) { index = 0; } string[] valuesChild = new string[buildDirectories.Length + 1]; Array.Copy(buildDirectories, 0, valuesChild, 1, buildDirectories.Length); valuesChild[0] = string.Format("Inherit ({0})", inherit); int next = EditorGUILayout.Popup(label, overriden ? index + 1 : 0, valuesChild); if (next == 0) { Settings.RemoveSetting(settings, platform); Settings.RemoveSetting(((Settings)target).SpeakerModeSettings, platform); } else { Settings.SetSetting(settings, platform, buildDirectories[next - 1]); } }
void DisplayPIESpeakerMode(string label, List <PlatformIntSetting> settings, FMODPlatform platform) { int buildTargetSetting = Settings.GetSetting(settings, RuntimeUtils.GetEditorFMODPlatform(), (int)FMOD.SPEAKERMODE.STEREO); int buildTargetIndex = Array.IndexOf(SpeakerModeValues, buildTargetSetting); string[] speakerModes = new string[SpeakerModeDisplay.Length + 1]; Array.Copy(SpeakerModeDisplay, 0, speakerModes, 1, SpeakerModeDisplay.Length); speakerModes[0] = string.Format("Current Unity Platform ({0})", SpeakerModeDisplay[buildTargetIndex]); bool useCurrentUnity = !Settings.HasSetting(settings, platform); int current = Settings.GetSetting(settings, platform, (int)FMOD.SPEAKERMODE.STEREO); int index = Array.IndexOf(SpeakerModeValues, current) + 1; if (useCurrentUnity || index < 0) { index = 0; } int next = EditorGUILayout.Popup(label, index, speakerModes); if (next != 0) { Settings.SetSetting(settings, platform, SpeakerModeValues[next - 1]); } else { Settings.RemoveSetting(settings, platform); } }
void DisplayPIEBuildDirectory(string label, List <PlatformStringSetting> settings, FMODPlatform platform) { string buildTargetSetting = Settings.GetSetting(settings, RuntimeUtils.GetEditorFMODPlatform(), "Desktop"); string[] buildDirectories = new string[EditorUtils.GetBankPlatforms().Length + 1]; Array.Copy(EditorUtils.GetBankPlatforms(), 0, buildDirectories, 1, EditorUtils.GetBankPlatforms().Length); buildDirectories[0] = String.Format("Current Unity Platform ({0})", buildTargetSetting); bool useCurrentUnity = !Settings.HasSetting(settings, platform); string current = Settings.GetSetting(settings, platform, "Desktop"); int index = Array.IndexOf(buildDirectories, current); if (useCurrentUnity || index < 0) { index = 0; } int next = EditorGUILayout.Popup(label, index, buildDirectories); if (next != 0) { Settings.SetSetting(settings, platform, buildDirectories[next]); } else { Settings.RemoveSetting(settings, platform); } }
void DisplayChildSpeakerMode(string label, List <PlatformIntSetting> settings, FMODPlatform platform) { bool overriden = Settings.HasSetting(settings, platform); int current = Settings.GetSetting(settings, platform, 0); int index = Array.IndexOf(SpeakerModeValues, current); string[] valuesChild = new string[SpeakerModeDisplay.Length + 1]; Array.Copy(SpeakerModeDisplay, 0, valuesChild, 1, SpeakerModeDisplay.Length); valuesChild[0] = String.Format("Inherit ({0})", SpeakerModeDisplay[index]); int next = EditorGUILayout.Popup(label, overriden ? index + 1 : 0, valuesChild); if (next == 0) { Settings.RemoveSetting(settings, platform); } else { Settings.SetSetting(settings, platform, SpeakerModeValues[next - 1]); } }
void DisplayChildInt(string label, List <PlatformIntSetting> settings, FMODPlatform platform, int min, int max) { bool overriden = Settings.HasSetting(settings, platform); int current = Settings.GetSetting(settings, platform, 0); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(label); overriden = !GUILayout.Toggle(!overriden, "Inherit"); int next = EditorGUILayout.IntSlider(current, min, max); EditorGUILayout.EndHorizontal(); if (overriden) { Settings.SetSetting(settings, platform, next); } else { Settings.RemoveSetting(settings, platform); } }
void DisplayChildFreq(string label, List <PlatformIntSetting> settings, FMODPlatform platform) { bool overriden = Settings.HasSetting(settings, platform); int current = Settings.GetSetting(settings, platform, 0); int inherit = Settings.GetSetting(settings, Settings.GetParent(platform), 0); int currentIndex = Array.IndexOf(FrequencyValues, current); int inheritIndex = Array.IndexOf(FrequencyValues, inherit); string[] valuesChild = new string[FrequencyDisplay.Length + 1]; Array.Copy(FrequencyDisplay, 0, valuesChild, 1, FrequencyDisplay.Length); valuesChild[0] = string.Format("Inherit ({0})", FrequencyDisplay[inheritIndex]); int next = EditorGUILayout.Popup(label, overriden ? currentIndex + 1 : 0, valuesChild); if (next == 0) { Settings.RemoveSetting(settings, platform); } else { Settings.SetSetting(settings, platform, FrequencyValues[next - 1]); } }
void DisplayChildBool(string label, List <PlatformBoolSetting> settings, FMODPlatform platform) { bool overriden = Settings.HasSetting(settings, platform); bool current = Settings.GetSetting(settings, platform, false); string[] toggleChild = new string[ToggleParent.Length + 1]; Array.Copy(ToggleParent, 0, toggleChild, 1, ToggleParent.Length); toggleChild[0] = String.Format("Inherit ({0})", ToggleParent[current ? 1 : 0]); int next = EditorGUILayout.Popup(label, overriden ? (current ? 2 : 1) : 0, toggleChild); if (next == 0) { if (overriden) { Settings.RemoveSetting(settings, platform); } } else { Settings.SetSetting(settings, platform, next == 2); } }
void DisplayChildBool(string label, List <PlatformBoolSetting> settings, FMODPlatform platform) { bool overriden = Settings.HasSetting(settings, platform); TriStateBool parent = Settings.GetSetting(settings, Settings.GetParent(platform), TriStateBool.Disabled); TriStateBool current = Settings.GetSetting(settings, platform, TriStateBool.Disabled); string[] toggleChild = new string[ToggleParent.Length + 1]; Array.Copy(ToggleParent, 0, toggleChild, 1, ToggleParent.Length); toggleChild[0] = string.Format("Inherit ({0})", ToggleParent[(int)parent]); int next = EditorGUILayout.Popup(label, overriden ? (int)current + 1: 0, toggleChild); if (next == 0) { if (overriden) { Settings.RemoveSetting(settings, platform); } } else { Settings.SetSetting(settings, platform, (TriStateBool)(next - 1)); } }
void DisplayPlatform(FMODPlatform platform, FMODPlatform[] children = null) { Settings settings = target as Settings; var label = new System.Text.StringBuilder(); label.AppendFormat("<b>{0}</b>", (PlatformLabel(platform))); if (children != null) { label.Append(" ("); foreach (var child in children) { label.Append(PlatformLabel(child)); label.Append(", "); } label.Remove(label.Length - 2, 2); label.Append(")"); } GUIStyle style = new GUIStyle(GUI.skin.FindStyle("Foldout")); style.richText = true; foldoutState[(int)platform] = EditorGUILayout.Foldout(foldoutState[(int)platform], new GUIContent(label.ToString()), style); if (foldoutState[(int)platform]) { EditorGUI.indentLevel++; DisplayChildBool("Live Update", settings.LiveUpdateSettings, platform); if (settings.IsLiveUpdateEnabled(platform)) { GUIStyle style2 = new GUIStyle(GUI.skin.label); style2.richText = true; EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(" "); GUILayout.Label("Live update will listen on port <b>9264</b>", style2); EditorGUILayout.EndHorizontal(); } DisplayChildBool("Debug Overlay", settings.OverlaySettings, platform); DisplayChildFreq("Sample Rate", settings.SampleRateSettings, platform); if (settings.HasPlatforms && AllowBankChange(platform)) { bool prevChanged = GUI.changed; DisplayChildBuildDirectories("Bank Platform", settings.BankDirectorySettings, platform); hasBankSourceChanged |= !prevChanged && GUI.changed; if (Settings.HasSetting(settings.BankDirectorySettings, platform)) { DisplayChildSpeakerMode("Speaker Mode", settings.SpeakerModeSettings, platform); EditorGUILayout.HelpBox(string.Format("Match the speaker mode to the setting of the platform <b>{0}</b> inside FMOD Studio", settings.GetBankPlatform(platform)), MessageType.Info, false); } else { EditorGUI.BeginDisabledGroup(true); DisplayChildSpeakerMode("Speaker Mode", settings.SpeakerModeSettings, platform); EditorGUI.EndDisabledGroup(); } } DisplayChildInt("Virtual Channel Count", settings.VirtualChannelSettings, platform, 1, 2048); DisplayChildInt("Real Channel Count", settings.RealChannelSettings, platform, 1, 256); if (children != null) { foreach (var child in children) { DisplayPlatform(child); } } EditorGUI.indentLevel--; } }