public override void OnInspectorGUI() { Settings settings = target as Settings; EditorGUI.BeginChangeCheck(); hasBankSourceChanged = false; bool hasBankTargetChanged = false; GUIStyle style = new GUIStyle(GUI.skin.label); style.richText = true; GUI.skin.FindStyle("HelpBox").richText = true; int sourceType = settings.HasSourceProject ? 0 : (settings.HasPlatforms ? 2 : 1); EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(); sourceType = GUILayout.Toggle(sourceType == 0, "Project", "Button") ? 0 : sourceType; sourceType = GUILayout.Toggle(sourceType == 1, "Single Platform Build", "Button") ? 1 : sourceType; sourceType = GUILayout.Toggle(sourceType == 2, "Multiple Platform Build", "Button") ? 2 : sourceType; EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); EditorGUILayout.HelpBox( "<size=11>Select the way you wish to connect Unity to the FMOD Studio content:\n" + "<b>• Project</b>\t\tIf you have the complete FMOD Studio project avaliable\n" + "<b>• Single Platform</b>\tIf you have only the contents of the <i>Build</i> folder for a single platform\n" + "<b>• Multiple Platforms</b>\tIf you have only the contents of the <i>Build</i> folder for multiple platforms, each platform in it's own sub directory\n" + "</size>" , MessageType.Info, true); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); if (sourceType == 0) { EditorGUILayout.BeginHorizontal(); string oldPath = settings.SourceProjectPathUnformatted; EditorGUILayout.PrefixLabel("Studio Project Path", GUI.skin.textField, style); EditorGUI.BeginChangeCheck(); settings.SourceProjectPathUnformatted = EditorGUILayout.TextField(GUIContent.none, settings.SourceProjectPathUnformatted); if (EditorGUI.EndChangeCheck()) { settings.SourceProjectPath = settings.SourceProjectPathUnformatted; settings.SourceProjectPathUnformatted = MakePathRelativeToProject(settings.SourceProjectPathUnformatted); } if (GUILayout.Button("Browse", GUILayout.ExpandWidth(false))) { GUI.FocusControl(null); string path = EditorUtility.OpenFilePanel("Locate Studio Project", oldPath, "fspro"); if (!string.IsNullOrEmpty(path)) { settings.SourceProjectPath = path; settings.SourceProjectPathUnformatted = MakePathRelativeToProject(path); Repaint(); } } EditorGUILayout.EndHorizontal(); // Cache in settings for runtime access in play-in-editor mode string bankPath = EditorUtils.GetBankDirectoryUnformatted(); settings.SourceBankPathUnformatted = bankPath; settings.SourceBankPath = bankPath; settings.HasPlatforms = true; settings.HasSourceProject = true; // First time project path is set or changes, copy to streaming assets if (settings.SourceProjectPathUnformatted != oldPath) { hasBankSourceChanged = true; } } if (sourceType == 1 || sourceType == 2) { EditorGUILayout.BeginHorizontal(); string oldPath = settings.SourceBankPathUnformatted; EditorGUILayout.PrefixLabel("Build Path", GUI.skin.textField, style); EditorGUI.BeginChangeCheck(); settings.SourceBankPathUnformatted = EditorGUILayout.TextField(GUIContent.none, settings.SourceBankPathUnformatted); if (EditorGUI.EndChangeCheck()) { settings.SourceBankPath = Path.GetFullPath(settings.SourceBankPathUnformatted); settings.SourceBankPathUnformatted = MakePathRelativeToProject(settings.SourceBankPathUnformatted); } if (GUILayout.Button("Browse", GUILayout.ExpandWidth(false))) { GUI.FocusControl(null); var path = EditorUtility.OpenFolderPanel("Locate Build Folder", oldPath, null); if (!string.IsNullOrEmpty(path)) { settings.SourceBankPath = path; settings.SourceBankPathUnformatted = MakePathRelativeToProject(path); Repaint(); } } EditorGUILayout.EndHorizontal(); settings.HasPlatforms = (sourceType == 2); settings.HasSourceProject = false; // First time project path is set or changes, copy to streaming assets if (settings.SourceBankPathUnformatted != oldPath) { hasBankSourceChanged = true; } } if ((settings.HasSourceProject && !settings.SourceProjectPathUnformatted.Equals(settings.SourceProjectPath)) || (sourceType >= 1 && !settings.SourceBankPathUnformatted.Equals(settings.SourceBankPath))) { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.TextField("Local path", sourceType >= 1 ? settings.SourceBankPath : settings.SourceProjectPath); EditorGUI.EndDisabledGroup(); } bool validBanks; string failReason; EditorUtils.ValidateSource(out validBanks, out failReason); if (!validBanks) { EditorGUILayout.HelpBox(failReason, MessageType.Error, true); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(settings); } return; } ImportType importType = (ImportType)EditorGUILayout.EnumPopup("Import Type", settings.ImportType); if (importType != settings.ImportType) { hasBankTargetChanged = true; settings.ImportType = importType; } // ----- Text Assets ------------- EditorGUI.BeginDisabledGroup(settings.ImportType != ImportType.AssetBundle); GUI.SetNextControlName("targetAssetPath"); targetAssetPath = EditorGUILayout.TextField("FMOD Asset Folder", string.IsNullOrEmpty(targetAssetPath) ? settings.TargetAssetPath : targetAssetPath); if (GUI.GetNameOfFocusedControl() == "targetAssetPath") { focused = true; if (Event.current.isKey) { switch (Event.current.keyCode) { case KeyCode.Return: case KeyCode.KeypadEnter: settings.TargetAssetPath = targetAssetPath; hasBankTargetChanged = true; break; } } } else if (focused) { settings.TargetAssetPath = targetAssetPath; hasBankTargetChanged = true; focused = false; } EditorGUI.EndDisabledGroup(); // ----- Logging ----------------- EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Logging</b>", style); EditorGUI.indentLevel++; settings.LoggingLevel = (FMOD.DEBUG_FLAGS)EditorGUILayout.EnumPopup("Logging Level", settings.LoggingLevel); EditorGUI.indentLevel--; // ----- Loading ----------------- EditorGUI.BeginDisabledGroup(settings.ImportType == ImportType.AssetBundle); EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Initialization</b>", style); EditorGUI.indentLevel++; settings.BankLoadType = (BankLoadType)EditorGUILayout.EnumPopup("Load Banks", settings.BankLoadType); switch (settings.BankLoadType) { case BankLoadType.All: break; case BankLoadType.Specified: settings.AutomaticEventLoading = false; Texture upArrowTexture = EditorGUIUtility.Load("FMOD/ArrowUp.png") as Texture; Texture downArrowTexture = EditorGUIUtility.Load("FMOD/ArrowDown.png") as Texture; bankFoldOutState = EditorGUILayout.Foldout(bankFoldOutState, "Specified Banks", true); if (bankFoldOutState) { for (int i = 0; i < settings.BanksToLoad.Count; i++) { EditorGUILayout.BeginHorizontal(); EditorGUI.indentLevel++; var bankName = settings.BanksToLoad[i]; EditorGUILayout.TextField(bankName.Replace(".bank", "")); if (GUILayout.Button(upArrowTexture, GUILayout.ExpandWidth(false))) { if (i > 0) { var temp = settings.BanksToLoad[i]; settings.BanksToLoad[i] = settings.BanksToLoad[i - 1]; settings.BanksToLoad[i - 1] = temp; } continue; } if (GUILayout.Button(downArrowTexture, GUILayout.ExpandWidth(false))) { if (i < settings.BanksToLoad.Count - 1) { var temp = settings.BanksToLoad[i]; settings.BanksToLoad[i] = settings.BanksToLoad[i + 1]; settings.BanksToLoad[i + 1] = temp; } continue; } if (GUILayout.Button("Browse", GUILayout.ExpandWidth(false))) { GUI.FocusControl(null); string path = EditorUtility.OpenFilePanel("Locate Bank", Application.streamingAssetsPath, "bank"); if (!string.IsNullOrEmpty(path)) { settings.BanksToLoad[i] = path.Replace(Application.streamingAssetsPath + Path.AltDirectorySeparatorChar, ""); Repaint(); } } if (GUILayout.Button("Remove", GUILayout.ExpandWidth(false))) { Settings.Instance.BanksToLoad.RemoveAt(i); continue; } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel--; } GUILayout.BeginHorizontal(); GUILayout.Space(30); if (GUILayout.Button("Add Bank", GUILayout.ExpandWidth(false))) { settings.BanksToLoad.Add(""); } if (GUILayout.Button("Add All Banks", GUILayout.ExpandWidth(false))) { FMODPlatform platform = RuntimeUtils.GetEditorFMODPlatform(); if (platform == FMODPlatform.None) { platform = FMODPlatform.PlayInEditor; } var banksFound = new List <string>(Directory.GetFiles(EditorUtils.GetBankDirectory(), "*.bank", SearchOption.AllDirectories)); for (int i = 0; i < banksFound.Count; i++) { string sourceDir = EditorUtils.GetBankDirectory() + Path.DirectorySeparatorChar + (settings.HasSourceProject ? settings.GetBankPlatform(platform) + Path.DirectorySeparatorChar : ""); string bankShortName = Path.GetFullPath(banksFound[i]).Replace(sourceDir, ""); if (!settings.BanksToLoad.Contains(bankShortName)) { settings.BanksToLoad.Add(bankShortName); } } Repaint(); } if (GUILayout.Button("Clear", GUILayout.ExpandWidth(false))) { settings.BanksToLoad.Clear(); } GUILayout.EndHorizontal(); } break; case BankLoadType.None: settings.AutomaticEventLoading = false; break; default: break; } EditorGUI.BeginDisabledGroup(settings.BankLoadType == BankLoadType.None); settings.AutomaticSampleLoading = EditorGUILayout.Toggle("Load Bank Sample Data", settings.AutomaticSampleLoading); EditorGUI.EndDisabledGroup(); EditorGUI.indentLevel--; EditorGUI.EndDisabledGroup(); // ----- PIE ---------------------------------------------- EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Play In Editor Settings</b>", style); EditorGUI.indentLevel++; DisplayEditorBool("Live Update", settings.LiveUpdateSettings, FMODPlatform.PlayInEditor); if (settings.IsLiveUpdateEnabled(FMODPlatform.PlayInEditor)) { EditorGUILayout.BeginHorizontal(); settings.LiveUpdatePort = ushort.Parse(EditorGUILayout.TextField("Live Update Port:", settings.LiveUpdatePort.ToString())); if (GUILayout.Button("Reset", GUILayout.ExpandWidth(false))) { #if UNITY_5_0 || UNITY_5_1 settings.LiveUpdatePort = 9265; #else settings.LiveUpdatePort = 9264; #endif } EditorGUILayout.EndHorizontal(); #if UNITY_5_0 || UNITY_5_1 EditorGUILayout.HelpBox("Unity 5.0 or 5.1 detected: Live update will not be able to use port <b>9264</b>", MessageType.Warning, false); #endif } DisplayEditorBool("Debug Overlay", settings.OverlaySettings, FMODPlatform.PlayInEditor); DisplayChildFreq("Sample Rate", settings.SampleRateSettings, FMODPlatform.PlayInEditor); if (settings.HasPlatforms) { DisplayPIEBuildDirectory("Bank Platform", settings.BankDirectorySettings, FMODPlatform.PlayInEditor); } DisplayPIESpeakerMode("Speaker Mode", settings.SpeakerModeSettings, FMODPlatform.PlayInEditor); if (settings.HasPlatforms) { EditorGUILayout.HelpBox(string.Format("Match the speaker mode to the setting of the platform <b>{0}</b> inside FMOD Studio", settings.GetBankPlatform(FMODPlatform.PlayInEditor)), MessageType.Info, false); } else { EditorGUILayout.HelpBox("Match the speaker mode to the setting inside FMOD Studio", MessageType.Info, false); } EditorGUI.indentLevel--; // ----- Default ---------------------------------------------- EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Default Settings</b>", style); EditorGUI.indentLevel++; DisplayParentBool("Live Update", settings.LiveUpdateSettings, FMODPlatform.Default); if (settings.IsLiveUpdateEnabled(FMODPlatform.Default)) { EditorGUILayout.HelpBox("Live update will listen on port <b>9264</b>", MessageType.Info, false); } DisplayParentBool("Debug Overlay", settings.OverlaySettings, FMODPlatform.Default); DisplayParentFreq("Sample Rate", settings.SampleRateSettings, FMODPlatform.Default); if (settings.HasPlatforms) { bool prevChanged = GUI.changed; DisplayParentBuildDirectory("Bank Platform", settings.BankDirectorySettings, FMODPlatform.Default); hasBankSourceChanged |= !prevChanged && GUI.changed; } DisplayParentSpeakerMode("Speaker Mode", settings.SpeakerModeSettings, FMODPlatform.Default); if (settings.HasPlatforms) { EditorGUILayout.HelpBox(string.Format("Match the speaker mode to the setting of the platform <b>{0}</b> inside FMOD Studio", settings.GetBankPlatform(FMODPlatform.Default)), MessageType.Info, false); } else { EditorGUILayout.HelpBox("Match the speaker mode to the setting inside FMOD Studio", MessageType.Info, false); } DisplayParentInt("Virtual Channel Count", settings.VirtualChannelSettings, FMODPlatform.Default, 1, 2048); DisplayParentInt("Real Channel Count", settings.RealChannelSettings, FMODPlatform.Default, 1, 256); EditorGUI.indentLevel--; // ----- Plugins ---------------------------------------------- EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("<b>Plugins</b>", GUI.skin.button, style); if (GUILayout.Button("Add Plugin", GUILayout.ExpandWidth(false))) { settings.Plugins.Add(""); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel++; for (int count = 0; count < settings.Plugins.Count; count++) { EditorGUILayout.BeginHorizontal(); settings.Plugins[count] = EditorGUILayout.TextField("Plugin " + (count + 1).ToString() + ":", settings.Plugins[count]); if (GUILayout.Button("Delete Plugin", GUILayout.ExpandWidth(false))) { settings.Plugins.RemoveAt(count); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; // ----- Windows ---------------------------------------------- DisplayPlatform(FMODPlatform.Desktop, null); DisplayPlatform(FMODPlatform.Mobile, new FMODPlatform[] { FMODPlatform.MobileHigh, FMODPlatform.MobileLow, FMODPlatform.AppleTV }); DisplayPlatform(FMODPlatform.Console, new FMODPlatform[] { FMODPlatform.XboxOne, FMODPlatform.PS4, FMODPlatform.Switch }); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(settings); } if (hasBankSourceChanged) { EventManager.UpdateCache(); } if (hasBankTargetChanged) { EventManager.CopyToStreamingAssets(); } }
public override void OnInspectorGUI() { Settings settings = target as Settings; EditorGUI.BeginChangeCheck(); hasBankSourceChanged = false; bool hasBankTargetChanged = false; GUIStyle style = new GUIStyle(GUI.skin.label); style.richText = true; GUI.skin.FindStyle("HelpBox").richText = true; SourceType sourceType = settings.HasSourceProject ? SourceType.Project : (settings.HasPlatforms ? SourceType.Multi : SourceType.Single); EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(); sourceType = GUILayout.Toggle(sourceType == SourceType.Project, "Project", "Button") ? 0 : sourceType; sourceType = GUILayout.Toggle(sourceType == SourceType.Single, "Single Platform Build", "Button") ? SourceType.Single : sourceType; sourceType = GUILayout.Toggle(sourceType == SourceType.Multi, "Multiple Platform Build", "Button") ? SourceType.Multi : sourceType; EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); EditorGUILayout.HelpBox( "<size=11>Select the way you wish to connect Unity to the FMOD Studio content:\n" + "<b>• Project</b>\t\tIf you have the complete FMOD Studio project avaliable\n" + "<b>• Single Platform</b>\tIf you have only the contents of the <i>Build</i> folder for a single platform\n" + "<b>• Multiple Platforms</b>\tIf you have only the contents of the <i>Build</i> folder for multiple platforms, each platform in it's own sub directory\n" + "</size>" , MessageType.Info, true); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); if (sourceType == SourceType.Project) { EditorGUILayout.BeginHorizontal(); string oldPath = settings.SourceProjectPathUnformatted; EditorGUILayout.PrefixLabel("Studio Project Path", GUI.skin.textField, style); EditorGUI.BeginChangeCheck(); settings.SourceProjectPathUnformatted = EditorGUILayout.TextField(GUIContent.none, settings.SourceProjectPathUnformatted); if (EditorGUI.EndChangeCheck()) { settings.SourceProjectPath = settings.SourceProjectPathUnformatted; } if (GUILayout.Button("Browse", GUILayout.ExpandWidth(false))) { GUI.FocusControl(null); string path = EditorUtility.OpenFilePanel("Locate Studio Project", oldPath, "fspro"); if (!String.IsNullOrEmpty(path)) { path = MakePathRelativeToProject(path); settings.SourceProjectPathUnformatted = path; settings.SourceProjectPath = path; this.Repaint(); } } EditorGUILayout.EndHorizontal(); // Cache in settings for runtime access in play-in-editor mode string bankPath = EditorUtils.GetBankDirectoryUnformatted(); settings.SourceBankPathUnformatted = bankPath; settings.SourceBankPath = bankPath; settings.HasPlatforms = true; settings.HasSourceProject = true; // First time project path is set or changes, copy to streaming assets if (settings.SourceProjectPathUnformatted != oldPath) { hasBankSourceChanged = true; } } if (sourceType == SourceType.Single || sourceType == SourceType.Multi) { EditorGUILayout.BeginHorizontal(); string oldPath = settings.SourceBankPathUnformatted; EditorGUILayout.PrefixLabel("Build Path", GUI.skin.textField, style); EditorGUI.BeginChangeCheck(); settings.SourceBankPathUnformatted = EditorGUILayout.TextField(GUIContent.none, settings.SourceBankPathUnformatted); if (EditorGUI.EndChangeCheck()) { settings.SourceBankPath = settings.SourceBankPathUnformatted; } if (GUILayout.Button("Browse", GUILayout.ExpandWidth(false))) { GUI.FocusControl(null); var path = EditorUtility.OpenFolderPanel("Locate Build Folder", oldPath, null); if (!String.IsNullOrEmpty(path)) { path = MakePathRelativeToProject(path); settings.SourceBankPathUnformatted = path; settings.SourceBankPath = path; } } EditorGUILayout.EndHorizontal(); settings.HasPlatforms = (sourceType == SourceType.Multi); settings.HasSourceProject = false; // First time project path is set or changes, copy to streaming assets if (settings.SourceBankPathUnformatted != oldPath) { hasBankSourceChanged = true; } } if ((settings.HasSourceProject && !settings.SourceProjectPathUnformatted.Equals(settings.SourceProjectPath)) || (sourceType >= SourceType.Single && !settings.SourceBankPathUnformatted.Equals(settings.SourceBankPath))) { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.TextField("Platform specific path", sourceType >= SourceType.Single ? settings.SourceBankPath : settings.SourceProjectPath); EditorGUI.EndDisabledGroup(); } bool validBanks; string failReason; EditorUtils.ValidateSource(out validBanks, out failReason); if (!validBanks) { EditorGUILayout.HelpBox(failReason, MessageType.Error, true); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(settings); } return; } ImportType importType = (ImportType)EditorGUILayout.EnumPopup("Import Type", settings.ImportType); if (importType != settings.ImportType) { hasBankTargetChanged = true; settings.ImportType = importType; } // ----- Text Assets ------------- EditorGUI.BeginDisabledGroup(settings.ImportType != ImportType.AssetBundle); GUI.SetNextControlName("targetAssetPath"); targetAssetPath = EditorGUILayout.TextField("FMOD Asset Folder", string.IsNullOrEmpty(targetAssetPath) ? settings.TargetAssetPath : targetAssetPath); if (GUI.GetNameOfFocusedControl() == "targetAssetPath") { focused = true; if (Event.current.isKey) { switch (Event.current.keyCode) { case KeyCode.Return: case KeyCode.KeypadEnter: settings.TargetAssetPath = targetAssetPath; hasBankTargetChanged = true; break; } } } else if (focused) { settings.TargetAssetPath = targetAssetPath; hasBankTargetChanged = true; focused = false; } EditorGUI.EndDisabledGroup(); // ----- Logging ----------------- EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Logging</b>", style); EditorGUI.indentLevel++; settings.LoggingLevel = (FMOD.DEBUG_FLAGS)EditorGUILayout.EnumPopup("Logging Level", settings.LoggingLevel); EditorGUI.indentLevel--; // ----- Loading ----------------- EditorGUI.BeginDisabledGroup(settings.ImportType == ImportType.AssetBundle); EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Loading</b>", style); EditorGUI.indentLevel++; settings.AutomaticEventLoading = EditorGUILayout.Toggle("Load All Event Data at Initialization", settings.AutomaticEventLoading); EditorGUI.BeginDisabledGroup(!settings.AutomaticEventLoading); settings.AutomaticSampleLoading = EditorGUILayout.Toggle("Load All Sample Data at Initialization", settings.AutomaticSampleLoading); EditorGUI.EndDisabledGroup(); EditorGUI.indentLevel--; EditorGUI.EndDisabledGroup(); // ----- PIE ---------------------------------------------- EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Play In Editor Settings</b>", style); EditorGUI.indentLevel++; DisplayEditorBool("Live Update", settings.LiveUpdateSettings, FMODPlatform.PlayInEditor); if (settings.IsLiveUpdateEnabled(FMODPlatform.PlayInEditor)) { EditorGUILayout.BeginHorizontal(); settings.LiveUpdatePort = ushort.Parse(EditorGUILayout.TextField("Live Update Port:", settings.LiveUpdatePort.ToString())); if (GUILayout.Button("Reset", GUILayout.ExpandWidth(false))) { #if UNITY_5_0 || UNITY_5_1 settings.LiveUpdatePort = 9265; #else settings.LiveUpdatePort = 9264; #endif } EditorGUILayout.EndHorizontal(); #if UNITY_5_0 || UNITY_5_1 EditorGUILayout.HelpBox("Unity 5.0 or 5.1 detected: Live update will not be able to use port <b>9264</b>", MessageType.Warning, false); #endif } DisplayEditorBool("Debug Overlay", settings.OverlaySettings, FMODPlatform.PlayInEditor); DisplayChildFreq("Sample Rate", settings.SampleRateSettings, FMODPlatform.PlayInEditor); if (settings.HasPlatforms) { DisplayPIEBuildDirectory("Bank Platform", settings.BankDirectorySettings, FMODPlatform.PlayInEditor); } DisplayPIESpeakerMode("Speaker Mode", settings.SpeakerModeSettings, FMODPlatform.PlayInEditor); if (settings.HasPlatforms) { EditorGUILayout.HelpBox(String.Format("Match the speaker mode to the setting of the platform <b>{0}</b> inside FMOD Studio", settings.GetBankPlatform(FMODPlatform.PlayInEditor)), MessageType.Info, false); } else { EditorGUILayout.HelpBox("Match the speaker mode to the setting inside FMOD Studio", MessageType.Info, false); } EditorGUI.indentLevel--; // ----- Default ---------------------------------------------- EditorGUILayout.Separator(); EditorGUILayout.LabelField("<b>Default Settings</b>", style); EditorGUI.indentLevel++; DisplayParentBool("Live Update", settings.LiveUpdateSettings, FMODPlatform.Default); if (settings.IsLiveUpdateEnabled(FMODPlatform.Default)) { #if UNITY_5_0 || UNITY_5_1 EditorGUILayout.HelpBox("Unity 5.0 or 5.1 detected: Live update will listen on port <b>9265</b>", MessageType.Warning, false); #else EditorGUILayout.HelpBox("Live update will listen on port <b>9264</b>", MessageType.Info, false); #endif } DisplayParentBool("Debug Overlay", settings.OverlaySettings, FMODPlatform.Default); DisplayParentFreq("Sample Rate", settings.SampleRateSettings, FMODPlatform.Default); if (settings.HasPlatforms) { bool prevChanged = GUI.changed; DisplayParentBuildDirectory("Bank Platform", settings.BankDirectorySettings, FMODPlatform.Default); hasBankSourceChanged |= !prevChanged && GUI.changed; } DisplayParentSpeakerMode("Speaker Mode", settings.SpeakerModeSettings, FMODPlatform.Default); if (settings.HasPlatforms) { EditorGUILayout.HelpBox(String.Format("Match the speaker mode to the setting of the platform <b>{0}</b> inside FMOD Studio", settings.GetBankPlatform(FMODPlatform.Default)), MessageType.Info, false); } else { EditorGUILayout.HelpBox("Match the speaker mode to the setting inside FMOD Studio", MessageType.Info, false); } DisplayParentInt("Virtual Channel Count", settings.VirtualChannelSettings, FMODPlatform.Default, 1, 2048); DisplayParentInt("Real Channel Count", settings.RealChannelSettings, FMODPlatform.Default, 1, 256); EditorGUI.indentLevel--; // ----- Plugins ---------------------------------------------- EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("<b>Plugins</b>", GUI.skin.button, style); if (GUILayout.Button("Add Plugin", GUILayout.ExpandWidth(false))) { settings.Plugins.Add(""); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel++; for (int count = 0; count < settings.Plugins.Count; count++) { EditorGUILayout.BeginHorizontal(); settings.Plugins[count] = EditorGUILayout.TextField("Plugin " + (count + 1).ToString() + ":", settings.Plugins[count]); if (GUILayout.Button("Delete Plugin", GUILayout.ExpandWidth(false))) { settings.Plugins.RemoveAt(count); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; // ----- Windows ---------------------------------------------- DisplayPlatform(FMODPlatform.Desktop, null); DisplayPlatform(FMODPlatform.Mobile, new FMODPlatform[] { FMODPlatform.MobileHigh, FMODPlatform.MobileLow, FMODPlatform.PSVita, FMODPlatform.AppleTV }); DisplayPlatform(FMODPlatform.Console, new FMODPlatform[] { FMODPlatform.XboxOne, FMODPlatform.PS4, FMODPlatform.WiiU }); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(settings); } if (hasBankSourceChanged) { EventManager.UpdateCache(); } if (hasBankTargetChanged) { EventManager.CopyToStreamingAssets(); } }