private void OnClientTick(uint deltaTick) { if (!IsHost) { if (!IsLocalEntity) { if (!_movementBuffer.IsEmpty) { var history = _movementBuffer.PopBack(); //first time if (_currentMovement == null) { _currentMovement = history; } if (history.Tick > _currentMovement.Tick) { _currentMovement = history; } } } else { _localHistory.PushFront(new MovementHistory { Tick = NetworkTick, Position = transform.position }); } } }
protected override void OnDeserialize(NetDataReader reader) { if (IsHost) { return; } NetworkTick = reader.GetUInt(); var pos = reader.GetVector3(); var hist = new MovementHistory { PeerId = PeerId, Tick = NetworkTick, Position = pos }; _movementBuffer.PushFront(hist); }