void GameplayUI()
    {
        int gemCount = MapComponents.GetNumOf("Gem");

        FoldoutLabel("Pickups", 1);
        GUILayout.Space(2);
        if (FoldoutButton("Gem", 1))
        {
            CreateGem();
        }
        if (FoldoutButton("Super Jump", 1))
        {
            CreateSJ();
        }
        if (FoldoutButton("Super Speed", 1))
        {
            CreateSS();
        }
        if (FoldoutButton("Feather Fall", 1))
        {
            CreateFF();
        }
        if (FoldoutButton("Time Travel", 1))
        {
            CreateTT();
        }
        if (FoldoutButton("Trophy", 1))
        {
            CreateTrophy();
        }
        GUILayout.Space(2);
        FoldoutLabel("Gems: <color=#0085ff>" + gemCount + "</color>", 1);
        GUILayout.Space(10);
        FoldoutLabel("Interactive", 1);
        GUILayout.Space(2);
        if (FoldoutButton("Bumper", 1))
        {
            CreateBumper();
        }
        if (FoldoutButton("Checkpoint", 1))
        {
            CreateCheckpoint();
        }
        if (FoldoutButton("Tutorial", 1))
        {
            CreateTutorial();
        }
        GUILayout.Space(5);
    }
    public static void BakeScene()
    {
        hasResult = false;
        var assembly = Assembly.GetAssembly(typeof(SceneView));
        var type     = assembly.GetType("UnityEditor.LogEntries");
        var method   = type.GetMethod("Clear");

        method.Invoke(new object(), null);
        LevelSerializer.failCause = "";
        Debug.Log("Starting Level Export");

        if (MapComponents.GetNumOf("SpawnPoint") == 0)
        {
            if (MapComponents.GetNumOf("StartPad") != 1)
            {
                LevelSerializer.failCause = "Singleplayer Level needs one StartPad!";
            }
            if (MapComponents.GetNumOf("EndPad") != 1)
            {
                LevelSerializer.failCause = "Singleplayer Level needs one EndPad!";
            }
            if (FindObjectsOfType <LevelTiming>().Length != 1)
            {
                LevelSerializer.failCause = "Singleplayer Level needs one Level Times object!";
            }
        }
        else
        {
            if (MapComponents.GetNumOf("StartPad") > 0)
            {
                LevelSerializer.failCause = "Multiplayer Maps can't have StartPads.";
            }
            if (MapComponents.GetNumOf("EndPad") > 0)
            {
                LevelSerializer.failCause = "Multiplayer Maps can't have EndPads.";
            }
            if (FindObjectsOfType <LevelTiming>().Length > 0)
            {
                LevelSerializer.failCause = "Multiplayer Maps can't have timers.";
            }
        }

        if (MapComponents.GetNumOf("LevelBounds") != 1)
        {
            LevelSerializer.failCause = "Level needs one Level Bounds!";
        }
        else
        {
            GameObject  bounds = MapComponents.FindFixed("LevelBounds");
            BoxCollider box    = bounds.GetComponent <BoxCollider>();
            if (box.size.x > 4096 || box.size.y > 4096 || box.size.z > 4096)
            {
                LevelSerializer.failCause = "Map is too large! Ensure leve bounds dimensions are under 4096.";
            }
        }

        var        serializer = new LevelSerializer();
        ByteStream levelBits  = new ByteStream();

        if (LevelSerializer.failCause.Length == 0)
        {
            serializer.Serialize(ref levelBits);
        }

        if (LevelSerializer.failCause.Length == 0)
        {
            string filePath = "Assets/" + LevelSerializer.GetCurrentSceneLevelId() + ".level";

            FileStream file;
            if (!File.Exists(filePath))
            {
                file = File.Create(filePath);
            }
            else
            {
                file = File.Open(filePath, FileMode.Truncate, FileAccess.Write);
            }
            file.Write(levelBits.Buffer, 0, levelBits.Position);
            file.Close();

            Debug.Log("<color=green>Level Exported:</color> " + filePath);
        }
        else
        {
            Debug.Log("<color=#ff3232>Export Failed:</color> " + LevelSerializer.failCause);
        }
        hasResult = true;
    }