// Update is called once per frame
    void Update()
    {
        // Make sure we have a waypoint controller
        if (_waypointController == null)
        {
            return;
        }

        // Rotate towrds the current waypoint target
        Transform  currentTarget = _waypointController.GetWaypointTransform(_currentWaypointTargetIndex);
        Vector3    direction     = currentTarget.position - transform.position;
        Quaternion toRotation    = Quaternion.LookRotation(direction);

        transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, _rotateSpeed * Time.deltaTime);

        // Move forwards
        _rb.velocity = (transform.forward * _moveSpeed);

        // Are we close enough?
        float distanceToWaypoint = Vector3.Distance(transform.position, currentTarget.position);

        if (distanceToWaypoint <= _waypointController.targetDistance)
        {
            // Go to next target
            _currentWaypointTargetIndex = _waypointController.GetNextWaypointIndex(_currentWaypointTargetIndex);
            _waypointsReached++;

            //
            UpdateVehicleOrder();
        }
    }