/// <summary> /// Displays a non-blocking modal dialog with up to 3 options. /// </summary> /// <param name="title">Title of the dialog.</param> /// <param name="message">Message to display in the dialog.</param> /// <param name="defaultOption">Option selected if interactivity is disabled.</param> /// <param name="option0">Text for the first option.</param> /// <param name="option1">Text for the second option or null to disable.</param> /// <param name="option2">Text for the third option or null to disable.</param> /// <param name="windowWidth">Width of the dialog window.</param> /// <param name="windowCloseOption">Option selected if the dialog is closed.</param> /// <param name="complete">Callback to trigger once a selection is made.</param> /// <param name="renderContent">Callback to render additional content after dialog message. /// </param> /// <param name="renderButtons">Callback to render additional content before option buttons in /// the same row.</param> /// <param name="init">Callback for additional initialization after the dialog is created and /// before it is displayed.</param> internal static void DisplayDefault(string title, string message, Option defaultOption, string option0, string option1, string option2, float windowWidth, Option windowCloseOption, Action <Option> complete, Action <DialogWindow> renderContent, Action <DialogWindow> renderButtons, Action <DialogWindow> init) { if (ExecutionEnvironment.InteractiveMode) { var context = new DialogContext() { Title = title, Message = message, DefaultOption = defaultOption, Option0String = option0, Option1String = option1, Option2String = option2, WindowWidth = windowWidth, WindowCloseOption = windowCloseOption, CompleteAction = complete, RenderContentAction = renderContent, RenderButtonsAction = renderButtons, InitAction = init, }; dialogJobQueue.Schedule(() => { var window = (DialogWindow)EditorWindow.GetWindow( typeof(DialogWindow), true, context.Title, true); window.dialogContext = context; if (context.InitAction != null) { context.InitAction(window); } window.Show(); }); } else { if (complete != null) { complete(defaultOption); } } }