private void OnDeviceDetached(InputDevice device) { for (int i = 0; i < controllerToPlayers.Count; i++) { if (controllerToPlayers[i].device.Equals(device)) { Debug.Log("Detached Controller : "); ControllerToPlayer ctPlayer = controllerToPlayers[i]; ctPlayer.controllerState = ControllerState.DETACHED; ctPlayer.gameState = GameState.NOT_PLAYING; ctPlayer.player.SetActive(false); break; } } }
public override int AddPlayer() { int playerId = base.AddPlayer() - 1; Debug.Log("New Connected controller : " + controllerToPlayers.Count); ControllerToPlayer ctPlayer = new ControllerToPlayer(); ctPlayer.playerId = playerId; ctPlayer.device = null; ctPlayer.controllerState = ControllerState.ATTACHED; ctPlayer.gameState = GameState.PLAYING; controllerToPlayers.Add(ctPlayer); return(playerId); }
private void OnDeviceAttached(InputDevice newDevice) { //Check if we've found again the controller bool reFoundController = false; for (int i = 0; i < controllerToPlayers.Count; i++) { if (controllerToPlayers[i].device.Equals(newDevice)) { Debug.Log("Reconnected controller : " + controllerToPlayers[i].playerId); reFoundController = true; ControllerToPlayer ctPlayer = controllerToPlayers[i]; ctPlayer.controllerState = ControllerState.ATTACHED; ctPlayer.gameState = GameState.PLAYING; ctPlayer.player.SetActive(true); controllerToPlayers[i] = ctPlayer; break; } } //Else, register the new controller if (!reFoundController) { int newPlayerId = AddPlayer(); ControllerToPlayer ctPlayer = controllerToPlayers[newPlayerId]; ctPlayer.device = newDevice; controllerToPlayers[newPlayerId] = ctPlayer; if (_playerPrefab != null) { Vector3 spawnPosition = new Vector3(0, 0, 0); //Behind the camera GameObject newPlayerObj = Instantiate(_playerPrefab, spawnPosition, Quaternion.identity); newPlayerObj.name = "Player " + (ctPlayer.playerId + 1).ToString(); newPlayerObj.GetComponent <PlayerController>()._playerId = ctPlayer.playerId; ctPlayer.player = newPlayerObj; } } }