public void Spawn(PlayerIndex index, bool addActivePlayer)
    {
        if (LobbyStateManager.Instance.State == LobbyStateManager.LobbyState.TitleScreen || !LobbyStateManager.Instance.CameraAtDestination)
        {
            return;
        }

        if (!_players.FirstOrDefault(p => p.Index == index))
        {
            Vector3    position = _spawnLocations[(int)index - 1];
            GameObject player   = Instantiate(_playerPrefab, position, Quaternion.identity);
            player.GetComponent <PlayerInput>().Index = index;
            player.transform.parent = gameObject.transform;

            Material material = _colorController.AssignRandomPlayerMaterial(player);
            _players.Add(player.GetComponent <PlayerInput>());
            AudioManager.Instance.PlayOneShot("Player Jump");

            if (PlayerSelectUIManager.Instance.PlayerIsReady(index))
            {
                _colorController.ShowIcon(index);
            }
            else
            {
                _colorController.HideIcon(index);
            }

            if (addActivePlayer)
            {
                ActivePlayers.AddPlayer(new Player((int)index, material));
            }
        }
    }
    private void Update()
    {
        if (LobbyStateManager.Instance.State == LobbyStateManager.LobbyState.TitleScreen)
        {
            return;
        }

        GamePadState state = GamePad.GetState(_index);

        if (state.Pressed(CButton.A))
        {
            _playerSpawner.Spawn(_index, true);
        }
        if (state.Pressed(CButton.B))
        {
            _pressedBTime = Time.time;
            PlayerSelectUIManager.Instance.RemovePlayer(_index);
            _colorController.HideIcon(_index);
        }
        if (state.B && Time.time > _pressedBTime + _timeToHoldB)
        {
            if (!PlayerSelectUIManager.Instance.ReadyToStartMatch)
            {
                _playerSpawner.Despawn(_index, true);
            }
        }
        if (state.Back)
        {
            _blockSpawner.Reset();
            _playerSpawner.Reset();
            PlayerSelectUIManager.Instance.Reset();
            LobbyStateManager.Instance.ReturnToTitleScreen();
        }
        if (state.Pressed(CButton.Start))
        {
            if (PlayerSelectUIManager.Instance.ReadyToStartMatch)
            {
                PlayerSelectUIManager.Instance.StartMatch();
            }

            PlayerInfo player = ActivePlayers.Players.FirstOrDefault(p => p.ControllerNumber == (int)_index);
            if (player != null)
            {
                PlayerSelectUIManager.Instance.ReadyPlayer(_index);
                _colorController.ShowIcon(_index);
            }
        }

        CaptureKeyboardInput();
    }