Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }