Пример #1
0
        public void ApplySnapshot(double time, Vector3 position, Quaternion rotation, double lastAckInput)
        {
            if (time < _lastSnapTime)
            {
                return;
            }

            bool isSameAck = Math.Abs(_lastAckTime - lastAckInput) < 0.01;

            if (isSameAck)
            {
                lastAckInput += time - _lastSnapTime;
            }
            else
            {
                _lastAckTime  = lastAckInput;
                _lastSnapTime = time;
            }

            while (_movementBuffer.First != null && !(_movementBuffer.First.Value.Time > lastAckInput))
            {
                _movementBuffer.RemoveFirst();
            }

            foreach (var movement in _movementBuffer)
            {
                position += movement.Item;
            }

            _playerSnapshot.AddSnapshot((float)time, position);
        }
Пример #2
0
 public void ApplySnapshot(double time, Vector3 position, Quaternion rotation)
 {
     _playerSnapshot.AddSnapshot(time, position, rotation);
 }