public void Render(Vector2 windowSize)
                {
                    bool needsRepaint = false;

                    EditorGUILayout.BeginVertical();
                    {
                        RenderToolBar(windowSize);

                        switch (_currentMode)
                        {
                        case eMode.ViewingStateMachine:
                        {
                            Rect area = new Rect(0.0f, kTopBorder, windowSize.x, windowSize.y - kTopBorder);
                            RenderGridView(area);
                            needsRepaint = NeedsRepaint();
                        }
                        break;

                        case eMode.ViewingState:
                        {
                            Rect position = new Rect(0.0f, 53.0f, windowSize.x, windowSize.y - 58);
                            needsRepaint = _stateEditor.NeedsRepaint();
                            _stateEditor.Render(position);
                            needsRepaint |= _stateEditor.NeedsRepaint();
                        }
                        break;
                        }
                    }
                    EditorGUILayout.EndVertical();

                    if (needsRepaint)
                    {
                        GetEditorWindow().DoRepaint();
                    }
                }