public static void WriteClientInputHolder(this NetworkWriter writer, ClientInputHolder inputHolder) { writer.WriteInt32(inputHolder.playerInputs.Count); for (int i = 0; i < inputHolder.playerInputs.Count; i++) { writer.WritePlayerInputDefinition(inputHolder.playerInputs[i]); } }
public void CmdSendInputs(ClientInputHolder inputs) { //gameManager.rollbackSession.add foreach (NetworkConnectionToClient nc in NetworkServer.connections.Values) { // Ignore the client that sent the message. if (nc.connectionId != connectionToClient.connectionId) { TargetRecieveInputs(nc, inputs); } } }
public ClientInputHolder PollLocalInputs() { List <PlayerInputDefinition> inputs = new List <PlayerInputDefinition>(); for (int i = 0; i < players; i++) { float thrustMag = Input.GetAxis("Vertical"); float turnMag = Input.GetAxis("Horizontal"); bool isFiring = Input.GetKey(KeyCode.Space); inputs.Add(new PlayerInputDefinition(thrustMag, turnMag, isFiring)); } ClientInputHolder clientInputHolder = new ClientInputHolder(inputs); return(clientInputHolder); }
protected virtual void Tick(float dt) { NetworkIdentity localIdentity = NetworkClient.connection.identity; ClientManager localClientManager = localIdentity.GetComponent <ClientManager>(); // Grab the client's inputs. // This method also sends our inputs to the other clients. ClientInputHolder clientInputs = localClientManager.PollLocalInputs(); // Add the local client's inputs to the local simulation. URollbackErrorCode result = gameManager .rollbackSession.AddLocalInput(localIdentity.connectionToClient.connectionId, clientInputs); if (result == URollbackErrorCode.OK) { } }
public void TargetRecieveInputs(NetworkConnection target, ClientInputHolder inputs) { gameManager.rollbackSession .AddRemoteInput(NetworkClient.connection.connectionId, target.connectionId, inputs); }