private const float BufferTime = 0.1f; //100 milliseconds public RemotePlayer(ClientPlayerManager manager, string name, PlayerJoinedPacket pjPacket) : base(manager, name, pjPacket.InitialPlayerState.Id) { _position = pjPacket.InitialPlayerState.Position; _health = pjPacket.Health; _rotation = pjPacket.InitialPlayerState.Rotation; _buffer.Add(pjPacket.InitialPlayerState); }
private const float BufferTime = 0.1f; //100 milliseconds public RemotePlayer(ClientPlayerManager manager, string name, RemotePlayerLoginPacket remotePlayerPacket) : base(manager, name, remotePlayerPacket.InitialPlayerState.Id) { _position = remotePlayerPacket.InitialPlayerState.Position; _maxHealth = remotePlayerPacket.Health; _rotation = remotePlayerPacket.InitialPlayerState.Rotation; _buffer.Add(remotePlayerPacket.InitialPlayerState); }
public override void Update(float delta) { LastPosition = _position; LastRotation = _rotation; _nextCommand.Id = (ushort)((_nextCommand.Id + 1) % NetworkGeneral.MaxGameSequence); _nextCommand.ServerTick = _lastServerState.Tick; ApplyInput(_nextCommand, delta); if (_predictionPlayerStates.IsFull) { _nextCommand.Id = (ushort)(_lastServerState.LastProcessedCommand + 1); _predictionPlayerStates.FastClear(); } _predictionPlayerStates.Add(_nextCommand); _updateCount++; if (_updateCount == 3) { _updateCount = 0; foreach (var t in _predictionPlayerStates) { _clientLogic.SendPacketSerializable(PacketType.Movement, t, DeliveryMethod.Unreliable); } } base.Update(delta); }
public override void Update(float delta) { LastPosition = _position; LastRotation = _rotation; _nextCommand.Id = (ushort)((_nextCommand.Id + 1) % NetworkGeneral.MaxGameSequence); ApplyInput(_nextCommand, delta); if (_predictionPlayerStates.IsFull) { _nextCommand.Id = (ushort)(_lastProcessedCommandId + 1); _predictionPlayerStates.FastClear(); } _predictionPlayerStates.Add(_nextCommand); _updateCount++; if (_updateCount == 3) { _updateCount = 0; foreach (var t in _predictionPlayerStates) { _clientLogic.SendPlayerInput(t); } } base.Update(delta); }
public ClientPlayer(ClientLogic clientLogic, ClientPlayerManager manager, string name, byte id) : base(manager, name, id) { _playerManager = manager; _predictionPlayerStates = new LiteRingBuffer <PlayerInputPacket>(MaxStoredCommands); _clientLogic = clientLogic; _predictionPlayerStates.FastClear(); _predictionPlayerStates.Add(new PlayerInputPacket { Id = 0 }); }
public override void Update(float delta) { LastPosition = _position; LastRotation = _rotation; _nextCommand.Id = (ushort)((_nextCommand.Id + 1) % NetworkGeneral.MaxGameSequence); _nextCommand.ServerTick = _lastServerTick; ApplyInput(_nextCommand, delta); if (_predictionPlayerStates.IsFull) { _nextCommand.Id = _predictionPlayerStates.First.Id; _predictionPlayerStates.FastClear(); } _predictionPlayerStates.Add(_nextCommand); _clientLogic.SendPacketSerializable(PacketType.Movement, _nextCommand, DeliveryMethod.ReliableOrdered); base.Update(delta); }