void OnGUI()
    {
        Utility.SetGUIColor(UltiDraw.Black);
        using (new EditorGUILayout.VerticalScope("Box")) {
            Utility.ResetGUIColor();

            Utility.SetGUIColor(UltiDraw.Grey);
            using (new EditorGUILayout.VerticalScope("Box")) {
                Utility.ResetGUIColor();

                Utility.SetGUIColor(UltiDraw.Orange);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUILayout.LabelField("Recorder");
                }

                if (!Application.isPlaying)
                {
                    EditorGUILayout.LabelField("Change into play mode to start recording.");
                    return;
                }

                Animation = (BioAnimation)EditorGUILayout.ObjectField("Animation", Animation, typeof(BioAnimation), true);
                Name      = EditorGUILayout.TextField("Name", Name);
                FrameTime = EditorGUILayout.FloatField("Frame Time", FrameTime);

                if (Data == null)
                {
                    EditorGUILayout.LabelField("No data recorded.");
                }
                else
                {
                    EditorGUILayout.LabelField("Frames: " + Data.Frames.Length);
                }

                if (Utility.GUIButton(Recording ? "Stop" : "Start", Recording ? UltiDraw.DarkRed : UltiDraw.DarkGreen, UltiDraw.White))
                {
                    Recording = !Recording;
                    if (Recording)
                    {
                        Animation.StartCoroutine(Record());
                    }
                }

                if (Utility.GUIButton("Save", UltiDraw.DarkGrey, UltiDraw.White))
                {
                    Save();
                }
            }
        }
    }
 void Awake()
 {
     Target = (BioAnimation)target;
 }