// Update is called once per frame
    void Update()
    {
        if (isRequestLevelChange)
        {
            isRequestLevelChange = false;
            CurrentLevelState = EnumLevelState.PREPARING;
            Player.GetComponent<PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.AUTO;

            transitionTimer = Time.time;

            switch (CurrentLevel)
            {
                case EnumLevels.LEVEL1:
                    LoadLevel1();
                    break;
                case EnumLevels.LEVEL2:
                    LoadLevel2();
                    break;
                case EnumLevels.LEVEL3:
                    LoadLevel3();
                    break;
                case EnumLevels.FINAL:
                    //final level
                    break;
            }
        }

        switch (CurrentLevelState)
        {
            case EnumLevelState.NORMAL:
                //do nothing. the level is ready
                if (TriggerBox_Level1_2.GetComponent<RoomTrigger>().CheckPointReached)
                {
                    isRequestLevelChange = true;
                    CurrentLevel = EnumLevels.LEVEL2;
                }
                else if (TriggerBox_Level2_3.GetComponent<RoomTrigger>().CheckPointReached)
                {
                    isRequestLevelChange = true;
                    CurrentLevel = EnumLevels.LEVEL3;
                }
                else if (TriggerBox_Level3_final.GetComponent<RoomTrigger>().CheckPointReached)
                {
                    isRequestLevelChange = true;
                    CurrentLevel = EnumLevels.FINAL;
                }
                break;
            case EnumLevelState.PREPARING:
                if (Time.time - transitionTimer > transitionTimerLimit)
                {
                    Debug.Log("everything set. start level!");
                    SceneManager.ResetSceneState();
                    CurrentLevelState = EnumLevelState.NORMAL;
                    Player.GetComponent<PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.NORMAL;
                }

                //spawn enemies

                //move cameras

                //prepare player

                break;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (isRequestLevelChange)
        {
            isRequestLevelChange = false;
            CurrentLevelState    = EnumLevelState.PREPARING;
            Player.GetComponent <PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.AUTO;

            transitionTimer = Time.time;

            switch (CurrentLevel)
            {
            case EnumLevels.LEVEL1:
                LoadLevel1();
                break;

            case EnumLevels.LEVEL2:
                LoadLevel2();
                break;

            case EnumLevels.LEVEL3:
                LoadLevel3();
                break;

            case EnumLevels.FINAL:
                //final level
                break;
            }
        }

        switch (CurrentLevelState)
        {
        case EnumLevelState.NORMAL:
            //do nothing. the level is ready
            if (TriggerBox_Level1_2.GetComponent <RoomTrigger>().CheckPointReached)
            {
                isRequestLevelChange = true;
                CurrentLevel         = EnumLevels.LEVEL2;
            }
            else if (TriggerBox_Level2_3.GetComponent <RoomTrigger>().CheckPointReached)
            {
                isRequestLevelChange = true;
                CurrentLevel         = EnumLevels.LEVEL3;
            }
            else if (TriggerBox_Level3_final.GetComponent <RoomTrigger>().CheckPointReached)
            {
                isRequestLevelChange = true;
                CurrentLevel         = EnumLevels.FINAL;
            }
            break;

        case EnumLevelState.PREPARING:
            if (Time.time - transitionTimer > transitionTimerLimit)
            {
                Debug.Log("everything set. start level!");
                SceneManager.ResetSceneState();
                CurrentLevelState = EnumLevelState.NORMAL;
                Player.GetComponent <PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.NORMAL;
            }

            //spawn enemies

            //move cameras

            //prepare player

            break;
        }
    }