/// <summary>
        /// Runs the calculations for the position and rotations of the passed
        /// agents using the force calculated in the <see cref="Calculate(SteeringAgent)"/> function
        /// </summary>
        /// <param name="_agent"></param>
        public void UpdateAgent(SteeringAgent _agent)
        {
            Vector3 force = Calculate(_agent).normalized;

            _agent.UpdateCurrentForce(force);

            // Calculate the rotation using Slerp, the current roation and the force for the target
            Quaternion rotation = Quaternion.Slerp(
                _agent.Rotation,
                Quaternion.LookRotation(_agent.CurrentForce != Vector3.zero ? _agent.CurrentForce : _agent.Forward),
                Time.deltaTime * 10f);

            // Calculate the position by finding the correcting movement then damping the difference.
            Vector3 movement = (_agent.Forward + force * _agent.Speed) * Time.deltaTime;
            Vector3 position = Vector3.SmoothDamp(
                _agent.Position,
                movement + _agent.Position,
                ref _agent.velocity,
                _agent.MovementSmoothing);

            // Apply the calculated rotation and position
            _agent.ApplyPosandRot(position, rotation);
        }