public override void OnInspectorGUI()
        {
            HandleInitialization(true);

            if (animationPlayer.layers == null || animationPlayer.layers.Length == 0)
            {
                return;
            }

            EditorUtilities.Splitter();

            DrawLayerSelection();

            if (animationPlayer.layers.Length == 0)
            {
                return; //Deleted last layer in DrawLayerSelection
            }
            if (selectedState == -1 && animationPlayer.layers[selectedLayer].states.Count > 0)
            {
                selectedState.SetTo(0); //Handle adding a state for the first time.
            }
            GUILayout.Space(10f);

            DrawSelectedLayer();

            GUILayout.Space(10f);
            EditorUtilities.Splitter();

            var numStatesBefore = animationPlayer.layers[selectedLayer].states.Count;

            StateSelectionAndAdditionDrawer.Draw(animationPlayer, selectedLayer, selectedState, selectedEditMode, this);
            if (numStatesBefore != animationPlayer.layers[selectedLayer].states.Count)
            {
                Repaint();
                return;
            }

            DrawSelectedState();

            EditorUtilities.Splitter();

            EditorGUILayout.LabelField("Default transition");

            EditorUtilities.RecordUndo(animationPlayer, "Change default transition", () =>
            {
                animationPlayer.defaultTransition = AnimationTransitionDrawer.DrawTransitionData(animationPlayer.defaultTransition);
            });

            EditorUtilities.Splitter();

            DrawRuntimeDebugData();
        }
        private void DrawSelectedState()
        {
            EditorGUILayout.BeginHorizontal(editLayerButton_Background);

            //Making tabbed views are hard!
            var editStatesRect      = EditorUtilities.ReserveRect();
            var editTransitionsRect = EditorUtilities.ReserveRect();
            var eventsRect          = EditorUtilities.ReserveRect();
            var metaDataRect        = EditorUtilities.ReserveRect();

            EditorGUILayout.EndHorizontal();

            DrawTabHeader(editStatesRect, "Clips", 0);
            DrawTabHeader(editTransitionsRect, "Transitions", 1);
            DrawTabHeader(eventsRect, "Events", 2);
            DrawTabHeader(metaDataRect, "Metadata", 3);

            EditorGUILayout.BeginVertical(editLayerStyle);

            GUILayout.Space(10f);

            switch ((AnimationPlayerEditMode)selectedEditMode)
            {
            case AnimationPlayerEditMode.States:
                StateDataDrawer.DrawStateData(animationPlayer, selectedLayer, selectedState, this);
                break;

            case AnimationPlayerEditMode.Transitions:
                AnimationTransitionDrawer.DrawTransitions(animationPlayer, selectedLayer, selectedState, selectedToState, allStateNames[selectedLayer]);
                break;

            case AnimationPlayerEditMode.Events:
                DrawEvents();
                break;

            case AnimationPlayerEditMode.MetaData:
                metaDataDrawer.DrawMetaData();
                break;
            }

            GUILayout.Space(20f);
            EditorGUILayout.EndVertical();
        }