public void Simulate(uint tickIndex) { if (_client.IsConnected) { bool up = Input.GetKey(KeyCode.W); bool right = Input.GetKey(KeyCode.D); bool down = Input.GetKey(KeyCode.S); bool left = Input.GetKey(KeyCode.A); bool space = Input.GetKeyDown(KeyCode.Space); if (up || right || down || left || space) { Vector3 input = GetMovement(up, right, down, left); HandleInputHistory(input); var inputMessage = new PlayerInputMessage(_client.LocalPlayerId, input, space); _client.SendMessage(inputMessage); if (_localPlayer == null) { _localPlayer = _playerRegistry.GetControlledPlayerById(_client.LocalPlayerId); } _localPlayer.BufferInput(new InputData(input, tickIndex)); } else { HandleInputHistory(Vector3.zero); } } }
public override void Handle(PlayerInputMessage message) { ControlledPlayer player = _playerRegistry.GetControlledPlayerById(message.PlayerId); player.BufferInput(new InputData(message.movement, message.TickIndex)); if (message.kick) { _ballKick.EnqueueInput(new BallKick.InputData(message.TickIndex, player.transform)); } }