void ServerReceiveCommand(NetworkMessage message) { InputSynchronizationMessage inputMessage = message.ReadMessage <InputSynchronizationMessage>(); // Get network ID from sent object. NetworkInstanceId netId = new NetworkInstanceId(inputMessage.netId); // Find instance of local object. GameObject foundObj = NetworkServer.FindLocalObject(netId); // Verify object existance. if (foundObj == null) { return; } // Confirm ownership (only works for single player on one machine). if (message.conn.playerControllers[0].unetView.netId == netId) { // Deserialize user command. UserCmd inputCommand = UserCmd.DeSerialize(inputMessage.messageData); // Get reference to player input. PlayerInputSynchronization input = foundObj.GetComponent <PlayerInputSynchronization>(); // Send user command to object. input.HandleUserCommand(inputCommand); } }
public void Awake() { m_TargetPlayer = GetComponent <Player>(); m_PlayerInput = GetComponent <PlayerInputSynchronization>(); //Initialize predicted state }
public void Awake() { m_Input = GetComponent <PlayerInputSynchronization>(); }
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId) { // Create player game object. GameObject playerObject = Instantiate( playerPrefab, Vector3.zero, Quaternion.identity ); Assert.IsNotNull(playerObject); // Get sync component. PlayerInputSynchronization input = playerObject.GetComponent <PlayerInputSynchronization>(); // Get player gameobject. Player player = playerObject.GetComponent <Player>(); // Add player reference to player list. Players.Add(player); // Ready the player for connection. NetworkServer.AddPlayerForConnection(conn, playerObject, playerControllerId); // Calculate this based on new player in list. int spawnedPlayerID = Players.Count - 1; // HACK HACK - Only for 2 players... if (spawnedPlayerID == 1) { // Start the game. RaceManager.Instance.StartRace(); } // Define default position and rotations for ship. Vector3 shipSpawnPosition = Vector3.zero; Quaternion shipSpawnRotation = Quaternion.identity; // Check if player has spawn transform set. if (m_ShipSpawns.ContainsKey(spawnedPlayerID)) { // Get spawn point transform. Transform spawn = m_ShipSpawns[spawnedPlayerID]; // Apply spawn position and rotation. shipSpawnPosition = spawn.position; shipSpawnRotation = spawn.rotation; } // Instantiate ship for player. GameObject shipObject = Instantiate( m_PlayerShipPrefab, shipSpawnPosition, shipSpawnRotation ); // Get ship controller component. ShipController controller = shipObject.GetComponent <ShipController>(); // Spawn ship in network. NetworkServer.Spawn(shipObject); // Assign player to ship controller. player.Possess(controller); // Posess player ship on client. controller.TargetSetupShip(conn); Debug.Log("Player added. (" + Players.Count + ")"); }