public override int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache)
        {
            if (optionsEditor == null)
            {
                optionsEditor = new ReorderableList(Options, typeof(string), true, true, true, true);
                optionsEditor.drawHeaderCallback = r =>
                {
                    EditorGUI.LabelField(r, "Options");
                    if (GUI.Button(new Rect(r.x + r.width - 30, r.y, 30, EditorGUIUtility.singleLineHeight), (Texture2D)EditorGUIUtility.Load("icons/SettingsIcon.png"), EditorStyles.toolbarButton))
                    {
                        var menu = new GenericMenu();
                        menu.AddItem(new GUIContent("Copy"), false, () => cache["options"] = Options);
                        if (cache.ContainsKey("options"))
                        {
                            menu.AddItem(new GUIContent("Paste"), false, () => { optionsEditor.list = Options = ((List <string>)cache["options"]).ToList(); });
                            menu.AddItem(new GUIContent("Paste (linked)"), false, () => { optionsEditor.list = Options = (List <string>)cache["options"]; });
                        }
                        menu.AddItem(new GUIContent("Unlink"), false, () => optionsEditor.list = Options = Options.ToList());
                        menu.ShowAsContext();
                    }
                };
                optionsEditor.onAddCallback       = x => x.list.Add(string.Empty);
                optionsEditor.drawElementCallback = (r, i, a, f) => optionsEditor.list[i] = EditorGUI.TextField(new Rect(r.x, r.y, r.width, EditorGUIUtility.singleLineHeight), (string)optionsEditor.list[i]);
            }

            vertical(rect, 1,
                     (r) => Value = EditorGUI.Popup(r, "Selected", Value, Options.ToArray()),
                     (r) => optionsEditor.DoList(r));
            return(optionsEditor.count + 3);
        }
 public override int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache)
 {
     if (Value == null)
     {
         Value = Tuple <float, float> .Make(0, 100);
     }
     horizontal(rect, "Value",
                (r) => Value.First  = EditorGUI.FloatField(r, "First", Value.First),
                (r) => Value.Second = EditorGUI.FloatField(r, "Second", Value.Second));
     return(1);
 }
 public override int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache)
 {
     vertical(rect, 1,
              (line) => horizontal(line, null,
                                   (r) => Value = EditorGUI.Slider(r, "Value", Value, Min, Max)),
              (line) => horizontal(line, "Range",
                                   (r) => Min = EditorGUI.FloatField(r, "Min", Min),
                                   (r) => Max = EditorGUI.FloatField(r, "Max", Max))
              );
     return(2);
 }
 public override int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache)
 {
     if (Value == null)
     {
         Value = DaggerfallWorkshop.Utility.Tuple <int, int> .Make(0, 100);
     }
     horizontal(rect, "Value",
                (r) => Value.First  = EditorGUI.IntField(r, "First", Value.First),
                (r) => Value.Second = EditorGUI.IntField(r, "Second", Value.Second));
     return(1);
 }
 public override int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache)
 {
     vertical(rect, 1, (r) => Value = EditorGUI.ColorField(r, "Color", Value));
     return(1);
 }
 public override int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache)
 {
     vertical(rect, 3, (r => Value = EditorGUI.TextArea(r, Value)));
     return(3);
 }
 public override int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache)
 {
     horizontal(rect, null, (r) => Value = EditorGUI.Toggle(r, "Checked", Value));
     return(1);
 }
 /// <summary>
 /// Draws a control on editor window. Returns number of lines.
 /// </summary>
 public abstract int OnEditorWindow(Rect rect, HorizontalCallback horizontal, VerticalCallback vertical, Dictionary <string, object> cache);