public void Render()
    {
        Vector2 viewport = CalculateViewport();

        GUI.Box(new Rect(0, Position.y, MyFSMEditor.position.width, this.MyFSMEditor.position.height - Position.y), "");
        ScrollPos = GUI.BeginScrollView(new Rect(0, Position.y, MyFSMEditor.position.width, this.MyFSMEditor.position.height - Position.y),
                                        ScrollPos, new Rect(0, 0, viewport.x + Position.y + 100, viewport.y + Position.y + 100));

        MyFSMEditor.BeginWindows();
        foreach (FSMEditorState editorState in MyFSMEditor.EditorStates)
        {
            editorState.Render();
        }

        MyFSMEditor.EndWindows();



        foreach (var fromEditorState in MyFSMEditor.EditorStates)
        {
            int i = 0;
            foreach (var transition in fromEditorState.State.Transitions)
            {
                if (transition.ToState != "")
                {
                    if (MyFSMEditor.EditorStatesIndex.ContainsKey(transition.ToState))
                    {
                        var toEditorState = MyFSMEditor.EditorStatesIndex[transition.ToState];
                        FSMLineRender.DrawTransition(fromEditorState.GetEventRect(i, toEditorState), toEditorState.GetHeaderRect(fromEditorState));
                    }
                }
                i++;
            }
        }

        FSMDragStateControl.Render();
        GUI.EndScrollView();
    }