private void DrawWindows() { foreach (CatGraph.Node node in _catGraph.Nodes) { DrawActualWindow(node, node.Size.position); } for (int i = 0; i < _catGraph.Actions.Count; i++) { CatGraph.ActionWrapper wrapper = _catGraph.Actions[i]; Rect rect = new Rect(_gridStart + new Vector2(-150, i * 150), new Vector2(100, 100)); DrawActualWindow(wrapper, rect); } for (int i = 0; i < _catGraph.Moods.Count; i++) { CatGraph.MoodWrapper wrapper = _catGraph.Moods[i]; Rect rect = new Rect(_gridStart + new Vector2(i * 200, -150), new Vector2(150, 100)); DrawActualWindow(wrapper, rect); } }
private void ActionWindowFunction(int id) { CatGraph.ActionWrapper wrapper = _catGraph.GetActionWrapper(id); if (wrapper == null) { return; } float height = 15; float distance = height + 2f; float width = 100; if (GUI.Button(new Rect(10, 10, width - 20, height), "Remove")) { Undo.RecordObject(_catGraph, "Remove Action"); _catGraph.RemoveAction(wrapper); } GUI.Label(new Rect(10, 100 / 2 - distance, width, height), "Action"); wrapper.SetAction((Action)EditorGUI.ObjectField(new Rect(5, 100 / 2, width - 10, height), wrapper.Action, typeof(Action), false)); }
private void DrawActualWindow(CatGraph.ActionWrapper wrapper, Rect rect) { GUIStyle style = wrapper.ChooseStyle(); GUI.Window(wrapper.ID, rect, ActionWindowFunction, string.Empty, style); }